View a markdown version of this page

Conditions préalables à la désactivation des listes ACL - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Conditions préalables à la désactivation des listes ACL

Une liste de contrôle d'accès aux compartiments (ACL) dans Amazon S3 est un mécanisme qui vous permet de définir des autorisations détaillées pour des objets individuels au sein d'un compartiment S3, en spécifiant quels AWS comptes ou groupes peuvent accéder à ces objets et les modifier. La majorité des cas d’utilisation modernes dans Amazon S3 ne nécessitent plus l’utilisation des listes ACL. Nous vous recommandons d'utiliser des politiques Gestion des identités et des accès AWS (IAM) et de bucket pour gérer l'accès et pour désactiver les ACL, sauf dans les cas où vous devez contrôler l'accès à chaque objet individuellement.

Si des listes ACL sont activées sur votre compartiment, remplissez les prérequis suivants avant de les désactiver :

Examinez les listes ACL de compartiment et d’objet et migrez les autorisations ACL

Lorsque vous désactivez les listes ACL, les autorisations accordées par les listes ACL de compartiment et d’objets n’affectent plus l’accès. Avant de désactiver les listes ACL, vérifiez les listes ACL de votre compartiment et de vos objets.

Chacune de vos listes ACL de compartiment et d’objet existantes possède un équivalent dans une politique IAM. Les exemples de stratégie de compartiment suivants montrent comment les autorisations READ et WRITE pour les listes ACL de compartiment et d’objet correspondent aux autorisations IAM. Pour plus d’informations sur la façon dont chaque liste ACL se traduit par des autorisations IAM, consultez Mappage des autorisations de liste ACL et de stratégie d’accès.

Avant de désactiver des listes ACL :

  • Si l'ACL de votre bucket accorde l'accès en dehors de votre AWS compte, vous devez d'abord migrer les autorisations ACL de votre bucket vers votre politique de bucket.

  • Rétablissez ensuite la liste ACL par défaut de votre compartiment.

  • Nous vous recommandons également de passer en revue les autorisations ACL au niveau de vos objets et de les migrer vers votre stratégie de compartiment.

Si les listes ACL de votre compartiment accordent des autorisations de lecture ou d’écriture à des personnes extérieures à votre compte, vous devez migrer ces autorisations vers votre stratégie de compartiment. Après avoir migré ces autorisations, vous pouvez définir Propriétaire de l’objet sur Propriétaire du compartiment appliqué. Si vous ne migrez pas les listes ACL de compartiment qui accordent un accès en lecture ou en écriture hors de votre compte, votre demande d’application du paramètre Propriétaire du compartiment appliqué échoue et renvoie le code d’erreur InvalidBucketAclWithObjectOwnership.

Si l'ACL de votre bucket accorde un accès en dehors de la Compte AWS vôtre, avant de désactiver les ACL, vous devez migrer les autorisations ACL de votre bucket vers votre politique de bucket et réinitialiser votre ACL de bucket sur l'ACL privée par défaut. Si vous ne le faites pas, votre demande d’application du paramètre Propriétaire du compartiment appliqué pour désactiver les listes ACL échoue et renvoie le code d’erreur InvalidBucketAclWithObjectOwnership. Nous vous recommandons également de revoir les autorisations ACL de votre objet et de les migrer vers votre stratégie de compartiment.

Pour consulter et migrer les autorisations ACL vers des stratégies de compartiment, consultez les rubriques suivantes.

Exemples de stratégies de compartiment

Ces exemples de politiques de compartiment vous montrent comment migrer les autorisations ACL de WRITE compartiment READ et d'objet pour un tiers Compte AWS vers une politique de compartiment. READ_ACPet WRITE_ACP les ACL sont moins pertinentes pour les politiques car elles accordent ACL-related des autorisations (s3:GetBucketAcl, s3:GetObjectAcls3:PutBucketAcl, ets3:PutObjectAcl).

Exemple— LISEZ l'ACL pour un bucket

