Consignes relatives à la stratégie d'accès - Amazon Simple Storage Service

Consignes relatives à la stratégie d'accès

Amazon S3 supporte les stratégies basées sur les ressources et les stratégies d'utilisateur pour gérer l'accès à vos ressources Amazon S3. Pour de plus amples informations, veuillez consulter Gestion de l'accès aux ressources. Les stratégies basées sur les ressources comprennent les stratégies de compartiment, les listes de contrôle d'accès de compartiment (ACL) et les listes ACL d'objets. Cette section décrit les scénarios d'utilisation spécifiques des stratégies d'accès basées sur les ressources pour gérer l'accès à vos ressources Amazon S3.

Condition d'utilisation d'une stratégie d'accès basée sur les listes ACL (listes ACL de compartiment et d'objets)

Les compartiments et les objets ont des listes ACL associées que vous pouvez utiliser pour accorder des autorisations.

Par défaut, lorsqu'un autre Compte AWS télécharge un objet dans votre compartiment S3, ce compte (le rédacteur d'objet) est propriétaire de l'objet, y a accès et peut en accorder l'accès à d'autres utilisateurs via des ACL. Vous pouvez utiliser Object Ownership afin de modifier ce comportement par défaut, pour que les ACL soient désactivées et que vous, en tant que propriétaire du compartiment, possédiez automatiquement tous les objets de votre compartiment. Par conséquent, le contrôle d'accès à vos données est basé sur des stratégies, telles que les stratégies IAM, les stratégies de compartiment S3, les stratégies de point de terminaison de cloud privé virtuel (VPC) et les politiques de contrôle des services (SCP) AWS Organizations.

La majorité des cas d'utilisation modernes dans Amazon S3 ne nécessitent plus l'utilisation des listes ACL ; nous vous recommandons de désactiver les listes ACL, sauf dans des circonstances inhabituelles où vous devez contrôler l'accès de chaque objet individuellement. Avec Object Ownership, vous pouvez désactiver les listes ACL et vous fier aux stratégies pour le contrôle des accès. Lorsque vous désactivez les listes ACL, vous pouvez facilement gérer un compartiment avec des objets téléchargés par différents Comptes AWS. En tant que propriétaire du compartiment, vous êtes propriétaire de tous les objets du compartiment et pouvez gérer l'accès à ces derniers au moyen de stratégies. Pour plus d'informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Important

