Requisitos previos para desactivar las ACL - Amazon Simple Storage Service

Requisitos previos para desactivar las ACL

Si la ACL del bucket concede acceso fuera de la Cuenta de AWS, antes de desactivar las ACL, debe migrar los permisos de ACL del bucket a la política de bucket y restablecer la ACL del bucket a la ACL privada predeterminada. Si no migra estas ACL de bucket, la solicitud de aplicar la configuración Aplicada al propietario del bucket para desactivar las ACL genera un error y devuelve el código de error InvalidBucketAclWithObjectOwnership. También le recomendamos que revise los permisos de la ACL de objetos y los migre a la política de bucket. Para obtener más información acerca de otros requisitos previos sugeridos, consulte Requisitos previos para desactivar las ACL.

Cada una de las ACL de bucket y objeto existentes tiene un equivalente en una política de IAM. Los siguientes ejemplos de políticas de bucket muestran cómo los permisos READ y WRITE para las ACL de bucket y objeto se asignan a los permisos de IAM. Para obtener más información acerca de cómo se traduce cada ACL en permisos de IAM, consulte Mapeo de permisos de ACL y permisos de política de acceso.

Para revisar y migrar los permisos de ACL a las políticas de bucket, consulte los siguientes temas.

Ejemplos de políticas de bucket

En estas políticas de bucket de ejemplo, se muestra cómo migrar los permisos READ y WRITE de las ACL de bucket y objeto para una Cuenta de AWS de terceros a una política de bucket. Las ACL READ_ACP y WRITE_ACP son menos relevantes para las políticas porque conceden permisos relacionados con ACL (s3:GetBucketAcl, s3:GetObjectAcl, s3:PutBucketAcl y s3:PutObjectAcl).

ejemplo : ACL READ para un bucket

Si su bucket tenía una ACL READ que concede a la Cuenta de AWS 111122223333 permiso para mostrar el contenido de su bucket, puede escribir una política de buckets que conceda los permisos s3:ListBuckets3:ListBucketVersions y s3:ListBucketMultipartUploads para su 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" } ] }
ejemplo : ACL READ para todos los objetos de un bucket

Si cada objeto del bucket tiene una ACL READ que concede acceso a la Cuenta de AWS 111122223333, puede escribir una política de buckets que conceda permisos s3:GetObject y s3:GetObjectVersion a esta cuenta para cada objeto del bucket.

{ "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/*" } ] }

Este elemento de recurso de ejemplo concede acceso a un objeto específico.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/OBJECT-KEY"
ejemplo : ACL WRITE que concede permisos para escribir objetos en un bucket

Si el bucket tiene una ACL WRITE que concede a Cuenta de AWS 111122223333 permiso para escribir objetos en el bucket, puede escribir una política de buckets que conceda permiso s3:PutObject para el bucket.

{ "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/*" } ] }

Uso de la consola de S3 para revisar y migrar permisos de ACL

Revisar permisos de ACL de un bucket
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista de Buckets, seleccione el nombre del bucket.

  3. Elija la pestaña Permisos.

  4. En Access control list (ACL) (Lista de control de acceso [ACL]), revise los permisos de ACL del bucket.

Revisar permisos de ACL de un objeto
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Buckets, elija el nombre del bucket que contiene el objeto.

  3. En la lista Objects (Objetos), elija el nombre del objeto.

  4. Elija la pestaña Permisos.

  5. En Access control list (ACL) (Lista de control de acceso [ACL]), revise los permisos de ACL del objeto.

Para migrar los permisos de ACL y actualizar la ACL del bucket
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista de Buckets, seleccione el nombre del bucket.

  3. En la pestaña Permissions (Permisos), en Bucket policy (Política de bucket), elija Edit (Editar).

  4. En el cuadro Policy (Política), agregue o actualice la política de bucket.

    Para obtener ejemplos de políticas de bucket, consulte Ejemplos de políticas de bucket y Tutoriales de ejemplo.

  5. Elija Guardar cambios.

  6. Update your bucket ACL (Actualización de la ACL del bucket) para eliminar las concesiones de ACL a otros grupos o Cuentas de AWS.

  7. Aplicar la opción Aplicada al propietario del bucket de Propiedad del objeto.

