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 ?