Exemple 2 : propriétaire d'un compartiment accordant à ses utilisateurs des autorisations entre comptes sur un compartiment - Amazon Simple Storage Service

Exemple 2 : propriétaire d'un compartiment accordant à ses utilisateurs des autorisations entre comptes sur un compartiment

Important

Il est préférable d'accorder des autorisations à des rôles IAM plutôt qu'à des utilisateurs individuels. Pour savoir comment procéder, veuillez consulter Informations générales : autorisations entre comptes et utilisation de rôles IAM.

Un Compte AWS (par exemple, le compte A) peut accorder à un autre Compte AWS (le compte B) l'autorisation d'accéder à ses ressources, telles que des compartiments et objets. Le compte B peut ensuite déléguer ces autorisations aux utilisateurs du compte. Dans ce scénario fictif, le propriétaire d'un compartiment accorde une autorisation entre comptes à un autre compte pour lui permettre d'effectuer des opérations spécifiques sur un compartiment.

Note

Le compte A peut également accorder directement des autorisations à un utilisateur du compte B, par le biais d'une stratégie de compartiment. Toutefois, l'utilisateur aura toujours besoin de l'autorisation du compte parent (le compte B) auquel il appartient, même si ce compte n'a pas reçu d'autorisation du compte A. Tant que l'utilisateur dispose d'une autorisation accordée par le propriétaire de la ressource et par le compte parent, il pourra accéder à la ressource.

Les étapes suivantes résument la procédure à suivre :

  1. L'utilisateur administrateur du compte A attache une stratégie de compartiment en accordant au compte B des autorisations inter-comptes pour lui permettre d'effectuer des opérations spécifiques sur un compartiment.

    Notez que l'utilisateur administrateur du compte B hérite automatiquement des autorisations.

  2. L'utilisateur administrateur du compte B attache une stratégie d'utilisateur à l'utilisateur en déléguant les autorisations qu'il a reçues du compte A.

  3. L'utilisateur du compte B vérifie ensuite les autorisations en accédant à un objet dans le compartiment appartenant au compte A.

