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 Informations générales : autorisations entre comptes et utilisation de rôles IAM.
Rubriques
Le scénario de cet exemple met en scène un propriétaire de compartiment qui souhaite accorder l'autorisation d'accès à des objets, alors que tous les objets du compartiment ne lui appartiennent pas. Pour cet exemple, le propriétaire du compartiment essaie d'accorder une autorisation à des utilisateurs de son propre compte.
Un propriétaire de compartiment peut autoriser d'autres Comptes AWS à 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 pas les objets dans le compartiment, le propriétaire de l'objet doit d'abord accorder l'autorisation au propriétaire du compartiment à l'aide d'une ACL d'objets. Le propriétaire du compartiment peut ensuite accorder des autorisations à un objet dont il n'est pas 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. Cela résoudra le problème selon lequel les objets ne sont pas détenus par le 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é d'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 de plus amples informations, veuillez consulter 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. Les étapes suivantes résument la procédure à suivre :

-
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.
-
-
L'utilisateur administrateur du compte B charge des objets dans le compartiment appartenant au compte A.
-
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.
-
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 de plus amples informations, veuillez consulter 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.
ID Compte AWS | Compte désigné comme | Administrateur du compte |
---|---|---|
|
Compte A |
AccountAadmin |
|
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 (AWS CLI) et AWS Tools for Windows PowerShell, pour que vous n'ayez pas à écrire de code.
Étape 0 : Préparez-vous à suivre la procédure
-
Vous devez posséder deux Comptes AWS, chacun doté d'un seul administrateur, comme indiqué dans le tableau de la section précédente.
-
Connectez-vous à un Compte AWS, le cas échéant.
-
Utilisez les autorisations du compte A pour vous connecter à la IAM console (Console IAM)
et procédez comme suit pour créer un utilisateur administrateur : -
Créez l'utilisateur AccountAadmin et notez les autorisations de sécurité. 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 à AccountAadmin en attachant une stratégie d'utilisateur donnant l'accès total. 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 d'utilisateur IAM. Les utilisateurs figurant dans ce 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.
-
-
Répétez l'étape précédente en utilisant les autorisations du compte B et créez l'utilisateur administrateur AccountBadmin.
-
-
Configurez AWS CLI ou Tools for Windows PowerShell. Veillez à enregistrer les autorisations de l'administrateur comme suit :
-
Si vous utilisez AWS CLI, créez deux profils,
AccountAadmin
etAccountBadmin
, dans le fichier de configuration. Si vous utilisez Tools for Windows PowerShell, assurez-vous de stocker les autorisations pour la session en tant que
AccountAadmin
etAccountBadmin
.
Pour obtenir des instructions, consultez Installation des outils pour les procédures d'exemples.
-
Étape 1 : Tâches du compte A
Effectuez les opérations suivantes pour le compte A :
Étape 1.1 : Se connecter à la console
Grâce à l'URL de connexion d'utilisateur IAM du compte A, connectez-vous à la 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 et un utilisateur, puis ajouter une stratégie de compartiment accordant des autorisations à l'utilisateur
-
Dans la console Amazon S3, créez un compartiment. Cet exercice suppose que le compartiment est créé dans la Région USA Est (Virginie du Nord) et que son nom est
.DOC-EXAMPLE-BUCKET1
Pour obtenir des instructions, consultez Créer un compartiment.
-
Dans la console IAM, créez un utilisateur nommé Dave.
Pour obtenir des instructions, veuillez consulter la section Création d'utilisateurs IAM (console) du Guide de l'utilisateur IAM
-
Notez les autorisations de Dave.
-
Dans la console Amazon S3, attachez la stratégie de compartiment suivante au compartiment
. Pour obtenir des instructions, consultez 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 des informations sur la manière de trouver des ID de compte, consultez la section Identification de votre ID de Compte AWS.DOC-EXAMPLE-BUCKET1
Cette stratégie accorde au compte B les autorisations
s3:PutObject
ets3:ListBucket
. Cette stratégie accorde également à l'utilisateur Dave l'autorisations3:GetObject
.{ "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:::DOC-EXAMPLE-BUCKET1
/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1
" ] }, { "Sid": "Statement3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID
:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-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 procède comme suit :
-
Il charge un objet vers le compartiment du compte A.
Il ajoute une affectation dans la liste ACL d'objets pour accorder le contrôle total au propriétaire du compartiment du compte A.
Utilisation de AWS CLI
-
A l'aide de la commande CLI
put-object
, chargez un objet. Le paramètre --body
de la commande identifie le fichier source à charger. Par exemple, si le fichier figure sur le lecteurC:
d'un ordinateur Windows, vous devez spécifierc:\HappyFace.jpg
. Le paramètre--key
fournit le nom de clé de l'objet.aws s3api put-object --bucket
DOC-EXAMPLE-BUCKET1
--key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin -
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 recherche d'un ID d'utilisateur canonique, consultez la section Identification de l'ID d'utilisateur canonique de votre Compte AWS.
aws s3api put-object-acl --bucket
DOC-EXAMPLE-BUCKET1
--key HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBadmin
Utilisation de Tools for Windows PowerShell
-
Chargez un objet à l'aide de la commande
Write-S3Object
Tools for Windows PowerShell.Write-S3Object -BucketName
DOC-EXAMPLE-BUCKET1
-key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin -
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
DOC-EXAMPLE-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.
Utilisation de AWS CLI
-
Ajoutez les informations d'identification de l'utilisateur Dave dans le fichier de configuration AWS CLI et créez un profil,
UserDaveAccountA
. Pour de plus amples informations, veuillez consulter Installation des outils pour les procédures d'exemples.[profile UserDaveAccountA] aws_access_key_id =
access-key
aws_secret_access_key =secret-access-key
region =us-east-1
-
Exécutez la commande CLI
get-object
pour téléchargerHappyFace.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
DOC-EXAMPLE-BUCKET1
--key HappyFace.jpgOutputfile.jpg
--profile UserDaveAccountA
Utilisation de Tools for Windows PowerShell
-
Stockez les informations d'identification AWS de l'utilisateur Dave, en tant que
UserDaveAccountA
, dans un stockage permanent.Set-AWSCredentials -AccessKey
UserDave-AccessKey
-SecretKeyUserDave-SecretAccessKey
-storeas UserDaveAccountA -
Exécutez la commande
Read-S3Object
pour téléchargerHappyFace.jpg
, puis enregistrez le fichier localement. Vous attribuez à l'utilisateur Dave des informations d'identification en ajoutant le paramètre-StoredCredentials
.Read-S3Object -BucketName
DOC-EXAMPLE-BUCKET1
-Key HappyFace.jpg -file HappyFace.jpg -StoredCredentials UserDaveAccountA
Étape 4 : Nettoyer
-
Une fois le test terminé, vous pouvez procéder comme suit pour le nettoyage.
-
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 stratégie de compartiment attachée à
DOC-EXAMPLE-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'utilisateur AccountAadmin.
-
-
-
Connectez-vous à la AWS Management Console
en utilisant les autorisations du compte B. Dans la console IAM, supprimez l'utilisateur AccountBadmin.