Si votre bucket possède une READ ACL qui Compte AWS 111122223333 autorise la liste du contenu de votre bucket, vous pouvez écrire une politique de bucket qui accorde s3:ListBucket s3:ListBucketVersions des s3:ListBucketMultipartUploads autorisations pour votre bucket.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Permission to list the objects in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }
Exemple— READ ACL pour chaque objet d'un bucket

Si chaque objet de votre bucket possède une READ ACL qui en autorise l'accès Compte AWS 111122223333, vous pouvez rédiger une politique de bucket qui s3:GetObjectVersion accorde s3:GetObject et autorise ce compte pour chaque objet de votre bucket.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Read permission for every object in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Cet exemple d’élément de ressource accorde l’accès à un objet spécifique.

"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"
Exemple— ACL WRITE qui accorde l'autorisation d'écrire des objets dans un bucket

Si votre compartiment possède une WRITE ACL qui Compte AWS 111122223333 autorise l'écriture d'objets dans votre compartiment, vous pouvez rédiger une politique de compartiment qui accorde s3:PutObject l'autorisation pour votre compartiment.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Permission to write objects to a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Utilisation de la console S3 pour réviser et migrer les autorisations ACL

Pour passer en revue les autorisations ACL d’un compartiment
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Compartiments, sélectionnez le nom de votre compartiment.

  3. Sélectionnez l’onglet Autorisations.

  4. Sous Access control list (ACL) (Liste de contrôle d’accès [ACL]), vérifiez les autorisations ACL de votre compartiment.

Pour passer en revue les autorisations ACL d’un objet
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Compartiments, choisissez le nom du compartiment qui contient votre objet.

  3. Dans la liste Objets, choisissez le nom de votre objet.

  4. Sélectionnez l’onglet Autorisations.

  5. Sous Access control list (ACL) (Liste de contrôle d’accès [ACL]), vérifiez les autorisations ACL de votre objet.

Pour migrer les autorisations ACL et mettre à jour la liste ACL de votre compartiment
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans la liste Compartiments, sélectionnez le nom de votre compartiment.

  3. Dans l’onglet Autorisations, sous Stratégie de compartiment, choisissez Modifier.

  4. Dans la boîte Policy (Stratégie), ajoutez ou mettez à jour la stratégie de compartiment.

    Si vous souhaitez consulter des exemples de stratégies de compartiment, consultez Exemples de stratégies de compartiment et Exemples de cas d’utilisation.

  5. Sélectionnez Enregistrer les modifications.

  6. Mettez à jour la liste ACL de votre compartiment pour supprimer les autorisations ACL à d’autres groupes ou Comptes AWS.

  7. Appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets.