Pour cet exemple, vous avez besoin de deux comptes. Le tableau ci-dessous montre comment nous faisons référence à ces comptes et à leurs utilisateurs administrateurs. Conformément aux directives IAM (consultez Utilisation d'un utilisateur administrateur pour créer des ressources et accorder des autorisations), nous n'utilisons pas les informations d'identification d'utilisateur root dans cette procédure. A la place, vous créez un utilisateur administrateur dans chaque compte et utilisez ces autorisations pour créer des ressources et leur accorder des autorisations.

ID Compte AWS Compte désigné comme Utilisateur administrateur du compte

1111-1111-1111

Compte A

AccountAadmin

2222-2222-2222

Compte B

AccountBadmin

Toutes les tâches de création d'utilisateurs et d'octroi d'autorisations sont effectuées dans la AWS Management Console. Pour vérifier les autorisations, la procédure utilise les outils de ligne de commande, AWS Command Line Interface (interface de ligne de commande) et AWS Tools for Windows PowerShell, pour que vous n'ayez pas à écrire de code.

Étape 0 : Préparez-vous à suivre la procédure

  1. Assurez-vous de posséder deux Comptes AWS et que chaque compte possède un seul utilisateur administrateur, comme indiqué dans le tableau de la section précédente.

    1. Connectez-vous à un Compte AWS, le cas échéant.

    2. Utilisez les autorisations du compte A pour vous connecter à la console IAM afin de créer l'utilisateur administrateur :

      1. Créez l'utilisateur AccountAadmin et notez les autorisations de sécurité. Pour obtenir des instructions, veuillez consulter la section Création d'un utilisateur IAM dans votre Compte AWS du Guide de l'utilisateur IAM.

      2. Accordez des privilèges d'administrateur AccountAadmin en attachant une stratégie d'utilisateur donnant l'accès total. Pour obtenir des instructions, veuillez consulter Utilisation de stratégies dans le Guide de l'utilisateur IAM.

    3. Lorsque vous êtes dans la console IAM, notez l'URL de connexion d'utilisateur IAM sur le tableau de bord. Tous les utilisateurs du compte doivent utiliser cette URL pour se connecter à la AWS Management Console.

      Pour de plus amples informations, veuillez consulter Comment les utilisateurs se connectent à votre compte dans le Guide de l'utilisateur IAM.

    4. Répétez l'étape précédente en utilisant les autorisations du compte B et créez l'utilisateur administrateur AccountBadmin.

  2. Configurez la AWS Command Line Interface (CLI) ou AWS Tools for Windows PowerShell. Assurez-vous d'enregistrer les autorisations de l'utilisateur administrateur comme suit :

    • Si vous utilisez AWS CLI, créez deux profils (AccountAadmin et AccountBadmin) dans le fichier de configuration.

    • Si vous utilisez AWS Tools for Windows PowerShell, veillez à stocker les informations d'identification pour la session dans AccountAadmin et AccountBadmin.

    Pour obtenir des instructions, consultez Installation des outils pour les procédures d'exemples.

  3. Enregistrez les autorisations de l'utilisateur administrateur, également appelées « profils ». Vous pouvez utiliser le nom de profil au lieu de spécifier des autorisations pour chaque commande saisie. Pour de plus amples informations, veuillez consulter Installation des outils pour les procédures d'exemples.

    1. Ajoutez des profils dans le fichier des informations d'identification AWS CLI pour chacun des utilisateurs administrateurs dans les deux comptes.

      [AccountAadmin] aws_access_key_id = access-key-ID aws_secret_access_key = secret-access-key region = us-east-1 [AccountBadmin] aws_access_key_id = access-key-ID aws_secret_access_key = secret-access-key region = us-east-1
    2. Si vous utilisez AWS Tools for Windows PowerShell

      set-awscredentials –AccessKey AcctA-access-key-ID –SecretKey AcctA-secret-access-key –storeas AccountAadmin set-awscredentials –AccessKey AcctB-access-key-ID –SecretKey AcctB-secret-access-key –storeas AccountBadmin

Étape 1 : Tâches du compte A

Étape 1.1 : Connectez-vous à la AWS Management Console

Grâce à l'URL de connexion d'utilisateur IAM du compte A, connectez-vous tout d'abord à AWS Management Console en tant qu'utilisateur AccountAadmin. Cet utilisateur créera un compartiment et y attachera une stratégie.

Étape 1.2 : Créer un compartiment

  1. Dans la console Amazon S3, créez un compartiment. Pour cet exercice, nous partons du principe que le compartiment est créé dans la Région USA Est (Virginie du Nord) et que son nom est DOC-EXAMPLE-BUCKET.

    Pour obtenir des instructions, consultez Créer un compartiment.

  2. Chargez un exemple d'objet dans le compartiment.

    Pour plus d'informations, consultez Étape 2 : Charger un objet dans votre compartiment.

Étape 1.3 : attacher une stratégie de compartiment afin d'accorder des autorisations entre comptes au compte B

La stratégie de compartiment accorde les autorisations s3:GetLifecycleConfiguration et s3:ListBucket au compte B. Nous partons du principe que vous êtes toujours connecté à la console via les informations d'identification de l'utilisateur AccountAadmin.

  1. Attachez la stratégie de compartiment suivante à DOC-EXAMPLE-BUCKET. Cette stratégie accorde au compte B une autorisation pour les actions s3:GetLifecycleConfiguration et s3:ListBucket.

    Pour obtenir des instructions, consultez Ajout d'une stratégie de compartiment à l'aide de la console Amazon S3.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }
  2. Vérifiez que le compte B (et donc son utilisateur administrateur) peut effectuer les opérations.

    • Utilisation de l AWS CLI

      aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin aws s3api get-bucket-lifecycle-configuration --bucket DOC-EXAMPLE-BUCKET --profile AccountBadmin
    • Utilisation de l AWS Tools for Windows PowerShell

      get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBadmin get-s3bucketlifecycleconfiguration -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBadmin

Étape 2 : Tâches du compte B

L'administrateur du compte B va maintenant créer un utilisateur, Dave, et lui déléguer les autorisations reçues du compte A.

Étape 2.1 : Connectez-vous à la AWS Management Console

Grâce à l'URL de connexion d'utilisateur IAM du compte B, connectez-vous tout d'abord à AWS Management Console en tant qu'utilisateur AccountBadmin.

Étape 2.2 : créer l'utilisateur Dave dans le compte B

