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

Date de la dernière mise à jour : 15/04/2021

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

Solution

Remarque : les étapes d'octroi d'un accès d'instance à un compartiment Amazon S3 sont similaires à l'octroi d'un accès à d'autres ressources AWS dans un autre compte.

Procédez comme suit pour octroyer des autorisations à une instance Amazon EC2 du compte A afin d'accéder à un compartiment dans un autre compte (compte B).

À partir du compte B, créer 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 panneau de navigation, choisissez Roles (Rôles).

4.    Choisissez Créer un rôle.

5.    Pour Select type of trusted entity (Sélectionner un type d'entité de confiance), choisissez Another AWS account (Autre compte AWS).

6.    Pour Account ID (ID de compte), entrez l'ID du compte A.

7.    Choisissez Next: Permissions (Suivant : Autorisations).

8.    Attachez au rôle une stratégie qui délègue l'accès à Amazon S3. Par exemple, cette stratégie accorde l'accès à s3:GetObject sur les objets stockés dans le compartiment :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
            ]
        }
    ]
}

Remarque : vous pouvez modifier la stratégie IAM en fonction des autorisations au niveau du compartiment Amazon S3 et au niveau de l'objet requises pour votre cas d'utilisation.

9.    Choisissez Next: Add tags (Suivant : 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érifier).

11.    Dans Role name (Nom du rôle), entrez un nom pour le rôle.

12.    Choisissez Créer un rôle.

À partir du compte B, obtenir l'ARN du rôle

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

2.    Choisissez le rôle IAM que vous avez créé.

3.    Notez la valeur répertoriée pour 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, choisissez Roles (Rôles).

4.    Choisissez Créer un rôle.

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

6.    Pour Choose the service that will use this role (Choisir le service qui utilisera ce rôle), choisissez EC2.

7.    Choisissez Next: Permissions (Suivant : Autorisations).

8.    Choisissez Next: Tags (Suivant : 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érifier).

10.    Dans Role name (Nom du rôle), entrez un nom pour le rôle.

11.    Choisissez Créer un rôle.

12.    Dans la liste des rôles, choisissez celui 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.    Entrez la stratégie suivante. Remplacez arn:aws:iam::111111111111:role/ROLENAME par l'ARN (Amazon Resource Name) 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.    Choisissez Examiner une stratégie.

16.    Pour Name (Nom), entrez un nom pour la stratégie.

17.    Choisissez Créer une stratégie.

18.    Attachez le rôle IAM (profil d'instance) à l'instance Amazon EC2 que vous utilisez 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.    Après vous être connecté à l'instance, vérifiez si le répertoire contient déjà un dossier nommé ~/.aws.

Pour rechercher le dossier ~/.aws , exécutez la commande ls suivante pour répertorier le répertoire :

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-en un en exécutant la commande mkdir :

mkdir ~/.aws/

4.    À partir du 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 enterprofilename]
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 une fois 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 une fois connecté à l'instance. Remplacez profilename par le nom du rôle que vous avez attaché à l'instance.

aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename

Si votre instance peut accéder au compartiment, vous recevrez une réponse répertoriant le contenu de celui-ci, similaire à la suivante :

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

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


Besoin d'aide pour une question technique ou de facturation ?