Exemple 3 : propriétaire d'un compartiment accordant des autorisations sur des objets qu'il ne possède pas - Amazon Simple Storage Service

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.

Exemple 3 : propriétaire d'un compartiment accordant des autorisations sur des objets qu'il ne possède pas

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 Comprendre les autorisations entre comptes et utiliser les rôles IAM.

Dans cet exemple, le scénario est le suivant : le propriétaire du compartiment souhaite autoriser l'accès aux objets, mais le propriétaire du compartiment ne possède pas tous les objets du compartiment. Pour cet exemple, le propriétaire du compartiment essaie d'accorder une autorisation à des utilisateurs de son propre compte.

Le propriétaire d'un bucket peut autoriser d'autres Comptes AWS personnes à télécharger des objets. Par défaut, le propriétaire du compartiment ne possède pas d'objet écrit dans un compartiment par un autre Compte AWS. Les objets sont la propriété des comptes qui les écrivent dans un compartiment S3. Si le propriétaire du compartiment ne possède aucun objet dans le compartiment, il doit d'abord accorder l'autorisation au propriétaire du compartiment à l'aide d'une liste de contrôle d'accès aux objets (ACL). Le propriétaire du compartiment peut ensuite accorder des autorisations à un objet dont il n'est pas le propriétaire. Pour plus d’informations, consultez Propriété du compartiment et de l'objet Amazon S3.

Si le propriétaire du compartiment applique le paramètre appliqué par le propriétaire du compartiment pour la propriété de l'objet S3 pour le compartiment, le propriétaire du compartiment possèdera tous les objets du compartiment, y compris les objets écrits par un autre Compte AWS. Cette approche résout le problème selon lequel les objets ne sont pas la propriété du propriétaire du compartiment. Vous pouvez ensuite déléguer des autorisations à des utilisateurs de votre propre compte ou à d'autres Comptes AWS.

Note

La propriété d'objets S3 est un paramètre Amazon S3 au niveau des compartiments que vous pouvez utiliser pour contrôler la propriété des objets qui sont chargés dans votre compartiment, ainsi que pour désactiver ou activer les listes ACL. Par défaut, la propriété des objets est définie sur le paramètre Propriétaire du compartiment appliqué et toutes les listes ACL sont désactivées. Lorsque les listes ACL sont désactivées, le propriétaire du compartiment détient tous les objets du compartiment et gère leur accès exclusivement au moyen de politiques de gestion des accès.

La majorité des cas d'utilisation modernes dans Amazon S3 ne nécessitent plus l'utilisation des listes ACL. Nous vous recommandons de maintenir les listes ACL désactivées, sauf dans des circonstances inhabituelles où vous devez contrôler l'accès individuellement pour chaque objet. Lorsque les listes ACL sont désactivées, vous pouvez utiliser des politiques pour contrôler l'accès à tous les objets de votre compartiment, quelle que soit la personne qui les a chargés dans votre compartiment. Pour plus d’informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Dans cet exemple, nous supposons que le propriétaire du compartiment n'a pas appliqué le paramètre appliqué par le propriétaire du compartiment pour la propriété de l'objet. Le propriétaire du compartiment délègue l'autorisation aux utilisateurs figurant dans son propre compte. Voici un résumé des étapes de la procédure pas à pas :

Le propriétaire d'un bucket accorde des autorisations à des objets qui ne lui appartiennent pas.
  1. L'utilisateur administrateur du compte A attache une stratégie de compartiment contenant deux instructions.

    • Accorder une autorisation entre comptes au compte B pour charger des objets.

    • Autoriser un utilisateur dans son propre compte à accéder aux objets figurant dans le compartiment.

  2. L'utilisateur administrateur du compte B charge des objets dans le compartiment appartenant au compte A.

  3. L'administrateur du compte B met à jour la liste ACL d'objets en ajoutant une affectation qui donne au propriétaire du compartiment l'autorisation de contrôle total sur l'objet.

  4. L'utilisateur figurant dans le compte A vérifie cela en accédant aux objets du compartiment, quel que soit leur propriétaire.

