Comment puis-je accorder à mon instance Amazon EC2 l'accès à un compartiment Amazon S3 d'un autre compte AWS ?

Date de la dernière mise à jour : 21/12/2018

Je souhaite que mon instance Amazon Elastic Compute Cloud (Amazon EC2) puisse accéder à mon compartiment Amazon Simple Storage Service (Amazon S3) dans un autre compte AWS. Comment puis-je accorder cet accès sans stocker les informations d'identification sur l'instance ?

Résolution

Remarque : bien que cet exemple soit spécifique à l'accès à un compartiment Amazon S3, la même procédure est applicable si vous souhaitez accorder à votre instance l'accès à d'autres ressources AWS d'un autre compte.

Suivez ces étapes pour accorder à une instance Amazon EC2 d'un compte (Compte A) les autorisations d'accès à un compartiment Amazon S3 d'un autre compte (Compte B).

Dans le Compte B, créez un rôle IAM

1.    Connectez-vous à AWS Management Console avec le Compte B.

2.    Ouvrez la console AWS Identity and Access Management (IAM).

3.    Dans le volet de navigation, sélectionnez « Roles » (Rôles).

4.    Sélectionnez « Create role » (Créer un rôle).

5.    Dans la section Select type of trusted entity (Sélectionner le type d'entité de confiance), sélectionnez Another AWS account (Un autre compte AWS).

6.    Pour Account ID (ID du compte), saisissez l'ID du Compte A.

7.    Sélectionnez « Next: Permissions » (Étape suivante : autorisations).

8.    Attachez une stratégie au rôle qui délègue l'accès à Amazon S3. Par exemple, cette stratégie accorde l'accès à toutes les actions à un compartiment spécifique et aux objets stockés dans le compartiment :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::awsexamplebucket",
                "arn:aws:s3:::awsexamplebucket/*"
            ]
        }
    ]
}

9.    Sélectionnez Next: Add tags (Étape suivante : ajouter des balises).

10.    Vous pouvez ajouter des balises facultatives au rôle. Vous pouvez également laisser les champs vides, puis sélectionner Next : Review (Suivant : vérification).

11.    Sous Role name (Nom du rôle), saisissez un nom pour le rôle.

12.    Sélectionnez « Create role » (Créer un rôle).

Depuis le Compte B, obtenez l'ARN du rôle

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

2.    Sélectionnez le rôle IAM que vous avez créé.

3.    Notez la valeur répertoriée pour Role ARN (ARN du rôle).

Depuis le Compte A, créez un autre rôle (profil d'instance) et attachez-le à l'instance

1.    Connectez-vous à AWS Management Console avec le Compte A.

2.    Ouvrez la console IAM.

3.    Dans le volet de navigation, sélectionnez Roles (Rôles).

4.    Sélectionnez « Create role » (Créer un rôle).

5.    Pour Select type of trusted entity (Sélectionner le type d'entité de confiance), sélectionnez AWS service (Service AWS).

6.    Pour Choose the service that will use this role (Sélectionner le service qui utilisera ce rôle), sélectionnez EC2.

7.    Sélectionnez « Next: Permissions » (Étape suivante : autorisations).

8.    Sélectionnez Next: Tags (Étape suivante : balises).

9.    Vous pouvez ajouter des balises facultatives au rôle. Vous pouvez également laisser les champs vides, puis sélectionner Next : Review (Suivant : vérification).

10.    Sous Role name (Nom du rôle), saisissez un nom pour le rôle.

11.    Sélectionnez « Create role » (Créer un rôle).

12.    Dans la liste des rôles IAM, sélectionnez le rôle que vous venez de créer.

13.    Sélectionnez Add inline policy (Ajouter une stratégie en ligne), puis sélectionnez la vue JSON .

14.    Saisissez la stratégie suivante. Remplacez arn:aws:iam::111111111111:role/ROLENAME par l'Amazon Resource Name (ARN) du rôle IAM que vous avez créé dans le Compte B.

{ 
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::111111111111:role/ROLENAME"
        }
    ]
}

15.    Sélectionnez Examiner une stratégie.

16.    Sous Name (Nom), saisissez un nom pour cette stratégie.

17.    Sélectionnez « Create policy » (Créer une stratégie).

18.    Attachez le rôle IAM (profil d'instance) à l'instance Amazon EC2 que vous utiliserez pour accéder au compartiment Amazon S3.

À partir de l'instance Amazon EC2, configurez le rôle avec vos informations d'identification

1.    Connectez-vous à l'instance Amazon EC2. Pour plus d'informations, consultez Connexion à votre instance Linux ou Connexion à votre instance Windows.

2.    Une fois connecté à l'instance, vérifiez si le répertoire possède déjà un dossier nommé ~/.aws. Pour trouver ce dossier, vous pouvez exécuter une commande qui répertorie les éléments du répertoire, comme suit :

ls -l ~/.aws

3.    Si vous trouvez le dossier ~/.aws passez à l'étape suivante. Si le répertoire n'a pas encore de dossier ~/.aws créez le dossier en exécutant une commande similaire à la suivante :

mkdir ~/.aws/

4.    Dans le dossier ~/.aws utilisez un éditeur de texte pour créer un fichier. Nommez le fichier config.

5.    Dans le fichier, saisissez le texte suivant. Remplacez enterprofilename par le nom du rôle que vous avez attaché à l'instance. Ensuite, remplacez arn:aws:iam::111111111111:role/ROLENAME par l'ARN du rôle que vous avez créé dans le compte B.

[profile profilename]

role_arn = arn:aws:iam::111111111111:role/ROLENAME

credential_source = Ec2InstanceMetadata

6.    Enregistrez le fichier.

Vérifier le profil d'instance

Pour vérifier que le rôle de votre instance (profil d'instance) peut assumer le rôle dans le Compte B, exécutez la commande suivante lorsque vous êtes connecté à l'instance. Remplacez profilename par le nom du rôle que vous avez attaché à l'instance.

$aws sts get-caller-identity --profile profilename

La commande renvoie une réponse semblable à ce qui suit :

 "Account": "11111111111",

 "UserId": "AROAEXAMPLEID:sessionName",

 "Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"

Vérifiez que la valeur de « Arn » correspond à l'ARN du rôle que vous avez créé dans le Compte B.

Vérifier l'accès au compartiment Amazon S3

Pour vérifier que votre instance peut accéder au compartiment Amazon S3, exécutez cette commande de liste lorsque vous êtes connecté à l'instance. Remplacez profilename par le nom du rôle que vous avez attaché à l'instance.

aws s3 ls s3://awsexamplebucket --profile profilename

Si votre instance peut accéder au compartiment avec succès, vous recevrez une réponse qui répertorie le contenu du compartiment, similaire à ce qui suit :

PRE Hello/
2018-08-15 16:16:51 89 index.html

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?