Quels sont les cas d'utilisation d'une ACL d'objet dans Amazon S3 ?

Date de la dernière mise à jour : 21/12/2021

Je souhaite déléguer l'accès à mes objets Amazon Simple Storage Service (Amazon S3) à l'aide d'une liste de contrôle d'accès (ACL). Quels sont les cas d'utilisation d'une ACL d'objet ou de compartiment ?

Résolution

Les listes de contrôle d'accès (ACL) d'Amazon S3 vous permettent de gérer l'accès aux compartiments et aux objets S3. Chaque compartiment et objet S3 est attaché à une liste de contrôle d'accès en tant que ressource secondaire. Ces listes permettent de définir les comptes ou groupes AWS qui sont autorisés d'accès ainsi que le type d'accès. Lorsque vous envoyez une demande concernant une ressource, Amazon S3 vérifie l'ACL correspondante pour confirmer que vous disposez des autorisations d'accès requises.

Les ACL ne sont plus nécessaires dans la plupart des cas d'utilisation où l'accès est accordé aux objets ou aux compartiments. Cependant, dans certains cas, l'utilisation d'une ACL peut être plus indiquée. Par exemple, vous trouverez ci-dessous quelques cas d'utilisation pour lesquels vous pourriez avoir besoin d'utiliser une ACL pour gérer l'accès à un compartiment ou à un objet :

  • Une ACL d'objet représente le seul moyen d'accorder l'accès à des objets qui ne sont pas détenus par le propriétaire du compartiment. Lorsque, par défaut, un autre compte AWS charge un objet dans votre compartiment S3, ce compte (le rédacteur de l'objet) est propriétaire de l'objet. En outre, le rédacteur d'objet a accès à l'objet et peut autoriser d'autres utilisateurs à y accéder à l'aide de l'ACL.
  • Les ACL d'objet peuvent être utilisées lorsque vous devez gérer des autorisations au niveau de l'objet. Par exemple, si vous avez besoin de déléguer l'accès à un dossier entier, vous pouvez utiliser une politique de compartiment. Toutefois, si les autorisations d'accès varient en fonction des objets, il n'est pas toujours pratique d'accorder des autorisations à des objets individuels en appliquant une politique de compartiment. Ainsi, une ACL d'objet peut être plus appropriée pour gérer l'accès aux objets.
  • Si vous souhaitez posséder de nouveaux objets écrits dans votre compartiment par d'autres comptes AWS (et que votre ACL n'est pas désactivée), appliquez le paramètre préféré du propriétaire du compartiment. Grâce à ce paramètre, les nouveaux objets qui sont écrits avec l'ACL de « contrôle total par le propriétaire du compartiment » sont automatiquement détenus par le propriétaire du compartiment (et non par le rédacteur d'objet). Tous les autres comportements de l'ACL sont maintenus.
    Remarque : pour désactiver une ACL, utilisez le paramètre appliqué par le propriétaire du compartiment pour la propriété de l'objet S3. En cas de désactivation des ACL, vous pouvez facilement gérer un compartiment avec des objets chargés (entre comptes) à partir de différents comptes AWS en utilisant des politiques de compartiment. Si votre compartiment utilise le paramètre défini par le propriétaire du compartiment pour la propriété d'objet S3, les demandes de définition ou de mise à jour des ACL échouent et renvoient le code d'erreur AccessControlListNotSupported. Toutefois, les demandes de lecture des ACL seront toujours prises en charge.
  • Les ACL de compartiment peuvent être utilisées pour accorder des autorisations à des services AWS comme Amazon CloudFront, afin d'effectuer certaines actions sur votre compartiment. Par exemple, lorsque vous créez ou mettez à jour une distribution CloudFront et activez la journalisation CloudFront, ce dernier met à jour l'ACL du compartiment. Cette mise à jour accorde au compte awslogsdelivery les autorisations FULL_CONTROL nécessaires pour écrire des journaux dans votre compartiment. Pour en savoir plus, consultez la section : Autorisations requises pour configurer la journalisation standard et accéder à vos fichiers journaux.

Application des ACL aux objets

Exemple 1

Si vous chargez un objet dans un compartiment d'un autre compte AWS, utilisez l'ACL prête à l'emploi de bucket-owner-full-control :

aws s3api put-object --bucket destination_bucket --key dir-1/myfile --body dir-1/myfile --acl bucket-owner-full-control

L'ACL prête à l'emploi de bucket-owner-full-control permet d'accéder au compte du propriétaire du compartiment.

Remarque : Amazon S3 prend en charge un ensemble d'ACL prédéfinies appelées ACL prêtes à l'emploi (telles que l'ACL debucket-owner-full-control utilisée dans cet exemple).

Exemple 2

Le chargeur d'objets peut également ajouter une ACL pour accorder des autorisations de lecture à d'autres comptes AWS :

aws s3api put-object --bucket destination_mybucket --key dir/myfile --body dir/myfile --grant-read emailaddress=user1@amazon.com,id=canonical-id-of-account

Remarque : vous pouvez uniquement spécifier un bénéficiaire en utilisant des adresses e-mail dans les régions AWS suivantes : Virginie du Nord, Californie du Nord, Oregon, Singapour, Sydney, Tokyo, Irlande et São Paulo.

Exemple 3

Vous pouvez également mettre à jour l'ACL d'un objet existant :

aws s3api put-object-acl --bucket destination_bucket --key dir/myfile --acl bucket-owner-full-control

Exemple 4

Amazon S3 possède un ensemble de groupes prédéfinis. Vous pouvez utiliser des ACL d'objets pour accorder des autorisations aux utilisateurs qui font partie de ces groupes prédéfinis.

Par exemple, vous pouvez accorder l'accès aux objets à n'importe quel utilisateur AWS authentifié en accordant l'accès au groupe Utilisateurs authentifiés :

aws s3api put-object --bucket destination_mybucket --key dir/myfile --body dir/myfile --grant-read uri=http://acs.amazonaws.com/groups/global/AuthenticatedUsers

Remarque : avant d'accorder l'accès au groupe Utilisateurs authentifiés, désactivez les paramètresBloquer l'accès public pour les ACL au niveau du compte et du compartiment. Si vous ne les désactivez pas, une erreur Accès refusé s'affichera. Pour résoudre les erreurs d'accès refusé liées à l'ACL, consultez la section : Un utilisateur autorisé à ajouter des objets à mon compartiment Amazon S3 reçoit des erreurs Accès refusé. Pourquoi ?