Pourquoi ne puis-je pas accéder à un objet qui a été téléchargé sur mon compartiment Amazon S3 par un autre compte AWS ?
Dernière mise à jour : 10/11/2020
Un utilisateur AWS Identity and Access Management (IAM) d'un autre compte AWS a téléchargé un objet sur mon compartiment Amazon Simple Storage Service (Amazon S3). Lorsque j'essaie d'accéder à cet objet, je reçois le message d’erreur 403 Access Denied (Accès refusé). Comment puis-je corriger ce problème ?
Brève description
Par défaut, un objet S3 appartient au compte AWS qui l'a chargé. C’est le cas même si le compartiment est détenu par un autre compte. Pour permettre l'accès à l'objet, son propriétaire doit explicitement en octroyer les droits d’accès à vous, le propriétaire du compartiment.
Il peut accorder au propriétaire du compartiment le contrôle total de l'objet en mettant à jour la liste de contrôle d'accès (ACL) de l'objet. Le propriétaire de l'objet peut mettre à jour la liste ACL soit lors d'une opération put ou copy, soit après l’ajout de l'objet au compartiment.
Résolution
Accorder l'accès lors d'une opération put ou copy
Lors d’une opération « put » ou « copy », le propriétaire de l'objet peut spécifier que la liste de contrôle d'accès (ACL) de l'objet accorde un contrôle total au propriétaire du compartiment.
Pour une opération « put », le propriétaire de l'objet peut exécuter cette commande :
aws s3api put-object --bucket destination_DOC-EXAMPLE-BUCKET --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control
Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d’AWS CLI.
Pour une opération « copy » d'un objet unique, le propriétaire de l'objet peut exécuter une de ces commandes :
aws s3api copy-object --bucket destination_DOC-EXAMPLE-BUCKET --key source_DOC-EXAMPLE-BUCKET/myobject --acl bucket-owner-full-control
- ou -
aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/myobject s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control
Pour une opération « copy » de plusieurs objets, le propriétaire de l'objet peut exécuter cette commande :
aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/ s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control --recursive
Accorder l'accès après l’ajout de l'objet au compartiment
Si l'objet se trouve déjà dans un compartiment d’un autre compte, le propriétaire de l'objet peut octroyer un accès au propriétaire du compartiment avec une commande put-object-acl :
aws s3api put-object-acl --bucket destination_DOC-EXAMPLE-BUCKET --key keyname --acl bucket-owner-full-control
Imposer que les objets accordent un contrôle total au propriétaire du compartiment
Vous pouvez utiliser une stratégie de compartiment pour exiger que touts les objets chargés sur votre compartiment par un autre compte définisse la liste ACL en tant que « bucket-owner-full-control ». Consultez par exemple la section Lorsque d'autres comptes AWS chargent des objets dans mon compartiment Amazon S3, comment puis-je exiger qu'ils me concèdent la propriété de ces objets ?
Informations connexes
Cet article vous a-t-il été utile ?
Besoin d'aide pour une question technique ou de facturation ?