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

Lecture de 5 minute(s)
0

Je souhaite utiliser une instance Amazon Elastic Compute Cloud (Amazon EC2) pour accéder à mon compartiment Amazon Simple Storage Service (Amazon S3) dans un autre compte.

Résolution

Remarque : les étapes à suivre pour accorder à une instance Amazon EC2 l’accès à un compartiment Amazon S3 sont semblables à celles permettant d’accorder l’accès aux ressources AWS d’un autre compte.

Procédez comme suit pour autoriser une instance du compte A à accéder à un compartiment S3 du compte B.

Créer un rôle IAM depuis le compte B

Pour créer un rôle Gestion des identités et des accès (IAM) depuis le compte B, procédez comme suit :

  1. Utilisez le compte B pour vous connecter à la console de gestion AWS.
  2. Ouvrez la console IAM.
  3. Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
  4. Pour le champ Type d’entités de confiance, sélectionnez Compte AWS.
  5. Sélectionnez Un autre compte AWS, puis saisissez l’ID de compte du compte A.
  6. Choisissez Suivant.
  7. Attachez une politique IAM au rôle qui délègue l’accès à Amazon S3, puis choisissez Suivant. Par exemple, la politique IAM suivante accorde l’accès s3:GetObject aux 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 : modifiez la politique IAM en fonction des autorisations au niveau du compartiment Amazon S3 et au niveau de l’objet qui sont requises pour votre cas d’utilisation.
  8. Pour le champ Nom du rôle, saisissez le nom du rôle.
  9. (Facultatif) Ajoutez des balises au rôle.
  10. Choisissez Créer un rôle.

Rechercher l’ARN du rôle IAM depuis le compte B

Pour trouver l’ARN du rôle IAM, procédez comme suit :

  1. Dans le volet de navigation de la console IAM, choisissez Roles.
  2. Choisissez le rôle IAM que vous avez créé.
  3. Notez la valeur répertoriée pour le champ ARN de rôle.

Depuis le compte A, créez un autre rôle et attachez-le à l’instance

Pour créer un autre profil d’instance depuis le compte A et l’attacher à l’instance, procédez comme suit :

  1. Utilisez le compte A pour vous connecter à la console de gestion AWS.
  2. Ouvrez la console IAM.
  3. Dans le volet de navigation, choisissez Rôles, puis Créer un rôle.
  4. Pour le champ Type d’entités de confiance, choisissez Service AWS.
  5. Pour le champ Service ou cas d’utilisation, choisissez EC2, puis sélectionnez votre cas d’utilisation.
  6. Choisissez Suivant.
  7. Sur la page Ajouter des autorisations, choisissez Suivant.
  8. Pour le champ Nom du rôle, saisissez le nom du rôle.
  9. (Facultatif) Ajoutez des balises au rôle.
  10. Choisissez Créer un rôle.
  11. Dans la liste des rôles, choisissez le rôle que vous avez créé.
  12. Pour Ajouter des autorisations, choisissez Créer une politique en ligne.
  13. Pour le champ Éditeur de politiques, sélectionnez JSON, puis saisissez la politique suivante :
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111111111111:role/ROLENAME"
    }]
}

Remarque : remplacez arn:aws:iam::111111111111:role/ROLENAME par l’ARN du rôle IAM que vous avez créé sur le compte B. Choisissez Suivant. Pour le champ Nom, saisissez un nom pour la politique, puis choisissez Créer une politique. Attachez le rôle IAM à l’instance que vous utilisez pour accéder au compartiment Amazon S3.

Créer un profil pour le rôle dans le fichier de configuration CLI depuis l’instance Amazon EC2

Remarque : si vous utilisez SSH et Session Manager, une fonctionnalité d’AWS Systems Manager, pour vous connecter à vos instances, vous devez effectuer ces étapes pour ec2-user et pour ssm-user.

Pour créer un profil pour le rôle dans le fichier de configuration CLI depuis l’instance, procédez comme suit :

  1. Connectez-vous à l’instance. Pour en savoir plus, consultez la page Connexion à votre instance Linux ou Connexion à votre instance Windows.

  2. Pour savoir si le répertoire contient déjà un dossier nommé ~/.aws, exécutez la commande ls suivante afin de lister le répertoire d’instance :

    ls -l ~/.aws

    Si vous trouvez le dossier ~/.aws, passez à l’étape suivante. Si vous ne trouvez pas de dossier ~/.aws, exécutez la commande mkdir suivante pour le créer :

    mkdir ~/.aws/
  3. Dans le dossier ~/.aws, utilisez un éditeur de texte pour créer un fichier. Nommez le fichier configuration.

  4. Dans le fichier, saisissez le texte suivant :

    [profile enterprofilename]
    role_arn = arn:aws:iam::111111111111:role/ROLENAME
    
    credential_source = Ec2InstanceMetadata

    Remarque : remplacez enterprofilename par votre valeur. remplacez arn:aws:iam::111111111111:role/ROLENAME par l’ARN du rôle que vous avez créé sur le compte B.

  5. Enregistrez le fichier.

Vérifiez que le profil d’instance peut assumer le rôle

Pour vérifier que le rôle de votre instance peut assumer le rôle sur le compte B, connectez-vous à l’instance, puis exécutez la commande suivante :

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

Remarque : remplacez le profilename par le nom du rôle que vous avez attaché à l’instance.

La commande renvoie une sortie semblable à la suivante :

"Account": "11111111111",

"UserId": "AROAEXAMPLEID:sessionName",

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

Vérifiez que la valeur du champ "Arn" correspond à l’ARN du rôle que vous avez créé sur le compte B.

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

Pour vérifier que votre instance peut accéder au compartiment S3, connectez-vous à l’instance, puis exécutez la commande de liste suivante :

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

Remarque : remplacez le profilename par le nom du rôle que vous avez attaché à l’instance.

Si votre instance parvient à accéder au compartiment, vous recevez une réponse semblable à la suivante :

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

Informations connexes

Tutoriel IAM : Déléguer l’accès entre les comptes AWS à l’aide des rôles IAM

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an