Dans la console IAM, créez un utilisateur nommé Dave.

Pour obtenir des instructions, veuillez consulter la section Création d'utilisateurs IAM (AWS Management Console) du Guide de l'utilisateur IAM.

Étape 2.3 : déléguer les autorisations à l'utilisateur Dave

Créez une stratégie intégrée pour l'utilisateur Dave à l'aide de la stratégie suivante. Vous devrez mettre à jour la stratégie en fournissant le nom du compartiment.

Nous partons du principe que vous êtes connecté à la console via les autorisations d'AccountBadmin.

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

Pour obtenir des instructions, veuillez consulter Utilisation de stratégies en ligne dans le Guide de l'utilisateur IAM.

Étape 2.4 : Testez les autorisations

Dans le compte B, Dave peut maintenant répertorier le contenu du compartiment DOC-EXAMPLE-BUCKET appartenant au compte A. Vous pouvez vérifier les autorisations via l'une des procédures suivantes.

Tester à l'aide d'AWS CLI
  1. Ajoutez le profil UserDave au fichier de configuration AWS CLI. Pour plus d'informations sur le fichier de configuration, consultez Installation des outils pour les procédures d'exemples.

    [profile UserDave] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. À l'invite de commande, saisissez la commande AWS CLI suivante pour vérifier si Dave peut désormais obtenir une liste d'objets depuis le compartiment DOC-EXAMPLE-BUCKET appartenant au compte A. Notez que la commande spécifie le profil UserDave.

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

    Dave n'a aucune autre autorisation. Par conséquent, s'il essaie d'effectuer une autre opération (par exemple, obtenir la configuration du cycle de vie du compartiment), Amazon S3 indique que l'autorisation est refusée.

    aws s3api get-bucket-lifecycle-configuration --bucket DOC-EXAMPLE-BUCKET --profile UserDave
Tester à l'aide d'AWS Tools for Windows PowerShell
  1. Stockez les autorisations de Dave en tant qu'AccountBDave.

    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
  2. Essayez la commande permettant de répertorier les compartiments.

    get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

    Dave n'a aucune autre autorisation. Par conséquent, s'il essaie d'effectuer une autre opération (par exemple, obtenir la configuration du cycle de vie du compartiment), Amazon S3 indique que l'autorisation est refusée.

    get-s3bucketlifecycleconfiguration -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Étape 3 : (Facultatif) essayer le refus explicite

Des autorisations peuvent vous être accordées par une liste ACL, une stratégie de compartiment ou une stratégie d'utilisateur. Toutefois, si un refus explicite est défini via une stratégie de compartiment ou une stratégie d'utilisateur, il prime sur toute autre autorisation. Pour le test, nous allons mettre à jour la stratégie de compartiment et refuser explicitement l'autorisation s3:ListBucket au compte B. La stratégie accorde également une autorisation s3:ListBucket, mais le refus explicite prime, et le compte B ou les utilisateurs du compte B ne pourront pas répertorier les objets dans DOC-EXAMPLE-BUCKET.

  1. A l'aide des autorisations de l'utilisateur AccountAadmin dans le Compte A, remplacez la stratégie de compartiment par les données suivantes.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "Deny permission", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }
  2. Si vous essayez maintenant d'obtenir une liste des compartiments en utilisant les autorisations d'AccountBadmin, l'accès vous sera refusé.

    • Utilisation d'AWS CLI :

      aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin
    • Utilisation d'AWS Tools for Windows PowerShell :

      get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Étape 4 : Nettoyer

  1. Une fois le test terminé, vous pouvez procéder comme suit pour le nettoyage.

    1. Connectez-vous à AWS Management Console (AWS Management Console) en utilisant les autorisations du compte A, et procédez comme suit :

      • Dans la console Amazon S3, supprimez la stratégie de compartiment attachée à examplebucket. Dans la page Properties du compartiment, supprimez la stratégie dans la section Permissions.

      • Si le compartiment a été créé pour cet exercice, supprimez les objets, puis le compartiment, dans la console Amazon S3.

      • Dans la console IAM, supprimez l'utilisateur AccountAadmin.

  2. Connectez-vous à la AWS Management Console (AWS Management Console) en utilisant les informations d'identification du compte B. Dans la console IAM, supprimez l'utilisateur AccountBadmin.