Pourquoi est-il impossible d'accéder à un objet chargé dans mon compartiment Amazon S3 par un autre compte AWS ?

Date de la dernière mise à jour : 21/06/2019

Un utilisateur AWS Identity and Access Management (IAM) d’un autre compte AWS a chargé un objet dans 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 résoudre ce problème ? 

Brève description

Par défaut, un objet S3 est détenu par le 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.

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_awsexamplebucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control

Pour une opération copy d'un seul objet, le propriétaire de l'objet peut exécuter l'une de ces commandes : 

aws s3api copy-object --bucket destination_awsexammplebucket --key source_awsexamplebucket/myobject --acl bucket-owner-full-control

ou

aws s3 cp s3://source_awsexamplebucket/myobject s3://destination_awsexamplebucket/ --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_awsexamplebucket/ s3://destination_awsexamplebucket/ --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_awsexamplebucket --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 imposer que la liste de contrôle d'accès (ACL) de tous les objets chargés dans votre compartiment par un autre compte soit définie sur « 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 ?