Utilisation de AWS CLI pour vérifier et migrer les autorisations ACL

  1. Pour renvoyer l'ACL du bucket correspondant à votre bucket, utilisez la get-bucket-acl AWS CLI commande suivante :

    aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket

    Par exemple, cette liste ACL de compartiment accorde l’accès en WRITE et en READ à un compte tiers. Dans cette liste ACL, le compte tiers est identifié par l’ID d’utilisateur canonique. Pour appliquer le paramètre Propriétaire du compartiment appliqué et désactiver les listes ACL, vous devez migrer ces autorisations pour le compte tiers vers une stratégie de compartiment.

    { "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "WRITE" } ] }

    Pour d’autres exemples de listes ACL, voir Exemples de cas d’utilisation.

  2. Migrez les autorisations ACL de votre compartiment vers une stratégie de compartiment :

    Cet exemple de stratégie de compartiment accorde des autorisations s3:PutObject et s3:ListBucket pour un compte tiers. Dans la politique du compartiment, le compte tiers est identifié par l' Compte AWS ID (111122223333).

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyForCrossAccountAllowUpload", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

    Si vous souhaitez consulter d’autres exemples de stratégies de compartiment, consultez Exemples de stratégies de compartiment et Exemples de cas d’utilisation.

  3. Pour renvoyer l'ACL pour un objet spécifique, utilisez la get-object-acl AWS CLI commande.

    aws s3api get-object-acl --bucket amzn-s3-demo-bucket --key EXAMPLE-OBJECT-KEY
  4. Si nécessaire, migrez les autorisations ACL d’objet vers votre stratégie de compartiment.

    Cet exemple d’élément de ressource accorde l’accès à un objet spécifique dans une stratégie de compartiment.

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-OBJECT-KEY"
  5. Réinitialisez la liste ACL de votre compartiment à la liste ACL par défaut.

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  6. Appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets.

Identifier toutes les demandes qui ont nécessité une liste ACL pour l’autorisation

Pour identifier les demandes Amazon S3 qui ont nécessité des listes ACL pour l'autorisation, vous pouvez utiliser la valeur aclRequired dans les journaux d'accès du serveur Amazon S3 ou AWS CloudTrail. Si la demande a nécessité une liste ACL pour l’autorisation ou si vous avez des demandes PUT qui spécifient une liste ACL, la chaîne est Yes. Si aucune ACL n'est requise, ou si vous définissez une ACL bucket-owner-full-control prédéfinie, ou si les demandes sont autorisées par votre politique de compartiment, la chaîne de aclRequired valeur est « - » dans les journaux d'accès au serveur Amazon S3 et est absente dans CloudTrail. Pour plus d’informations sur les valeurs aclRequired attendues, consultez Valeurs ACL requises pour les demandes Amazon S3 courantes.

Si vous avez PutBucketAcl ou demandez PutObjectAcl des en-têtes qui accordent des ACL-based autorisations, à l'exception de l'ACL bucket-owner-full-control prédéfinie, vous devez supprimer ces en-têtes avant de pouvoir désactiver les ACL. Dans le cas contraire, vos demandes échoueront.

Pour toutes les autres demandes nécessitant une liste ACL pour l’autorisation, migrez ces autorisations de liste ACL vers des stratégies de compartiment. Supprimez ensuite toutes les listes ACL du compartiment avant d’activer le paramètre appliqué par le propriétaire du compartiment.

Note

Ne supprimez pas les listes ACL d’objet. Sinon, les applications qui s’appuient sur des listes ACL d’objet pour les autorisations perdent l’accès.

Si vous constatez qu’aucune demande ne nécessite une liste ACL pour l’autorisation, vous pouvez procéder à la désactivation des listes ACL. Pour plus d’informations sur l’identification des demandes, consultez Utilisation des journaux d’accès au serveur Amazon S3 pour identifier des demandes et Identification des demandes Amazon S3 à l'aide CloudTrail.

Vérifiez et mettez à jour les politiques relatives aux compartiments qui utilisent des clés de ACL-related condition

Une fois que vous avez appliqué le paramètre Propriétaire du compartiment appliqué pour désactiver les listes ACL, les nouveaux objets peuvent être téléchargés dans votre compartiment uniquement si la demande utilise des listes ACL de contrôle total du propriétaire du compartiment ou ne spécifie pas de liste ACL. Avant de désactiver les ACL, consultez votre politique de compartiment en matière de clés de ACL-related condition.

Si votre politique de compartiment utilise une clé de ACL-related condition pour exiger l'bucket-owner-full-controlACL prédéfinie (par exemple,s3:x-amz-acl), vous n'avez pas besoin de mettre à jour votre politique de compartiment. La stratégie de compartiment suivante utilise la s3:x-amz-acl pour exiger la liste ACL bucket-owner-full-control prédéfinie pour les demandes PutObject S3. Cette politique demande encore au rédacteur d’objets qu’il spécifie la liste ACL bucket-owner-full-control prédéfinie. Toutefois, les compartiments dont les listes ACL sont désactivées acceptent toujours cette liste ACL, de sorte que les demandes continuent d’aboutir sans modification côté client requise.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OnlyAllowWritesToMyBucketWithBucketOwnerFullControl", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/ExampleUser" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

Toutefois, si votre politique de compartiment utilise une clé de ACL-related condition qui nécessite une autre ACL, vous devez supprimer cette clé de condition. Cet exemple de stratégie de compartiment nécessite la liste ACL public-read pour les demandes S3 PutObject et doit donc être mis à jour avant de désactiver les listes ACL.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Only allow writes to my bucket with public read access", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/ExampleUser" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "public-read" } } } ] }