Si votre compartiment utilise le paramètre appliqué par le propriétaire du compartiment pour S3 Object Ownership (Propriété de l'objet S3), vous devez utiliser des stratégies pour accorder l'accès à votre compartiment et aux objets qu'il contient. Les demandes de définition de listes ACL ou de mise à jour des listes ACL échouent et renvoient le code d'erreur AccessControlListNotSupported. Les demandes de lecture de listes ACL sont toujours prises en charge.

Conditions d'utilisation d'une liste ACL d'objets

Ci-après, se trouvent les scénarios dans lesquels vous utiliseriez les listes ACL d'objets pour gérer les autorisations.

Les objets ne sont pas détenus par le propriétaire du compartiment

Une liste ACL d'objets est le seul moyen de gérer l'accès aux objets qui ne sont pas détenus par le propriétaire du compartiment. Un Compte AWS qui détient un compartiment peut octroyer à un autre Compte AWS l'autorisation de charger des objets. Le propriétaire du compartiment n'est pas le propriétaire de ces objets. Le Compte AWS qui a créé l'objet doit accorder des autorisations à l'aide des listes ACL d'objets.

Note

Un propriétaire de compartiment peut accorder des autorisations sur des objets dont il n'est pas propriétaire. A titre d'exemple, une stratégie de compartiment accordant des autorisations d'objet s'applique uniquement aux objets appartenant au propriétaire du compartiment. Toutefois, le propriétaire du compartiment, celui qui paie les factures, peut définir une stratégie de compartiment pour refuser l'accès aux objets du compartiment, quel que soit le propriétaire des objets. Le propriétaire du compartiment peut également supprimer tout objet du compartiment.

Vous devez gérer les autorisations au niveau de l'objet

Supposons que les autorisations varient selon l'objet et que vous devez gérer les autorisations au niveau de l'objet. Vous pouvez écrire une déclaration de stratégie unique octroyant à un Compte AWS l'autorisation de lecture sur des millions d'objets ayant un préfixe de nom de clé spécifique. A titre d'exemple, vous pouvez octroyer des autorisations en lecture sur des objets avec le préfixe de nom de clé logs. Néanmoins, si vos autorisations d'accès varient par objet, l'octroi des autorisations sur des objets individuels à l'aide d'une stratégie de compartiment peut s'avérer peu pratique. De même, la taille des stratégies de compartiment sont limitées à 20 Ko.

Dans ce cas, vous pouvez trouver l'utilisation des listes ACL d'objets comme une bonne alternative. Toutefois, même une liste ACL d'objets est également limitée à un maximum de 100 autorisations. Pour de plus amples informations, veuillez consulter Présentation de la liste de contrôle d'accès (ACL).

Les listes ACL d'objets contrôlent uniquement les autorisations au niveau de l'objet

Il y a une stratégie de compartiment pour le compartiment dans son intégralité, mais les listes ACL d'objets sont définies par objet.

Un Compte AWS qui détient un compartiment peut accorder à un autre Compte AWS l'autorisation de gérer la stratégie d'accès. Cela permet au compte de faire des modifications dans la stratégie. Afin de mieux gérer les autorisations, vous pouvez choisir de ne pas donner une autorisation si étendue, mais plutôt de n'accorder que des autorisations READ-ACP et WRITE-ACP sur un sous-ensemble d'objets à un autre compte. Ainsi, le compte est limité à la gestion d'autorisations sur des objets spécifiques, par la mise à jour des listes ACL d'objets individuels.

Si vous souhaitez utiliser des ACL pour gérer les autorisations au niveau de l'objet et que vous souhaitez également posséder de nouveaux objets écrits dans votre compartiment, vous pouvez appliquer le paramètre préféré par le propriétaire du compartiment pour la propriété d'objet. Un compartiment avec le paramètre préféré par le propriétaire du compartiment continue d'accepter et d'honorer les listes ACL de compartiment et d'objet. Avec ce paramètre, de nouveaux objets écrits avec la liste ACL bucket-owner-full-control prédéfinie sera automatiquement détenue par le propriétaire du compartiment plutôt que par l'auteur d'objets. Tous les autres comportements ACL restent en place. Pour exiger que toutes les opérations PUT Amazon S3 incluent la liste ACL bucket-owner-full-control prédéfinie, vous pouvez ajouter une politique de compartiment qui n'autorise que les chargements d'objets à l'aide de cette ACL.

Alternatives à l'utilisation des ACL

Hormis la liste ACL d'objets, un propriétaire d'objet dispose de moyens supplémentaires pour gérer les autorisations d'objet :

  • Si le Compte AWS qui détient l'objet est également détenteur du compartiment, il peut rédiger une stratégie de compartiment pour gérer les autorisations des objets.

  • Si le Compte AWS qui détient l'objet veut accorder une autorisation à un utilisateur de son compte, il peut le faire par le biais d'une stratégie d'utilisateur.

  • Si, en tant que propriétaire du compartiment, vous souhaitez posséder automatiquement tous les objets de votre compartiment et en avoir le contrôle total, vous pouvez appliquer le paramètre appliqué par le propriétaire du compartiment pour Object Ownership (Propriété de l'objet) afin de désactiver les listes ACL. Par conséquent, le contrôle des accès à vos données est basé sur des stratégies. Pour plus d'informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Conditions d'utilisation d'une liste ACL de compartiment

Le seul cas d'utilisation recommandé pour les listes ACL de compartiment consiste à accorder des autorisations à certains Services AWS comme le compte Amazon CloudFront awslogsdelivery. Lorsque vous créez ou mettez à jour une distribution et activez la journalisation CloudFront, CloudFront met à jour l'ACL du compartiment afin d'attribuer au compte awslogsdelivery des autorisations FULL_CONTROL pour écrire des journaux dans votre compartiment. Pour plus d'informations, consultez Autorisations requises pour configurer la journalisation standard et pour accéder à vos fichiers journaux dans le guide du développeur Amazon CloudFront. Si le compartiment qui stocke les journaux utilise le paramètre appliqué par le propriétaire du compartiment pour S3 Object Ownership (Propriété de l'objet S3) pour désactiver les ACL, CloudFront ne peut pas écrire de journaux dans le compartiment. Pour plus d'informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Conditions d'utilisation d'une stratégie de compartiment

Si un Compte AWS qui détient un compartiment veut accorder une autorisation à des utilisateurs sur son compte, il peut utiliser une stratégie de compartiment ou une stratégie d'utilisateur. Cependant, dans les scénarios suivants, vous devrez utiliser une stratégie de compartiment.

Vous souhaitez gérer les autorisations inter-comptes pour toutes les autorisations Amazon S3

Vous pouvez utiliser les listes ACL pour octroyer des autorisations inter-comptes à d'autres comptes. Mais les listes ACL ne supportent qu'un ensemble limité d'autorisations, et celles-ci n'incluent pas toutes les autorisations Amazon S3. Pour plus d'informations, voir Quelles autorisations puis-je octroyer ? Par exemple, vous ne pouvez pas octroyer des autorisations sur les sous-ressources du compartiment. Pour plus d'informations, consultez Identity and Access Management dans Amazon S3.

Les stratégies de compartiment et d'utilisateur supportent l'octroi d'autorisations pour toutes les opérations Amazon S3. (Pour plus d'informations, consultez Actions Amazon S3.) Toutefois, les stratégies utilisateur servent à gérer les autorisations pour les utilisateurs de votre compte. Pour accorder des autorisations inter-comptes à d'autres Comptes AWS ou à des utilisateurs d'un autre compte, vous devez utiliser une stratégie de compartiment.

Conditions d'utilisation d'une stratégie d'utilisateur

En général, une stratégie d'utilisateur ou une stratégie de compartiment vous permettent de gérer les autorisations. Vous pouvez choisir de gérer les autorisations en créant des utilisateurs et en gérant les autorisations individuellement en associant des stratégies aux utilisateurs (ou aux groupes d'utilisateurs). Vous pouvez également constater que les stratégies basées sur les ressources, telles qu'une stratégie de compartiment, fonctionnent mieux pour votre scénario.

Avec AWS Identity and Access Management (IAM), vous pouvez créer différents utilisateurs dans votre Compte AWS et gérer leurs autorisations à l'aide de stratégies d'utilisateur. Un utilisateur IAM doit avoir des autorisations du compte parent auquel il appartient et du Compte AWS qui est propriétaire de la ressource à laquelle il souhaite accéder. Les autorisations peuvent être accordées comme suit :

  • Autorisation du compte parent – Le compte parent peut accorder des autorisations à son utilisateur en associant une stratégie d'utilisateur.

  • Autorisation du propriétaire de la ressource – Le propriétaire de la ressource peut accorder une autorisation à l'utilisateur IAM (via une stratégie de compartiment) ou au compte parent (via une stratégie de compartiment, une liste ACL de compartiment ou une liste ACL d'objets).

Cela est similaire au cas d'un enfant qui veut s'amuser avec un jouet qui appartient à un autre. Afin de jouer avec le jouet, l'enfant doit obtenir l'autorisation d'un parent ainsi que celle du propriétaire du jouet.

Pour plus d'informations, consultez Stratégies de compartiment et stratégies d'utilisateur.

Délégation d'autorisations

Si un Compte AWS détient une ressource, il peut accorder ces autorisations à un autre Compte AWS. Ce compte peut alors déléguer à ces utilisateurs, l'ensemble de ces autorisations ou un sous-ensemble de celles-ci. Cela s'appelle une délégation d'autorisations. Cependant, un compte qui reçoit des autorisations d'un autre compte ne peut pas déléguer cette autorisation inter-comptes à un autre Compte AWS.

Nous vous recommandons tout d'abord d'examiner toutes les rubriques de présentation qui expliquent comment gérer l'accès à vos ressources Amazon S3 et aux instructions correspondantes. Pour plus d'informations, consultez Identity and Access Management dans Amazon S3. Vous pourrez ensuite consulter les rubriques suivantes pour plus d'informations sur les options de stratégie d'accès spécifiques.