Uso de la AWS CLI para revisar y migrar permisos de ACL

  1. Para devolver la ACL de bucket del bucket, utilice el comando get-bucket-acl de la AWS CLI:

    aws s3api get-bucket-acl --bucket DOC-EXAMPLE-BUCKET

    Por ejemplo, esta ACL de bucket concede acceso WRITE y READ a una cuenta de terceros. En esta ACL, la cuenta de terceros se identifica mediante el ID de usuario canónico. Para aplicar la configuración Aplicada al propietario del bucket y desactivar las ACL, debe migrar estos permisos para la cuenta de terceros a una política de bucket.

    { "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" } ] }

    Para ver otras ACL de ejemplo, consulte Tutoriales de ejemplo.

  2. Migración de los permisos de ACL del bucket a una política de bucket:

    En esta política de bucket de ejemplo, se concede permisos s3:PutObject y s3:ListBucket para una cuenta de terceros. En la política de bucket, la cuenta de terceros se identifica mediante el ID de la Cuenta de AWS (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/*" } ] }

    Para obtener más ejemplos de políticas de bucket, consulte Ejemplos de políticas de bucket y Tutoriales de ejemplo.

  3. Para devolver la ACL de un objeto específico, utilice el comando get-object-acl de la AWS CLI.

    aws s3api get-object-acl --bucket DOC-EXAMPLE-BUCKET --key EXAMPLE-OBJECT-KEY
  4. Si es necesario, migre los permisos de ACL de objetos a la política de bucket.

    Este elemento de recurso de ejemplo concede acceso a un objeto específico de una política de bucket.

    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/EXAMPLE-OBJECT-KEY"
  5. Restablezca la ACL del bucket a la ACL predeterminada.

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  6. Aplicar la opción Aplicada al propietario del bucket de Propiedad del objeto.

Tutoriales de ejemplo

En los siguientes ejemplos, se muestra cómo migrar los permisos de ACL a las políticas de bucket para casos de uso específicos.

Concesión de acceso al grupo de entrega de registros de S3 para el registro de acceso al servidor

Si desea aplicar la configuración Aplicada al propietario del bucket para desactivar los ACL de un bucket de destino de registro de acceso al servidor, debe migrar los permisos de ACL del bucket para el grupo de entrega de registros de S3 a la entidad principal del servicio de registro (logging.s3.amazonaws.com) en una política de bucket. Para obtener más información acerca de los permisos de entrega de registros, consulte Permisos para entrega de registros.

Esta ACL de bucket concede acceso WRITE y READ_ACP al grupo entrega de registros de 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" } ] }
Para migrar los permisos de ACL del bucket para el grupo de entrega de registros de S3 a la entidad principal del servicio de registro en una política de bucket
  1. Agregue la siguiente política de bucket al bucket de destino, sustituyendo los valores de ejemplo.

    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. Restablezca la ACL del bucket destino a la ACL predeterminada.

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  3. Aplicar la opción Aplicada al propietario del bucket de Propiedad de objetos en el bucket de destino.

Concesión de acceso público de lectura para los objetos de un bucket

Si las ACL de objetos conceden acceso público de lectura a todos los objetos del bucket, puede migrar estos permisos de ACL a una política de bucket.

Esta ACL de objeto concede acceso público de lectura a un objeto de un bucket:

{ "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" } ] }
Para migrar los permisos de ACL de lectura pública a una política de bucket
  1. Para conceder acceso público de lectura a todos los objetos del bucket, agregue la siguiente política de bucket y reemplace los valores de ejemplo.

    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/*" ] } ] }

    Para conceder acceso público a un objeto específico de una política de bucket, utilice el siguiente formato para el elemento Resource.

    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/OBJECT-KEY"

    Para conceder acceso público a todos los objetos que tengan un prefijo determinado, utilice el siguiente formato para el elemento Resource.

    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/PREFIX/*"
  2. Aplicar la opción Aplicada al propietario del bucket de Propiedad del objeto.

Concesión de acceso a Amazon ElastiCache for Redis al bucket de S3

Puede exportar la copia de seguridad de ElastiCache for Redis a un bucket de S3, lo que le permite tener acceso a la copia de seguridad desde fuera de ElastiCache. Para exportar la copia de seguridad a un bucket de S3, debe conceder permisos a ElastiCache para copiar una instantánea en el bucket. Si ha concedido permisos a ElastiCache en una ACL de bucket, debe migrar esos permisos a una política de bucket antes de aplicar la configuración de propietario del bucket obligatorio para desactivar las ACL. Para obtener más información, consulte Concesión de acceso a ElastiCache al bucket de Amazon S3 en la Guía del usuario de Amazon ElastiCache.

En el ejemplo siguiente se muestran los permisos de ACL del bucket que conceden permisos a 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" } ] }
Para migrar los permisos de ACL del bucket para ElastiCache for Redis a una política de bucket
  1. Agregue la siguiente política de bucket al bucket, sustituyendo los valores de ejemplo.

    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. Restablezca la ACL del bucket a la ACL predeterminada:

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  3. Aplicar la opción Aplicada al propietario del bucket de Propiedad del objeto.