Pour cet exemple, vous avez besoin de deux comptes. Le tableau ci-dessous montre comment nous faisons référence à ces comptes et aux utilisateurs administrateurs dans ces comptes. Dans cette démonstration, vous n'utiliserez pas les autorisations d'utilisateur root du compte, conformément aux directives IAM recommandées. Pour plus d’informations, consultez Utilisation d'un utilisateur administrateur pour créer des ressources et accorder des autorisations. À la place, vous allez créer un administrateur dans chaque compte et utiliser ces autorisations pour créer des ressources et leur accorder des autorisations.

Compte AWS ID Compte désigné comme 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 pas à pas utilise les outils de ligne de commande AWS Command Line Interface (AWS CLI) et AWS Tools for Windows PowerShell vous n'avez donc pas besoin d'écrire de code.

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

  1. Assurez-vous d'en avoir deux Comptes AWS et d'avoir un administrateur pour chaque compte, comme indiqué dans le tableau de la section précédente.

    1. Inscrivez-vous pour un Compte AWS, si nécessaire.

    2. À l'aide des informations d'identification du compte A, connectez-vous à la console IAM et procédez comme suit pour créer un utilisateur administrateur :

      • Créez un utilisateur AccountAadmin et notez les informations de sécurité de l'utilisateur. Pour plus d'informations sur l'ajout d'utilisateurs, consultez la section Création d'un utilisateur IAM dans votre Compte AWS du Guide de l'utilisateur IAM.

      • Accordez des autorisations d'administrateur à AccountAadminen joignant une politique utilisateur qui donne un accès complet. Pour obtenir des instructions, veuillez consulter la section Gestion des stratégies IAM dans le Guide de l'utilisateur IAM.

      • Dans le tableau de bord de la console IAM, notez l'URL de connexion de l'utilisateur IAM. Les utilisateurs figurant dans ce compte doivent utiliser cette URL pour se connecter à la AWS Management Console. Pour plus d’informations, consultez Comment les utilisateurs se connectent à votre compte dans le Guide de l’utilisateur IAM.

    3. Répétez l'étape précédente en utilisant les informations d'identification du compte B et créez un utilisateur administrateurAccountBadmin.

  2. Configurez le AWS CLI ou les outils pour Windows PowerShell. Veillez à enregistrer les autorisations de l'administrateur comme suit :

    • Si vous utilisez le AWS CLI, créez deux profils, AccountAadmin etAccountBadmin, dans le fichier de configuration.

    • Si vous utilisez les Outils pour Windows PowerShell, assurez-vous de stocker les informations d'identification de la session sous forme AccountAadmin etAccountBadmin.

    Pour obtenir des instructions, veuillez consulter Configuration des outils pour les procédures pas à pas.

Étape 1 : Tâches du compte A

Effectuez les opérations suivantes pour le compte A :

Étape 1.1 : Se connecter à la console

À l'aide de l'URL de connexion de l'utilisateur IAM pour le compte A, connectez-vous au compte en AWS Management Console tant qu'AccountAadminutilisateur. Cet utilisateur créera un compartiment et y attachera une stratégie.

