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 à IAM des rôles plutôt que d'accorder des autorisations à 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 n'appartiennent pas au 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é des objets S3 est un paramètre au niveau du compartiment Amazon S3 que vous pouvez utiliser à la fois pour contrôler la propriété des objets chargés dans votre compartiment et pour les désactiver ou les activer. ACLs Par défaut, Object Ownership est défini sur le paramètre imposé par le propriétaire du bucket, et tous ACLs sont désactivés. Lorsqu'ils ACLs sont désactivés, le propriétaire du compartiment possède tous les objets du compartiment et gère l'accès à ceux-ci exclusivement à l'aide de politiques de gestion des accès.

La majorité des cas d'utilisation modernes d'Amazon S3 ne nécessitent plus l'utilisation deACLs. Nous vous recommandons de rester ACLs désactivé, sauf dans des circonstances exceptionnelles où vous devez contrôler l'accès à chaque objet individuellement. Lorsque cette ACLs option est désactivée, 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 Contrôle de la propriété des objets et désactivation ACLs 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 l'autorisation ACL d'ajout d'objets qui donne au propriétaire du compartiment le contrôle total de 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 procédure pas à pas, vous n'utiliserez pas les informations d'identification de l'utilisateur root du compte, conformément aux IAM directives 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 IAMconsole 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 IAM d'un utilisateur Compte AWS dans votre guide de l'IAMutilisateur.

      • Accordez des autorisations d'administrateur à AccountAadminen joignant une politique utilisateur qui donne un accès complet. Pour obtenir des instructions, reportez-vous à la section Gestion des IAM politiques dans le guide de IAM l'utilisateur.

      • Dans le tableau de bord de la IAMconsole, notez la connexion URL de IAM l'utilisateur. Les utilisateurs de ce compte doivent l'utiliser URL lorsqu'ils se connectent au AWS Management Console. Pour plus d'informations, consultez la section Comment les utilisateurs se connectent à votre compte dans le Guide de IAM l'utilisateur.

    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 visites guidées.

É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 la connexion IAM utilisateur URL 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 estamzn-s3-demo-bucket1.

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

  2. Dans la IAMconsole, créez un utilisateurDave.

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

  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 amzn-s3-demo-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 recherche d'un compteIDs, 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:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "Statement3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-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 subvention dans l'objet ACL pour permettre au compte A, le propriétaire du compartiment, de contrôler totalement

À l'aide du 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 amzn-s3-demo-bucket1 --key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin
  2. Ajoutez une autorisation à l'objet ACL pour permettre au propriétaire du compartiment de contrôler totalement 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 amzn-s3-demo-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 amzn-s3-demo-bucket1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin
  2. Ajoutez une autorisation à l'objet ACL pour permettre au propriétaire du compartiment de contrôler totalement l'objet.

    Set-S3ACL -BucketName amzn-s3-demo-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.

À l'aide du 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 visites guidées.

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

    aws s3api get-object --bucket amzn-s3-demo-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 amzn-s3-demo-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 à amzn-s3-demo-bucket1. Dans les propriétés du bucket, supprimez la politique 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 IAMconsole, supprimez l'AccountAadminutilisateur. Pour step-by-step obtenir des instructions, reportez-vous à la section Suppression IAM d'un utilisateur dans le guide de IAM l'utilisateur.

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