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

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 migrez pas ces compartiments ACL, 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 obtenir plus d'informations sur les autres conditions préalables suggérées, consultez la page Conditions préalables à la désactivation des listes ACL.

Chacune de vos listes ACL de compartiment et d'objet existantes possède un équivalent dans une stratégie 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, veuillez consulter Mappage des autorisations de liste ACL et de stratégie d'accès.

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 stratégies de compartiment vous montrent comment effectuer la migration des autorisations de READ et de WRITE pour les compartiments et les objets pour un Compte AWS tiers vers une stratégie de compartiment. Les listes ACL READ_ACP et WRITE_ACP sont moins pertinentes pour les stratégies, car elles accordent des autorisations liées à l'ACL (s3:GetBucketAcl, s3:GetObjectAcl, s3:PutBucketAcl, et s3:PutObjectAcl).

Exemple  : liste ACL READ pour un compartiment

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.

{ "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:::DOC-EXAMPLE-BUCKET" } ] }
Exemple  : listes ACL READ pour chaque objet d'un compartiment

Si chaque objet de votre compartiment dispose d'une READ ACL qui autorise l'accès à Compte AWS 111122223333, vous pouvez rédiger une politique de compartiment qui accorde s3:GetObject des s3:GetObjectVersion autorisations à ce compte pour chaque objet de votre compartiment.

{ "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:::DOC-EXAMPLE-BUCKET/*" } ] }

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

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/OBJECT-KEY"
Exemple  : liste ACL WRITE qui accorde les autorisations d'écriture d'objets dans un compartiment

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.

{ "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:::DOC-EXAMPLE-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. Choisissez l’onglet Permissions (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 Buckets (Compartiments), choisissez le nom du compartiment qui contient votre objet.

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

  4. Choisissez l’onglet Permissions (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 Permissions (Autorisations), sous Bucket Policy (Stratégie de compartiment), choisissez Edit (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 politiques de compartiment, consultez Exemples de stratégies de compartiment et Exemples de démonstrations.

  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 du 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 DOC-EXAMPLE-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 politique de compartiment.

    { "Owner": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "WRITE" } ] }

    Pour d'autres exemples de listes ACL, voir Exemples de démonstrations.

  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 DOC-EXAMPLE-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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

    Si vous souhaitez consulter d'autres exemples de politiques de compartiment, consultez Exemples de stratégies de compartiment et Exemples de démonstrations.

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

    aws s3api get-object-acl --bucket DOC-EXAMPLE-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:::DOC-EXAMPLE-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 DOC-EXAMPLE-BUCKET --acl private
  6. Appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d'objets

Exemples de démonstrations

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 politique 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": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "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 politique de compartiment suivante à votre compartiment de destination, en remplaçant les exemples de valeurs.

    aws s3api put-bucket-policy --bucket DOC-EXAMPLE-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:::DOC-EXAMPLE-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 DOC-EXAMPLE-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": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "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 DOC-EXAMPLE-BUCKET --policy file://policy.json policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-BUCKET/PREFIX/*"
  2. Appliquez le paramètre Propriétaire du compartiment appliqué pour Propriété d'objets

Accordez ElastiCache à Amazon pour Redis l'accès à votre compartiment S3

Vous pouvez exporter votre sauvegarde ElastiCache pour Redis 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 liste 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": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "WRITE" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ_ACP" } ] }
Pour migrer les autorisations ACL du bucket ElastiCache pour Redis 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 DOC-EXAMPLE-BUCKET --policy file://policy.json policy.json: "Id": "Policy15397346", "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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }
  2. Réinitialisez la liste ACL de votre compartiment à la liste ACL par défaut :

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