Exemples de cas d’utilisation

Les exemples suivants vous montrent comment migrer les autorisations ACL vers des stratégies de compartiment pour des cas d’utilisation spécifiques.

Octroi de l’accès au groupe de livraison des journaux S3 pour la journalisation des accès au serveur

Si vous souhaitez appliquer le paramètre Propriétaire du compartiment appliqué pour désactiver les listes ACL pour un compartiment de destination de journalisation des accès au serveur (également appelé compartiment cible), vous devez migrer les autorisations ACL de compartiment pour le groupe de livraison des journaux S3 vers le principal du service de journalisation (logging.s3.amazonaws.com) dans une stratégie de compartiment. Pour plus d’informations sur les autorisations de la diffusion des journaux, consultez Autorisations de diffusion de journaux.

Ce compartiment ACL accorde un accès en WRITE et en READ_ACP au groupe de mise à disposition des journaux S3 :

{ "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "WRITE" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "READ_ACP" } ] }
Pour migrer les autorisations ACL du compartiment pour le groupe de mise à disposition du journal S3 vers le principal du service de journalisation dans une stratégie de compartiment
  1. Ajoutez la stratégie de compartiment suivante à votre compartiment de destination, en remplaçant les exemples de valeurs.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { { "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/EXAMPLE-LOGGING-PREFIX*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME" }, "StringEquals": { "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID" } } } ] }
  2. Réinitialisez la liste ACL de votre compartiment de destination sur la liste ACL par défaut.

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  3. Appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d’objets à votre compartiment de destination.

Accordez un accès public en lecture aux objets se trouvant dans un compartiment.

Si vos listes ACL d’objet accordent un accès public en lecture à tous les objets de votre compartiment, vous pouvez migrer ces autorisations ACL vers une stratégie de compartiment.

Cette liste ACL d’objet accorde un accès public en lecture à un objet dans un compartiment :

{ "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
Pour migrer les autorisations ACL publiques en lecture vers une stratégie de compartiment
  1. Pour accorder un accès public en lecture à tous les objets de votre compartiment, ajoutez la stratégie de compartiment suivante, en remplaçant les exemples de valeurs.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

    Pour accorder l’accès public à un objet spécifique dans une stratégie de compartiment, utilisez le format suivant pour l’élément Resource.

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/OBJECT-KEY"

    Pour accorder l’accès public à tous les objets avec un préfixe spécifique, utilisez le format suivant pour l’élément Resource.

    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/PREFIX/*"
  2. Appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d'objets

Accordez à Amazon ElastiCache (Redis OSS) l'accès à votre compartiment S3

Vous pouvez exporter votre sauvegarde ElastiCache (Redis OSS) vers un compartiment S3, ce qui vous permet d'accéder à la sauvegarde depuis l'extérieur ElastiCache. Pour exporter votre sauvegarde vers un compartiment S3, vous devez autoriser ElastiCache la copie d'un instantané dans le compartiment. Si vous avez accordé des autorisations ElastiCache à une ACL de compartiment, vous devez migrer ces autorisations vers une politique de compartiment avant d'appliquer le paramètre imposé par le propriétaire du compartiment pour désactiver les ACL. Pour plus d'informations, consultez la section Accorder l' ElastiCache accès à votre compartiment Amazon S3 dans le guide de ElastiCache l'utilisateur Amazon.

L'exemple suivant montre les autorisations ACL du bucket qui accordent des autorisations à ElastiCache.

{ "Owner": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "WRITE" }, { "Grantee": { "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ_ACP" } ] }
Pour migrer les autorisations ACL du bucket pour ElastiCache (Redis OSS) vers une politique de bucket
  1. Ajoutez la stratégie de compartiment suivante à votre compartiment, en remplaçant les exemples de valeurs.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "Region.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }
  2. Réinitialisez la liste ACL de votre compartiment à la liste ACL par défaut :

    aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --acl private
  3. Appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d'objets