

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriel IAM : déléguer l'accès entre AWS comptes à l'aide de rôles IAM
<a name="tutorial_cross-account-with-roles"></a>

**Important**  
 [Les meilleures pratiques](best-practices.md) IAM recommandent de demander aux utilisateurs humains d'utiliser la fédération avec un fournisseur d'identité pour accéder à l'aide d'informations d'identification temporaires plutôt que d' AWS utiliser des utilisateurs IAM dotés d'informations d'identification à long terme. Nous vous recommandons de n’utiliser les utilisateurs IAM que pour les [cas d’utilisation spécifiques](gs-identities-iam-users.md) non pris en charge par les utilisateurs fédérés.

Ce tutoriel vous apprend à utiliser un rôle pour déléguer l’accès à des ressources dans des Comptes AWS différents appelés **Destination** et **Origine**. Vous partagez les ressources d'un compte avec les utilisateurs d'un autre compte. En configurant l'accès entre les comptes de cette manière, vous n'avez pas besoin de créer des utilisateurs IAM individuels dans chaque compte. En outre, les utilisateurs n'ont pas besoin de se déconnecter d'un compte et de se connecter à un autre compte pour accéder à des ressources situées dans des Comptes AWS différents. Après avoir configuré le rôle, vous découvrirez comment utiliser le rôle à partir du AWS Management Console AWS CLI, et de l'API.

Dans ce didacticiel, le compte **Destination** gère les données d’application auxquelles accèdent différentes applications et équipes. Dans chaque compte, vous stockez les informations de l'application dans des compartiments Amazon S3. Vous gérez les utilisateurs IAM dans le compte **Origine**,où vous disposez de deux rôles d’utilisateur IAM : **Développeurs** et **Analystes**. Les développeurs et les analystes utilisent le compte **Origine** pour générer des données partagées par plusieurs microservices. Les deux rôles ont des autorisations pour travailler dans le compte Origine et y accéder aux ressources qui s’y trouvent. De temps à autre, un développeur doit mettre à jour les données partagées dans le compte **Destination**. Les développeurs stockent ces données dans un compartiment Amazon S3 appelé `amzn-s3-demo-bucket-shared-container`. 

Au terme de ce tutoriel, vous disposerez des éléments suivants :
+ Utilisateurs du compte **Origine** (le compte approuvé) autorisés à endosser un rôle spécifique dans le compte **Destination**.
+ Rôle du compte **Destination** (le compte d’approbation) autorisé à accéder à un compartiment Amazon S3 spécifique. 
+ Le compartiment `amzn-s3-demo-bucket-shared-container` du compte **Destination**.

Les développeurs peuvent utiliser le rôle indiqué dans le AWS Management Console pour accéder au `amzn-s3-demo-bucket-shared-container` compartiment dans le compte **Destination**. Ils peuvent également accéder au compartiment à l'aide des appels API authentifiés par les informations d'identification temporaires fournies par le rôle. Les tentatives similaires des analystes pour utiliser le rôle échouent.

Ce flux de travail se compose de trois étapes de base :

**[Création d’un rôle dans le compte Destination](#tutorial_cross-account-with-roles-1)**  
Tout d'abord, vous utilisez le AWS Management Console pour établir un lien de confiance entre le compte de **destination** (numéro d'identification 999999999999) et le compte d'**origine** (numéro d'identification 111111111111). Vous commencez par créer un rôle IAM nommé *UpdateData*. Lorsque vous créez le rôle, vous définissez le compte **Origine** en tant qu’entité approuvée et spécifiez une politique d’autorisations qui autorise les utilisateurs de confiance à mettre à jour le compartiment `amzn-s3-demo-bucket-shared-container`.