Étape 1.2 : Créer un compartiment et un utilisateur, puis ajouter une stratégie de compartiment accordant des autorisations à l'utilisateur

  1. Dans la console Amazon S3, créez un compartiment. Cet exercice suppose que le bucket a été créé dans l'est des États-Unis (Virginie du Nord) Région AWS et que son nom estexample-s3-bucket1.

    Pour obtenir des instructions, veuillez consulter Créer un compartiment.

  2. Dans la console IAM, créez un utilisateurDave.

    Pour step-by-step obtenir des instructions, consultez la section Création d'utilisateurs IAM (console) dans le guide de l'utilisateur IAM.

  3. Notez les informations d'identification de l'utilisateur Dave.

  4. Dans la console Amazon S3, attachez la stratégie de compartiment suivante au compartiment example-s3-bucket1. Pour obtenir des instructions, veuillez consulter Ajout d'une stratégie de compartiment à l'aide de la console Amazon S3. Suivez les étapes pour ajouter une stratégie de compartiment. Pour plus d'informations sur la façon de trouver les identifiants de compte, consultez la section Trouver votre Compte AWS identifiant.

    Cette stratégie accorde au compte B les autorisations s3:PutObject et s3:ListBucket. La politique accorde également l's3:GetObjectautorisation Dave à l'utilisateur.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::example-s3-bucket1/*", "arn:aws:s3:::example-s3-bucket1" ] }, { "Sid": "Statement3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::example-s3-bucket1/*" ] } ] }

Étape 2 : Tâches du compte B

Maintenant que le compte B est autorisé à effectuer des opérations sur le compartiment du compte A, l'administrateur du compte B effectue les opérations suivantes :

  • Télécharge un objet dans le compartiment du compte A

  • Ajoute une autorisation dans l'ACL de l'objet pour permettre au compte A, le propriétaire du compartiment, de contrôler totalement

En utilisant le AWS CLI
  1. À l'aide de la put-object AWS CLI commande, chargez un objet. Le paramètre --body de la commande identifie le fichier source à charger. Par exemple, si le fichier se trouve sur le C: lecteur d'une Windows machine, spécifiezc:\HappyFace.jpg. Le paramètre --key fournit le nom de clé de l'objet.

    aws s3api put-object --bucket example-s3-bucket1 --key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin
  2. Ajoutez une affectation dans la liste ACL d'objets pour accorder au propriétaire du compartiment le contrôle total de l'objet. Pour plus d'informations sur la façon de trouver un nom d'utilisateur canonique, voir Trouver l'identifiant d'utilisateur canonique correspondant à votre nom Compte AWS dans le Guide de référence de gestion de AWS compte.

    aws s3api put-object-acl --bucket example-s3-bucket1 --key HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBadmin
Utilisation des outils pour Windows PowerShell
  1. À l'aide de la Write-S3Object commande, chargez un objet.

    Write-S3Object -BucketName example-s3-bucket1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin
  2. Ajoutez une affectation dans la liste ACL d'objets pour accorder au propriétaire du compartiment le contrôle total de l'objet.

    Set-S3ACL -BucketName example-s3-bucket1 -Key HappyFace.jpg -CannedACLName "bucket-owner-full-control" -StoredCreden

Étape 3 : Tester les autorisations

À présent, vérifiez que l'utilisateur Dave du compte A peut accéder à l'objet appartenant au compte B.

En utilisant le AWS CLI
  1. Ajoutez les informations d'identification de l'utilisateur Dave au fichier de AWS CLI configuration et créez un nouveau profil,UserDaveAccountA. Pour plus d’informations, consultez Configuration des outils pour les procédures pas à pas.

    [profile UserDaveAccountA] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. Exécutez la commande CLI get-object pour télécharger HappyFace.jpg, puis enregistrez le fichier localement. Vous attribuez à l'utilisateur Dave des informations d'identification en ajoutant le paramètre --profile.

    aws s3api get-object --bucket example-s3-bucket1 --key HappyFace.jpg Outputfile.jpg --profile UserDaveAccountA
Utilisation des outils pour Windows PowerShell
  1. Stockez les AWS informations d'identification de l'utilisateur DaveUserDaveAccountA, comme dans le magasin permanent.

    Set-AWSCredentials -AccessKey UserDave-AccessKey -SecretKey UserDave-SecretAccessKey -storeas UserDaveAccountA
  2. Exécutez la commande Read-S3Object pour télécharger HappyFace.jpg, puis enregistrez le fichier localement. Vous attribuez à l'utilisateur Dave des informations d'identification en ajoutant le paramètre -StoredCredentials.

    Read-S3Object -BucketName example-s3-bucket1 -Key HappyFace.jpg -file HappyFace.jpg -StoredCredentials UserDaveAccountA

Étape 4 : Nettoyer

  1. Une fois les tests terminés, vous pouvez effectuer les opérations suivantes pour effectuer le nettoyage :

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

      • Dans la console Amazon S3, supprimez la politique de compartiment attachée à example-s3-bucket1. 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'AccountAadminutilisateur. Pour step-by-step obtenir des instructions, reportez-vous à la section Suppression d'un utilisateur IAM dans le guide de l'utilisateur IAM.

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