**[Accorder l'accès au rôle](#tutorial_cross-account-with-roles-2)**  
Dans cette section, vous modifiez la politique de rôle pour refuser aux analystes l’accès au rôle `UpdateData`. Parce que les analystes PowerUser y ont accès dans ce scénario, vous devez explicitement *refuser* la possibilité d'utiliser le rôle.

**[Tester l'accès en changeant de rôles](#tutorial_cross-account-with-roles-3)**  
Enfin, en tant que développeur, vous utilisez le rôle `UpdateData` pour mettre à jour le compartiment `amzn-s3-demo-bucket-shared-container` dans le compte **Destination**. Vous allez voir comment accéder au rôle via la AWS console, le AWS CLI, et l'API.

## Considérations
<a name="tutorial_cross-account-with-roles-considerations"></a>

Avant d'utiliser les rôles IAM pour déléguer l'accès aux ressources Comptes AWS, il est important de prendre en compte les points suivants :
+ Il n'est pas possible de passer à un rôle si vous vous connectez en tant qu' Utilisateur racine d'un compte AWS.
+ Les politiques IAM basées sur les ressources et les rôles ne délèguent l'accès entre les comptes qu'au sein d'une seule partition. Par exemple, supposons que vous avez un compte dans la région USA Ouest (Californie du Nord) sur la partition `aws` standard. Vous avez également un compte dans la région Chine (Beijing) sur la partition `aws-cn`. Vous ne pouvez pas utiliser une politique basée sur les ressources d’Amazon S3 dans votre compte en Chine (Beijing) pour autoriser l'accès aux utilisateurs de votre compte `aws` standard.
+ Vous pouvez l'utiliser AWS IAM Identity Center pour faciliter l'authentification unique (SSO) pour les comptes externes Comptes AWS (comptes extérieurs au vôtre) à l'aide du langage AWS Organizations SAML (Security Assertion Markup Language). Pour plus de détails, voir [Intégrer des données externes Comptes AWS dans AWS IAM Identity Center pour une gestion centralisée des accès avec facturation indépendante à l'aide de SAML 2.0](https://community.aws/content/2dIMI8N7w7tGxbE0KQMrkSBfae4/aws-iam-identity-center-integration-with-external-aws-accounts-for-independent-billing?lang=en) 
+ Vous pouvez associer des rôles à des AWS ressources telles que des instances ou AWS Lambda des fonctions Amazon EC2. Pour en savoir plus, consultez [Création d'un rôle pour déléguer des autorisations à un AWS service](id_roles_create_for-service.md).
+ Si vous souhaitez qu'une application joue un rôle dans une autre Compte AWS, vous pouvez utiliser le AWS SDK pour l'attribution de rôles entre comptes. Pour plus d'informations, consultez la section [Authentification et accès](https://docs.aws.amazon.com//sdkref/latest/guide/access.html) dans le *guide de référence des outils AWS SDKs et des outils*.
+ Le changement de rôle à l'aide du AWS Management Console ne fonctionne qu'avec les comptes qui ne nécessitent pas de`ExternalId`. Par exemple, supposons que vous accordiez l'accès à votre compte à un tiers et que vous ayez besoin d'un `ExternalId` dans un élément `Condition` de votre politique d'autorisations. Dans ce cas, le tiers ne peut accéder à votre compte qu'à l'aide de l' AWS API ou d'un outil de ligne de commande. Le tiers ne peut pas utiliser la console, car elle doit fournir de valeur pour `ExternalId`. Pour plus d'informations sur ce scénario[Accès à des Comptes AWS sites appartenant à des tiers](id_roles_common-scenarios_third-party.md), consultez la [section « Comment activer l'accès entre comptes » AWS Management Console dans le](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) blog sur la AWS sécurité.

## Conditions préalables
<a name="tutorial_cross-account-with-roles-prereqs"></a>

Le didacticiel présume que vous avez déjà ce qui suit en place :
+ **Deux** comptes distincts Comptes AWS que vous pouvez utiliser, l'un pour représenter le compte **d'origine** et l'autre pour représenter le compte de **destination**.
+ Les utilisateurs et les rôles du compte **Origine** créés et configurés comme suit :  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)
+ Vous n’avez pas besoin de créer d’utilisateurs dans le compte **Destination**.
+ Un compartiment Amazon S3 créé dans le compte **Destination**. Vous pouvez l'appeler `amzn-s3-demo-bucket-shared-container` dans ce tutoriel, mais du fait que les noms de compartiment S3 doivent être globalement uniques, vous devrez utiliser un compartiment avec un nom différent.

## Création d’un rôle dans le compte Destination
<a name="tutorial_cross-account-with-roles-1"></a>

Vous pouvez autoriser les utilisateurs de l'un Compte AWS à accéder aux ressources d'un autre Compte AWS. Dans ce didacticiel, nous le ferons en créant un rôle qui définit qui peut y accéder et quelles autorisations il accorde aux utilisateurs qui y basculent.

Dans cette étape du didacticiel, vous créez le rôle dans le compte **Destination** et spécifiez le compte **Origine** comme entité approuvée. Vous limitez également les autorisations du rôle à un accès en lecture seule et en écriture au compartiment `amzn-s3-demo-bucket-shared-container`. Toute personne ayant autorisation d'utiliser le rôle peut lire et écrire dans le compartiment `shared-container`.

Avant de créer un rôle, vous avez besoin de l'*identifiant de compte* de l'**Originating** Compte AWS. Chacun Compte AWS possède un identifiant de compte unique qui lui est attribué.

**Pour obtenir l' Compte AWS identifiant d'origine**

1. Connectez-vous en AWS Management Console tant qu'administrateur du compte **Originating** et ouvrez la console IAM à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans la console IAM, sélectionnez votre nom d'utilisateur dans la barre de navigation, en haut à droite. Cela ressemble généralement à ceci : ***username*@ *account\$1ID\$1number\$1or\$1alias***.

   Pour ce scénario, vous pouvez utiliser l’ID 111111111111 pour le compte **Origine**. Toutefois, vous devez utiliser un ID de compte valide si vous utilisez ce scénario dans votre environnement de test.

**Pour créer un rôle dans le compte Destination qui peut être utilisé par le compte Origine**

1. Connectez-vous en AWS Management Console tant qu'administrateur du compte **Destination** et ouvrez la console IAM.

1. Avant de créer le rôle, préparez la politique gérée qui définit les autorisations pour les exigences du rôle. Vous attachez cette politique au rôle dans une étape ultérieure. 

   Vous devez définir l'accès en lecture et en écriture au compartiment `amzn-s3-demo-bucket-shared-container`. Bien que AWS certaines politiques soient gérées par Amazon S3, aucune ne fournit un accès en lecture et en écriture à un seul compartiment Amazon S3. Vous pouvez créer votre propre politique à la place.

   Dans le panneau de navigation, choisissez **Politiques**, puis **Créer une politique**.

1. Choisissez l'onglet **JSON** et copiez le texte du document de politique JSON suivant. Collez ce texte dans la zone de texte **JSON**, en remplaçant l'ARN de la ressource (`arn:aws:s3:::shared-container`) par celui qui correspond véritablement à votre compartiment Amazon S3.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "s3:ListAllMyBuckets",
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:ListBucket",
           "s3:GetBucketLocation"
          ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-shared-container"
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:PutObject",
           "s3:DeleteObject"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-shared-container/*"
       }
     ]
   }
   ```

------

   L'action `ListAllMyBuckets` accorde l'autorisation de répertorier tous les compartiments appartenant à l'expéditeur authentifié de la demande. L'autorisation `ListBucket` permet aux utilisateurs d'afficher des objets dans le compartiment `amzn-s3-demo-bucket-shared-container`. Les autorisations `GetObject`, `PutObject`, `DeleteObject` permettent aux utilisateurs d'afficher, de mettre à jour et de supprimer le contenu du compartiment `amzn-s3-demo-bucket-shared-container`.
**Note**  
Vous pouvez basculer à tout moment entre les options des éditeurs **visuel** et **JSON**. Toutefois, si vous apportez des modifications ou si vous choisissez **Suivant** dans l'éditeur **visuel**, IAM peut restructurer votre politique afin de l'optimiser pour l'éditeur visuel. Pour de plus amples informations, veuillez consulter [Restructuration de politique](troubleshoot_policies.md#troubleshoot_viseditor-restructure).

1. Sur la page **Vérifier et créer**, tapez **read-write-app-bucket** pour le nom de la politique. Vérifiez les autorisations accordées par votre politique, puis choisissez **Créer une politique** pour enregistrer votre travail.

   La nouvelle politique apparaît dans la liste des politiques gérées.

1. Dans le panneau de navigation, choisissez **Roles** (Rôles), puis **Create role** (Créer un rôle).

1. Choisissez le type de rôle **Un Compte AWS**.

1. Dans le champ **ID de compte**, saisissez l’ID du compte **Origine**.

   Ce didacticiel utilise l’exemple d’ID de compte **111111111111** pour le compte **Origine**. Vous devez utiliser un ID de compte valide. Si vous utilisez un ID de compte non valide, comme **111111111111**, IAM ne vous laisse pas créer de rôle.

   Pour le moment, les utilisateurs n'ont pas besoin d'un ID externe ou d'une authentification multi-facteurs (MFA) pour endosser le rôle. Laissez ces options décochées. Pour plus d’informations, veuillez consulter [AWS Authentification multifactorielle dans IAM](id_credentials_mfa.md).

1. Choisissez **suivant : autorisations** pour configurer les autorisations associées au rôle.

1. Cochez la case en regard de la politique que vous avez créée précédemment.
**Conseil**  
Pour **filtre**, sélectionnez **politiques gérées par le client** pour affiner la liste afin d'inclure uniquement les politiques que vous avez créées. Cela masque les politiques créées par AWS et permet de rechercher plus facilement celle dont vous avez besoin.

   Ensuite, choisissez **Suivant**. 

1. (Facultatif) Ajoutez des métadonnées au rôle en associant les identifications sous forme de paires clé-valeur. Pour plus d'informations sur l'utilisation des balises dans IAM, veuillez consulter [Tags pour les Gestion des identités et des accès AWS ressources](id_tags.md).

1. (Facultatif) Pour **Description**, saisissez une description pour le nouveau rôle.

1. Après avoir procédé à la révision du rôle, sélectionnez **Créer un rôle**.

    

   Le rôle `UpdateData` s'affiche dans la liste des rôles.

À présent, vous devez obtenir l'Amazon Resource Name (ARN) du rôle, qui est un identifiant unique du rôle. Lorsque vous modifiez le rôle du développeur dans le compte Origine, vous spécifiez l’ARN du rôle à partir du compte Destination afin d’accorder ou de refuser des autorisations.

**Pour obtenir l'ARN pour UpdateData**

1. Dans le panneau de navigation de la console IAM, sélectionnez **Roles** (Rôles).

1. Dans la liste des rôles, sélectionnez le rôle `UpdateData`.

1. Dans la section **Récapitulatif** du panneau des détails, copiez la valeur du champ **ARN de rôle**.

   Le compte Destination ayant pour ID de compte 999999999999, l’ARN du rôle est donc `arn:aws:iam::999999999999:role/UpdateData`. Assurez-vous de fournir le véritable Compte AWS identifiant du compte Destination.

À ce stade, vous avez établi un lien d’approbation entre les comptes **Destination** et **Origine**. Pour ce faire, créez un rôle dans le compte **Destination** qui identifie le compte **Origine** en tant que principal compte d’approbation. Vous avez également défini ce que les utilisateurs qui basculent vers le rôle `UpdateData` peuvent faire.

Ensuite, modifiez les autorisations pour le rôle Développeur.

## Accorder l'accès au rôle
<a name="tutorial_cross-account-with-roles-2"></a>

À ce stade, les analystes et les développeurs disposent d’autorisations leur permettant de gérer les données dans le compte **Origine**. Utilisez la procédure requise pour ajouter des autorisations visant à autoriser le changement de rôle.

**Pour modifier le rôle des développeurs afin de leur permettre de passer au UpdateData rôle**

1. Connectez-vous en tant qu’administrateur dans le compte **Origine**, puis ouvrez la console IAM.

1. Choisissez **Rôles**, puis choisissez **Développeurs**.

1. Sélectionnez l'onglet **Permissions** (Autorisations), puis **Add permissions** (Ajouter des autorisations), et enfin **Create inline policy** (Créer une politique en ligne).

1. Choisissez l’onglet **JSON**.

1. Ajoutez l’instruction de politique suivante pour autoriser l’action `AssumeRole` sur le rôle `UpdateData` dans le compte Destination. Assurez-vous de remplacer *DESTINATION-ACCOUNT-ID* l'`Resource`élément par l' Compte AWS identifiant réel du compte de destination.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/UpdateData"
       }
   }
   ```

------

   L’effet `Allow` autorise explicitement l’accès du groupe Développeurs au rôle `UpdateData` dans le compte Destination. Tout développeur qui essaie d'accéder à ce rôle y parvient.

1. Choisissez **Examiner une politique**.

1. Tapez un **Nom**, tel que **allow-assume-S3-role-in-destination**.

1. Choisissez **Create Policy** (Créer une politique).

Dans la plupart des environnements, vous n'aurez peut-être pas besoin de la procédure suivante. Toutefois, si vous utilisez PowerUserAccess des autorisations, il est possible que certains groupes soient déjà en mesure de changer de rôle. Les procédures suivantes indiquent comment ajouter une autorisation `"Deny"` au groupe Analystes pour s’assurer qu’ils ne peuvent pas endosser le rôle. Si vous n'avez pas besoin de cette procédure dans votre environnement, nous vous recommandons de ne pas l'ajouter. Les autorisations `"Deny"` rendent l'ensemble des autorisations plus compliqué à gérer et à comprendre. Utilisez les autorisations `"Deny"` uniquement lorsque vous ne disposez pas de meilleure option.

**Pour modifier le rôle Analystes afin de lui refuser l’autorisation d’endosser ce rôle `UpdateData`**

1. Choisissez **Rôles**, puis **Analystes**.

1. Sélectionnez l'onglet **Permissions** (Autorisations), puis **Add permissions** (Ajouter des autorisations), et enfin **Create inline policy** (Créer une politique en ligne).

1. Choisissez l’onglet **JSON**.

1. Ajoutez l'instruction de politique suivante pour refuser l'action `AssumeRole` sur le rôle `UpdateData`. Assurez-vous de remplacer *DESTINATION-ACCOUNT-ID* l'`Resource`élément par l' Compte AWS identifiant réel du compte de destination.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Deny",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/UpdateData"
       }
   }
   ```

------

   L’effet `Deny` refuse explicitement l’accès du groupe Analystes au rôle `UpdateData` dans le compte Destination. Tout analyste qui essaiera d’accéder au rôle recevra un message d’accès refusé.

1. Choisissez **Examiner une politique**.

1. Tapez un **Nom** comme **deny-assume-S3-role-in-destination**.

1. Choisissez **Create Policy** (Créer une politique).

Le rôle Développeurs a maintenant l’autorisation d’utiliser le rôle `UpdateData` dans le compte Destination. Le rôle Analystes ne peut pas utiliser le rôle `UpdateData`.

Ensuite, vous pouvez voir comment David, un développeur, peut accéder au compartiment `amzn-s3-demo-bucket-shared-container` dans le compte Destination. David peut accéder au bucket depuis le AWS Management Console AWS CLI, le ou l' AWS API.

## Tester l'accès en changeant de rôles
<a name="tutorial_cross-account-with-roles-3"></a>

Après avoir terminé les deux premières étapes de ce didacticiel, vous disposez d’un rôle qui accorde l’accès à une ressource du compte **Destination**. Vous disposez également d’un rôle dans le compte **Origine** avec des utilisateurs autorisés à utiliser ce rôle. Cette étape explique comment tester le passage à ce rôle depuis l'API AWS Management Console AWS CLI, le et l' AWS API.

Pour obtenir de l’aide sur les problèmes courants que vous êtes susceptible de rencontrer lors de l’utilisation des rôles IAM, consultez [Résolution des problèmes liés aux rôles IAM](troubleshoot_roles.md).

### Changer de rôle (console)
<a name="switch-tutorial_cross-account-with-roles"></a>

Si David a besoin de mettre à jour les données du compte **Destination** dans le AWS Management Console, il peut le faire en utilisant **Switch Role**. Il indique l'ID de compte ou l'alias et le nom du rôle, et ses autorisations passent immédiatement à celles autorisées par le rôle. Il peut ensuite utiliser la console pour travailler avec le compartiment `amzn-s3-demo-bucket-shared-container`, mais il ne peut pas utiliser d’autres ressources de l’environnement **Destination**. Bien que David utilise le rôle, il ne peut pas non plus utiliser ses privilèges d’utilisateur avancé dans le compte **Origine**. Ceci est dû au fait qu'un seul ensemble d'autorisations peut être actif à la fois.

IAM fournit deux procédures que David peut utiliser pour accéder à la page **Switch Role (changer de rôle)** :
+ David reçoit un lien de son administrateur qui dirige vers la configuration Switch Role prédéfinie. Le lien est fourni à l'administrateur sur la page finale de l'assistant **Créer un rôle** ou sur la page **Résumé du rôle** pour un rôle inter-compte. Si David choisit ce lien, il accède à la page **Switch Role (Changer de rôle)** avec les champs **ID de compte** et **Nom du rôle** déjà remplis. Il ne reste plus à David qu’à choisir **Changer de rôle**.
+ L'administrateur n'envoie pas le lien dans un e-mail, mais il envoie les valeurs de l'**ID de compte** et du **Nom de rôle**. Pour changer de rôle, David doit manuellement saisir les valeurs. La procédure suivante en est l'illustration.

**Pour endosser un rôle**

1. David se connecte en AWS Management Console utilisant son utilisateur habituel dans le compte **Originating**.

1. Il choisit le lien que l'administrateur lui a envoyé par email. Cela amène David à la page **Switch Role** (Changer de rôle) avec l'identifiant ou l'alias de compte et les informations sur le nom du rôle déjà remplis.

   —ou—

   David choisit son nom (le menu Identity [Identité]) dans la barre de navigation, puis sélectionne **Switch Roles** (Changer de rôle). 

   Si c'est la première fois que David essaie d'accéder à la page Switch Role (changer de rôle) de cette manière, il est dirigé vers la 1ère page de mise en route **Switch Role (changer de rôle)**. Cette page fournit des informations supplémentaires sur la manière dont le changement de rôle permet aux utilisateurs de gérer des ressources entre Comptes AWS. David doit choisir **Switch Role (changer de rôle)** sur cette page pour appliquer le reste de la procédure.

1. Ensuite, pour accéder au rôle, David doit saisir manuellement le numéro d’ID (`999999999999`) et le nom du rôle (`UpdateData`) du compte Destination.

   En outre, David souhaite contrôler les rôles et les autorisations associées actuellement actifs dans IAM. Pour suivre ces informations, il saisit `Destination` dans la zone de texte **Display Name** (nom complet), choisit l'option de couleur rouge, puis choisit **Switch Role** (changer de rôle).

1. David peut maintenant utiliser la console Amazon S3 pour travailler avec le compartiment Amazon S3 ou toute autre ressource pour laquelle le rôle `UpdateData` dispose d'autorisations.

1. Quand c'est fait, David peut retourner dans ses autorisations d'origine. Pour cela, il choisit le nom complet du rôle **Destination** sur la barre de navigation, puis il sélectionne **Revenir à David à 111111111111**.

1. La prochaine fois que David voudra changer de rôle et choisira le menu **Identité** dans la barre de navigation, il verra l’entrée Destination toujours affichée depuis la dernière fois. Il lui suffira de choisir cette entrée pour changer de rôle immédiatement sans avoir à ressaisir l'ID du compte et le nom du rôle.

### Changer de rôles (AWS CLI)
<a name="switch-cli-tutorial_cross-account-with-roles"></a>

 Si David a besoin de travailler dans l’environnement **Destination** dans la ligne de commande, il peut y parvenir grâce à l’outil [AWS CLI](https://aws.amazon.com/cli/). Il exécute la commande `aws sts assume-role` et transmet l'ARN du rôle pour obtenir les informations d'identification de sécurité temporaires de ce rôle. Il configure ensuite ces informations d'identification dans les variables d'environnement afin que AWS CLI les commandes suivantes fonctionnent en utilisant les autorisations du rôle. Bien que David utilise le rôle, il ne peut pas utiliser ses privilèges d’utilisateur avancé dans le compte **Origine**, car un seul ensemble d’autorisations peut être effectif à la fois.

Notez que toutes les clés d'accès et tous les jetons sont des exemples uniquement et ne peuvent pas être utilisés comme indiqué. Remplacez-les par les valeurs correspondantes de votre environnement en direct.

**Pour endosser un rôle**

1. David ouvre une fenêtre d'invite de commande et confirme que le AWS CLI client fonctionne en exécutant la commande :

   ```
   aws help
   ```
**Note**  
L'environnement par défaut de David utilise les informations d'identification de l'utilisateur `David` de son profil par défaut qu'il a créé avec la commande `aws configure`. Pour plus d'informations, veuillez consulter [configuration de l'outil AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration) dans le *guide de l'utilisateur de l'outil AWS Command Line Interface *.

1. Il commence le processus de changement de rôle en exécutant la commande suivante pour passer au rôle `UpdateData` dans le compte **Destination**. Il a reçu l'ARN du rôle auprès de l'administrateur ayant créé le rôle. La commande nécessite que vous fournissiez un nom de session également. Pour cela, vous pouvez choisir n'importe quel texte.

   ```
   aws sts assume-role --role-arn "arn:aws:iam::999999999999:role/UpdateData" --role-session-name "David-ProdUpdate"
   ```

   David voit ensuite ce qui suit dans le résultat :

   ```
   {
       "Credentials": {
           "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
           "SessionToken": "AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLE
   CvSRyh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDy
   EXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3Uuysg
   sKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87e
   NhyDHq6ikBQ==",
           "Expiration": "2014-12-11T23:08:07Z",
           "AccessKeyId": "AKIAIOSFODNN7EXAMPLE"
       }
   }
   ```

1. David voit les trois éléments dont il a besoin dans la section informations d'identification du résultat.
   + `AccessKeyId`
   + `SecretAccessKey`
   + `SessionToken`

   David doit configurer l' AWS CLI environnement pour utiliser ces paramètres lors des appels suivants. Pour plus d'informations sur les différentes manières de configurer vos informations d'identification, veuillez consulter [Configuration de l'outil AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#config-settings-and-precedence). Vous ne pouvez pas utiliser la commande `aws configure`, car elle ne prend pas en charge la capture du jeton de session. En revanche, vous pouvez saisir manuellement les informations dans un fichier de configuration. Du fait qu'il s'agisse d'informations d'identification temporaires avec un délai d'expiration relativement court, il est plus facile de les ajouter à l'environnement de votre session de ligne de commande actuelle.

1. Pour ajouter les trois valeurs à l'environnement, David coupe et colle le résultat de l'étape précédente dans les commandes suivantes. Vous pourriez vouloir couper et coller dans un simple éditeur de texte pour résoudre les problèmes de retour à la ligne dans le résultat du jeton de session. Elles doivent être ajoutées sous la forme d'une simple chaîne longue, même si elles s'affichent avec des retours de ligne pour plus de clarté.

   L'exemple suivant illustre les commandes fournies dans l'environnement Windows où « set » est la commande destinée à créer une variable d'environnement. Sur Linux ou macOS, vous devez plutôt utiliser la commande « export ». Toutes les autres sections de l'exemple sont valides dans les trois environnements.

   Pour en savoir plus sur l'utilisation des outils pour Windows Powershell, consultez [Basculer vers un rôle IAM (Outils pour Windows PowerShell)](id_roles_use_switch-role-twp.md)

   ```
   set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   set AWS_SESSION_TOKEN=AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvS
   Ryh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXA
   MPLEKEY9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UusKd
   EXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLENhykxiHen
   DHq6ikBQ==
   ```

   À ce stade, toutes les commandes seront exécutées avec les autorisations du rôle identifié par ces informations d'identification. Dans le cas de David, le rôle `UpdateData`.
**Important**  
Vous pouvez enregistrer vos paramètres de configuration utilisés fréquemment et vos informations d’identification dans des fichiers qui sont gérés par l’ AWS CLI. Pour plus d’informations, consultez [Utilisations de fichiers de configurations et d’informations d’identification existants](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-quickstart.html#getting-started-quickstart-existing) dans le *Guide de l’utilisateur AWS Command Line Interface *. 

1. Exécutez la commande pour accéder aux ressources du compte Destination. Dans cet exemple, David répertorie simplement le contenu de son compartiment S3 avec la commande suivante.

   ```
   aws s3 ls s3://shared-container
   ```

   Du fait que les noms de compartiments Amazon S3 sont universellement uniques, il n'est pas nécessaire de spécifier l'ID du compte qui est titulaire du compartiment. Pour accéder aux ressources d'autres AWS services, reportez-vous à la AWS CLI documentation de ce service pour connaître les commandes et la syntaxe requises pour référencer ses ressources.

### Utilisation AssumeRole (AWS API)
<a name="api-tutorial_cross-account-with-roles"></a>

Lorsque David a besoin de faire une mise à jour dans le compte **Destination** depuis le code, il réalise un appel `AssumeRole` pour endosser le rôle `UpdateData`. L’appel renvoie des informations d’identification temporaires qu’il peut utiliser pour accéder au compartiment `amzn-s3-demo-bucket-shared-container` dans le compte **Destination**. Grâce à ces informations d'identification, David peut réaliser des appels d'API pour mettre à jour le compartiment `amzn-s3-demo-bucket-shared-container`. Cependant, il ne peut pas réaliser des appels d’API pour accéder aux autres ressources du compte **Destination**, même s’il a des autorisations d’utilisateur avancé dans le compte **Origine**.

**Pour endosser un rôle**

1. David appelle `AssumeRole` dans le cadre d'une application. Il doit spécifier l'ARN `UpdateData` : `arn:aws:iam::999999999999:role/UpdateData`.

   La réponse de l'appel `AssumeRole` inclut les informations d'identification temporaires avec un `AccessKeyId` et un `SecretAccessKey`. Elle inclut également une heure `Expiration` qui indique à quel moment les informations d'identification expirent et vous devez en demander de nouvelles. Lorsque vous configurez le chaînage des rôles avec le AWS SDK, de nombreux fournisseurs d'informations d'identification actualisent automatiquement les informations d'identification avant leur expiration.

1. Grâce aux informations d'identification de sécurité temporaires, David réalise un appel `s3:PutObject` pour mettre à jour le compartiment `amzn-s3-demo-bucket-shared-container`. Il transfère les informations d'identification à l'appel d'API en tant que paramètre `AuthParams`. Du fait que les informations d’identification de rôle temporaires ont uniquement accès en lecture et en écriture au compartiment `amzn-s3-demo-bucket-shared-container`, toute autre action dans le compte Destination est refusée.

Pour obtenir un exemple de code (à l'aide de Python), veuillez consulter [Basculer vers un rôle IAM (AWS API)](id_roles_use_switch-role-api.md).

## Ressources supplémentaires
<a name="tutorial_cross-account-with-roles-related"></a>

Les ressources suivantes peuvent vous aider à en savoir plus sur les sujets abordés dans ce didacticiel :
+ Pour plus d’informations sur les utilisateurs IAM, consultez [IAM identités](id.md).
+ Pour plus d'informations sur les compartiments Amazon S3, veuillez consulter [créer un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) dans le *Amazon Simple Storage Service User Guide* (guide de l'utilisateur du service de stockage simple de Amazon).
+  Pour savoir si les principaux des comptes situés en dehors de votre zone de confiance (organisation ou compte de confiance) ont accès à vos rôles, veuillez consulter [Qu'est-ce que l'Analyseur d'accès IAM ?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

## Résumé
<a name="tutorial_cross-account-with-roles-summary"></a>

Vous avez terminé le didacticiel d'accès aux API entre les comptes. Vous avez créé un rôle pour établir des relations de confiance avec un autre compte et défini les actions que les entités approuvées peuvent effectuer. Ensuite, vous avez modifié une politique de rôle pour contrôler les utilisateurs IAM qui peuvent accéder au rôle. Par conséquent, les développeurs du compte **Origine** peuvent faire des mises à jour dans le compartiment `amzn-s3-demo-bucket-shared-container` du compte **Destination** à l’aide d’informations d’identification temporaires.