Configuración de la ACL - Amazon Simple Storage Service

Configuración de la ACL

En esta sección, se explica cómo administrar permisos de acceso para buckets y objetos de S3 con listas de control de acceso (ACL). Puede agregar concesiones a su ACL de recursos con la AWS Management Console, AWS Command Line Interface (CLI), la API de REST o los SDK de AWS.

Los permisos para los buckets y los objetos son independientes entre sí. Un objeto no hereda los permisos del bucket en el que se encuentra. Por ejemplo, si crea un bucket y concede permisos de escritura a un usuario, no puede obtener acceso a los objetos de ese usuario a no ser que este le conceda acceso explícitamente.

Puede otorgar permisos a otros usuarios de Cuenta de AWS o a grupos predefinidos. El usuario o grupo al que le concede permisos se denomina beneficiario. De forma predeterminada, el propietario, que es la Cuenta de AWS que creó el bucket, tiene permisos completos.

Cada permiso que concede a un usuario o grupo añade una entrada a la ACL que está asociada con el bucket. La ACL incluye los permisos concedidos, que identifican al beneficiario y permiso concedido.

De forma predeterminada, cuando otra Cuenta de AWS carga un objeto en el bucket de S3, esa cuenta (el escritor del objeto) es propietario del objeto, tiene acceso a él y puede conceder acceso a él a otros usuarios a través de ACL. Puede utilizar la propiedad de objetos para cambiar este comportamiento predeterminado de modo que las ACL estén desactivadas y, como propietario del bucket, tenga automáticamente la propiedad de todos los objetos del bucket. Como resultado, el control de acceso de los datos se basa en políticas, tales como políticas de IAM, políticas de bucket de S3, políticas de puntos de conexión de nube privada virtual (VPC) y políticas de control de servicios (SCP) de AWS Organizations.

La mayoría de los casos de uso modernos de Amazon S3 ya no requieren el uso de ACL. Le recomendamos desactivar las ACL, excepto en circunstancias inusuales en las que necesite controlar el acceso de cada objeto de manera individual. Con la propiedad de objetos, puede desactivar las ACL y confiar en políticas para el control de acceso. Al desactivar las ACL, puede mantener fácilmente un bucket con objetos cargados por diferentes Cuentas de AWS. Como propietario del bucket, posee todos los objetos del bucket y puede administrar el acceso a ellos mediante políticas. Para obtener más información, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket.

importante

Si el bucket utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership, debe utilizar políticas para conceder acceso al bucket y a los objetos que contiene. Las solicitudes de configuración de ACL o de actualización de ACL fallan y devuelven el código de error AccessControlListNotSupported. Las solicitudes de lectura de ACL siguen siendo compatibles.

aviso

Le recomendamos encarecidamente que evite otorgar acceso de escritura al grupo Everyone (public access) (Todos [acceso público]) o al grupo Authenticated Users group (all AWS authenticated users) (Grupo de usuarios autenticados [todos los usuarios autenticados de AWS]). Para obtener más información sobre los efectos de conceder acceso de escritura a estos grupos, consulte Grupos predefinidos de Amazon S3.

En la consola, se muestran las concesiones de acceso combinadas para los beneficiarios duplicados. Para ver la lista completa de ACL, utilice la API de REST de Amazon S3, la AWS CLI, o bien los SDK de AWS.

En la tabla siguiente se muestran los permisos de ACL que puede configurar para buckets en la consola de Amazon S3.

Permisos de ACL de la consola de Amazon S3 para buckets
Permiso de la consola Permiso de ACL a los datos
Objetos: lista READ Le permite al beneficiario crear una lista de objetos en el bucket
Objetos: escribir WRITE Permite al beneficiario crear nuevos objetos en el bucket. Para los propietarios de bucket y objetos de objetos existentes, también permite eliminar y sobreescribir esos objetos.
ACL del bucket: leer READ_ACP Le permite al beneficiario leer la ACL de bucket
Bucket de ACL: escribir WRITE_ACP Le permite al beneficiario escribir la ACL para el bucket correspondiente.
Todos (acceso público): objetos - lista READ Otorga acceso público de lectura para los objetos del bucket. Cuando concede acceso a la lista a Todos (acceso público), cualquier persona puede acceder a los objetos en el bucket.
Todos (acceso público): ACL del bucket - Leer READ_ACP Otorga acceso público de lectura para el ACL del bucket. Cuando concede acceso de lectura a Todos (acceso público), cualquier persona puede acceder al ACL del bucket.

Para obtener más información acerca de los permisos de ACL, consulte Información general de las Listas de control de acceso (ACL).

importante

Si el bucket utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership, debe utilizar políticas para conceder acceso al bucket y a los objetos que contiene. Las solicitudes de configuración de ACL o de actualización de ACL fallan y devuelven el código de error AccessControlListNotSupported. Las solicitudes de lectura de ACL siguen siendo compatibles.

Para establecer permisos de ACL de un bucket

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

  2. En la lista Buckets (Buckets), elija el nombre del bucket para el que desea configurar permisos.

  3. Elija Permissions (Permisos).

  4. En Access control list (Lista de control de acceso), elija Edit (Editar).

    Puede editar los siguientes permisos de ACL para el bucket:

    Objetos

    • List (Lista): permite a un beneficiario enumerar los objetos del bucket.

    • Write (Escritura): permite al beneficiario crear nuevos objetos en el Bucket. Para los propietarios de bucket y objetos de objetos existentes, también permite eliminar y sobreescribir esos objetos.

      En la consola de S3, solo puede otorgar acceso de escritura al grupo de entrega de registros de S3 y al propietario del bucket (su Cuenta de AWS). Recomendamos encarecidamente que no conceda acceso de escritura a otros beneficiarios. Sin embargo, si necesita otorgar acceso de escritura a otros beneficiarios, puede utilizar la AWS CLI, los SDK de AWS o la API de REST.

    ACL del bucket

    • Read (Lectura): permite al beneficiario leer la ACL del bucket.

    • Write (Escritura): permite al beneficiario escribir la ACL para el bucket aplicable.

  5. Para cambiar los permisos del propietario del bucket, al lado de Bucket owner (your Cuenta de AWS) (Propietario del bucket [la Cuenta de AWS]), desactive o seleccione alguno de los siguientes permisos de ACL:

    • Objetos: List (Lista) o Write (Escribir)

    • ACL de bucket: Read (Lectura) o Write (Escritura)

    El propietario hace referencia al usuario raíz de la Cuenta de AWS, no a un usuario de AWS Identity and Access Management (IAM). Para obtener más información acerca del usuario raíz, consulte Usuario raíz de la Cuenta de AWS en la Guía del usuario de IAM.

  6. Para otorgar o quitar permisos para el público en general (todos en Internet), al lado de Everyone (public access) (Todos [acceso público]), desactive o seleccione uno de los siguientes permisos de ACL:

    • Objects (Objetos): List (Lista)

    • Bucket ACL (ACL del bucket): Read (Leer)

    aviso

    Extreme las precauciones a la hora de otorgar al grupo Everyone (Todos) acceso público a su bucket de S3. Al otorgar acceso a este grupo, cualquier persona puede acceder a su bucket. Se recomienda encarecidamente que no otorgue nunca ningún tipo de acceso de escritura público en su bucket de S3.

  7. Para otorgar o quitar permisos a cualquier persona con una Cuenta de AWS, al lado de Authenticated Users group (anyone with an Cuenta de AWS) (Grupo de usuarios autenticados [cualquiera que tenga una Cuenta de AWS]), desactive o seleccione alguno de los siguientes permisos de ACL:

    • Objects (Objetos): List (Lista)

    • Bucket ACL (ACL del bucket): Read (Leer)

  8. Para conceder o quitar permisos para que Amazon S3 escriba registros de acceso al servidor en el bucket, en el S3 log delivery group (Grupo de entrega de registros de S3), desactive o seleccione uno de los siguientes permisos de ACL:

    • Objetos: List (Lista) o Write (Escribir)

    • ACL de bucket: Read (Lectura) o Write (Escritura)

      Si un bucket está configurado como bucket de destino para recibir registros de acceso, los permisos del bucket deben permitir al grupo Log Delivery (Envío de registros) acceso de escritura al bucket. Cuando se activa el registro de acceso al servidor en un bucket, la consola de Amazon S3 concede acceso de escritura al grupo Log Delivery (Envío de registros) para el bucket de destino que se ha elegido para recibir los registros. Para obtener más información sobre el registro de acceso del servidor, consulte Habilitación del registro de acceso al servidor de Amazon S3.

  9. Para otorgar acceso a otra Cuenta de AWS, realice lo siguiente:

    1. Elija Add grantee (Agregar beneficiario).

    2. En el cuadro Grantee (Beneficiario), ingrese el ID canónico de la otra Cuenta de AWS.

    3. Seleccione uno de los siguientes permisos de ACL:

      • Objetos: List (Lista) o Write (Escribir)

      • ACL de bucket: Read (Lectura) o Write (Escritura)

    aviso

    Cuando otorgue a otras Cuentas de AWS acceso a sus recursos, tenga en cuenta que las Cuentas de AWS pueden delegar sus permisos a los usuarios de sus cuentas. Esto se conoce como acceso entre cuentas. Para obtener información acerca del uso del acceso entre cuentas, consulte Creación de un rol para delegar permisos a un usuario de IAM en la guía del usuario de IAM.

  10. Para eliminar el acceso de otra Cuenta de AWS, en Access for other Cuentas de AWS (Acceso para otras Cuentas de AWS), seleccione Remove (Eliminar).

  11. Para guardar los cambios, elija Save changes (Guardar cambios).

En la consola, se muestran las concesiones de acceso combinadas para los beneficiarios duplicados. Para ver la lista completa de ACL, utilice la API de REST de Amazon S3, la AWS CLI, o bien los SDK de AWS. En la tabla siguiente se muestran los permisos de ACL que puede configurar para objetos en la consola de Amazon S3.

Permisos de ACL de consola de Amazon S3 para objetos
Permiso de la consola Permiso de ACL a los datos
Objeto - Leer READ Le permite al beneficiario leer los datos del objeto y sus metadatos.
ACL de objeto - Leer READ_ACP Le permite al beneficiario leer la ACL de objeto.
ACL de objeto - Escribir WRITE_ACP Le permite al beneficiario escribir la ACL para el objeto correspondiente

Para obtener más información acerca de los permisos de ACL, consulte Información general de las Listas de control de acceso (ACL).

importante

Si el bucket utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership, debe utilizar políticas para conceder acceso al bucket y a los objetos que contiene. Las solicitudes de configuración de ACL o de actualización de ACL fallan y devuelven el código de error AccessControlListNotSupported. Las solicitudes de lectura de ACL siguen siendo compatibles.

Para configurar permisos de un objeto

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

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

  3. En la lista Objects (Objetos), seleccione el nombre del objeto para el que desea configurar los permisos.

  4. Elija Permissions.

  5. En lista de control de acceso (ACL), elija Edit (Editar).

    Puede editar los siguientes permisos de ACL para el objeto:

    Objeto

    • Lectura : permite al beneficiario leer los datos del objeto y los metadatos.

    ACL de objeto

    • Lectura : permite al beneficiario leer la ACL del objeto.

    • Escritura : permite al beneficiario escribir la ACL para el objeto aplicable. En la consola de S3, solo puede otorgar acceso de escritura al propietario del bucket (su Cuenta de AWS). Recomendamos encarecidamente que no conceda acceso de escritura a otros beneficiarios. Sin embargo, si necesita otorgar acceso de escritura a otros beneficiarios, puede utilizar la AWS CLI, los SDK de AWS o la API de REST.

  6. Puede administrar permisos de acceso a objetos para lo siguiente:

    1. Acceso para el propietario del objeto

      El propietario hace referencia al usuario raíz Cuenta de AWS y no a un usuario AWS Identity and Access Management (IAM). Para obtener más información acerca del usuario raíz, consulte Usuario raíz de la Cuenta de AWS en la Guía del usuario de IAM.

      Para cambiar los permisos de acceso a objetos del propietario, en Access for object owner (Acceso para el propietario del objeto), elija Your AWS Account (owner) (Su cuenta de AWS [propietario]).

      Marque las casillas de verificación para los permisos que desea cambiar y, a continuación, elija Save (Guardar).

    2. Acceso para otras Cuentas de AWS

      Para otorgar permisos a un usuario de AWS desde una Cuenta de AWS diferente, en Access for other Cuentas de AWS (Acceso para otras Cuentas de AWS), elija Add account (Agregar cuenta). En el campo Enter an ID (Ingresar un ID), ingrese el ID canónico del usuario de AWS al que desea otorgar permisos para el objeto. Para obtener información acerca de cómo buscar un ID canónico, consulte Identificadores de Cuenta de AWS en la Referencia general de Amazon Web Services. Puede añadir hasta 99 usuarios.

      Tilde las casillas de verificación para los permisos que desea conceder al usuario y luego seleccione Save (Guardar). Para ver información acerca de los permisos, seleccione los iconos de ayuda.

    3. Acceso público

      Para conceder acceso a un objeto al público en general (a todo el mundo), en Public access (Acceso público), elija Everyone (Todos). Si se conceden permisos de acceso público, cualquier persona puede acceder al objeto desde cualquier lugar.

      Marque las casillas de verificación para los permisos que desea conceder y, a continuación, elija Save (Guardar).

      aviso
      • Extreme las precauciones a la hora de otorgar al grupo Everyone (Todos) acceso anónimos a sus objetos de Amazon S3. Al otorgar acceso a este grupo, cualquier persona puede acceder a su objeto. Si necesita otorgar acceso a todo el mundo, le recomendamos encarecidamente que solo conceda permisos para Read objects (Leer objetos).

      • Recomendamos encarecidamente que no conceda permisos de objeto de escritura sobre objetos al grupo Everyone (Todos). Al hacerlo permitirá que cualquier persona sobrescriba los permisos de ACL del objeto.

Esta sección ofrece ejemplos de cómo configurar las concesiones de la lista de control de acceso (ACL) para buckets y objetos.

importante

Si el bucket utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership, debe utilizar políticas para conceder acceso al bucket y a los objetos que contiene. Las solicitudes de configuración de ACL o de actualización de ACL fallan y devuelven el código de error AccessControlListNotSupported. Las solicitudes de lectura de ACL siguen siendo compatibles.

Java

Esta sección ofrece ejemplos de cómo configurar las concesiones de la lista de control de acceso (ACL) para buckets y objetos. El primer ejemplo crea un bucket con una ACL predefinida (consulte ACL predefinidas), crea una lista de concesiones de permisos personalizadas y luego reemplaza la ACL predefinida con una ACL que contiene las concesiones personalizadas. En el segundo ejemplo se muestra cómo modificar una ACL con el método AccessControlList.grantPermission().

ejemplo Crear un bucket y especificar una ACL predefinida que conceda permiso al grupo de entrega del registro de S3

Este ejemplo crea un bucket. En la solicitud, el ejemplo especifica una ACL predefinida que concede permiso al grupo Envío de archivos de registro para escribir registros en el bucket.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.IOException; import java.util.ArrayList; public class CreateBucketWithACL { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String userEmailForReadPermission = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .build(); // Create a bucket with a canned ACL. This ACL will be replaced by the setBucketAcl() // calls below. It is included here for demonstration purposes. CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName, clientRegion.getName()) .withCannedAcl(CannedAccessControlList.LogDeliveryWrite); s3Client.createBucket(createBucketRequest); // Create a collection of grants to add to the bucket. ArrayList<Grant> grantCollection = new ArrayList<Grant>(); // Grant the account owner full control. Grant grant1 = new Grant(new CanonicalGrantee(s3Client.getS3AccountOwner().getId()), Permission.FullControl); grantCollection.add(grant1); // Grant the LogDelivery group permission to write to the bucket. Grant grant2 = new Grant(GroupGrantee.LogDelivery, Permission.Write); grantCollection.add(grant2); // Save grants by replacing all current ACL grants with the two we just created. AccessControlList bucketAcl = new AccessControlList(); bucketAcl.grantAllPermissions(grantCollection.toArray(new Grant[0])); s3Client.setBucketAcl(bucketName, bucketAcl); // Retrieve the bucket's ACL, add another grant, and then save the new ACL. AccessControlList newBucketAcl = s3Client.getBucketAcl(bucketName); Grant grant3 = new Grant(new EmailAddressGrantee(userEmailForReadPermission), Permission.Read); newBucketAcl.grantAllPermissions(grant3); s3Client.setBucketAcl(bucketName, newBucketAcl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

ejemplo Actualizar la ACL en un objeto existente

En este ejemplo se actualiza la ACL en un objeto. En el ejemplo se realizan las siguientes tareas:

  • Recuperar una ACL de un objeto

  • Eliminar la ACL mediante la eliminación de todos los permisos existentes

  • Añadir dos permisos: acceso completo para el propietario y WRITE_ACP (consulte ¿Qué permisos puedo conceder?) para un usuario identificado por una dirección de correo electrónico

  • Guardar la ACL en el objeto

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.CanonicalGrantee; import com.amazonaws.services.s3.model.EmailAddressGrantee; import com.amazonaws.services.s3.model.Permission; import java.io.IOException; public class ModifyACLExistingObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; String emailGrantee = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Get the existing object ACL that we want to modify. AccessControlList acl = s3Client.getObjectAcl(bucketName, keyName); // Clear the existing list of grants. acl.getGrantsAsList().clear(); // Grant a sample set of permissions, using the existing ACL owner for Full Control permissions. acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()), Permission.FullControl); acl.grantPermission(new EmailAddressGrantee(emailGrantee), Permission.WriteAcp); // Save the modified ACL back to the object. s3Client.setObjectAcl(bucketName, keyName, acl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

ejemplo Crear un bucket y especificar una ACL predefinida que conceda permiso al grupo de entrega del registro de S3

Este ejemplo de código C# crea un bucket. En la solicitud, el código también especifica una ACL predefinida que concede permisos al grupo Envío de archivos de registro para escribir registros en el bucket.

Para obtener instrucciones sobre la creación y comprobación de un ejemplo funcional, consulte Ejecución de ejemplos de código .NET de Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingBucketACLTest { private const string newBucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateBucketUseCannedACLAsync().Wait(); } private static async Task CreateBucketUseCannedACLAsync() { try { // Add bucket (specify canned ACL). PutBucketRequest putBucketRequest = new PutBucketRequest() { BucketName = newBucketName, BucketRegion = S3Region.EUW1, // S3Region.US, // Add canned ACL. CannedACL = S3CannedACL.LogDeliveryWrite }; PutBucketResponse putBucketResponse = await client.PutBucketAsync(putBucketRequest); // Retrieve bucket ACL. GetACLResponse getACLResponse = await client.GetACLAsync(new GetACLRequest { BucketName = newBucketName }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

ejemplo Actualizar la ACL en un objeto existente

En este ejemplo de código C# se actualiza la ACL en un objeto existente. En el ejemplo se realizan las siguientes tareas:

  • Recuperar una ACL de un objeto.

  • Eliminar la ACL mediante la eliminación de todos los permisos existentes.

  • Añadir dos permisos: acceso completo para el propietario y WRITE_ACP para un usuario identificado por una dirección de correo electrónico.

  • Guardar la ACL enviando una solicitud PutAcl.

Para obtener instrucciones sobre la creación y comprobación de un ejemplo funcional, consulte Ejecución de ejemplos de código .NET de Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingObjectACLTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key name ***"; private const string emailAddress = "*** email address ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); TestObjectACLTestAsync().Wait(); } private static async Task TestObjectACLTestAsync() { try { // Retrieve the ACL for the object. GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest { BucketName = bucketName, Key = keyName }); S3AccessControlList acl = aclResponse.AccessControlList; // Retrieve the owner (we use this to re-add permissions after we clear the ACL). Owner owner = acl.Owner; // Clear existing grants. acl.Grants.Clear(); // Add a grant to reset the owner's full permission (the previous clear statement removed all permissions). S3Grant fullControlGrant = new S3Grant { Grantee = new S3Grantee { CanonicalUser = owner.Id }, Permission = S3Permission.FULL_CONTROL }; // Describe the grant for the permission using an email address. S3Grant grantUsingEmail = new S3Grant { Grantee = new S3Grantee { EmailAddress = emailAddress }, Permission = S3Permission.WRITE_ACP }; acl.Grants.AddRange(new List<S3Grant> { fullControlGrant, grantUsingEmail }); // Set a new ACL. PutACLResponse response = await client.PutACLAsync(new PutACLRequest { BucketName = bucketName, Key = keyName, AccessControlList = acl }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

Las API de Amazon S3 le permiten configurar una ACL cuando crea un bucket o un objeto. Amazon S3 también proporciona una API para configurar una ACL en un bucket o un objeto existente. Estas API le proporcionan los siguientes métodos para configurar una ACL:

  • Configuración de ACL con encabezados de solicitud: cuando envía una solicitud para crear un recurso (bucket u objeto), usted configura una ACL con los encabezados de solicitud. Con estos encabezados, usted puede especificar una ACL predefinida o especificar concesiones de forma explícita (identificación explícita del beneficiario y los permisos).

  • Configuración de ACL con cuerpo de solicitud: cuando envía una solicitud para configurar una ACL en un recurso existente, puede configurar la ACL en el encabezado de solicitud o en el cuerpo.

Para obtener información sobre la compatibilidad con la API de REST para administrar las ACL, consulte las siguientes secciones en la referencia de la API de Amazon Simple Storage Service:

importante

Si el bucket utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership, debe utilizar políticas para conceder acceso al bucket y a los objetos que contiene. Las solicitudes de configuración de ACL o de actualización de ACL fallan y devuelven el código de error AccessControlListNotSupported. Las solicitudes de lectura de ACL siguen siendo compatibles.

Encabezados de solicitud específicos de la lista de control de acceso (ACL)

Puede utilizar encabezados para conceder permisos en función de listas de control de acceso (ACL). De forma predeterminada, todos los objetos son privados. Solo el propietario tiene control de acceso total. Si agrega un objeto nuevo, puede otorgar permisos a Cuentas de AWS individuales o a grupos predefinidos de Amazon S3. Estos permisos se añaden a la lista de control de acceso (ACL) del objeto. Para obtener más información, consulte Información general de las Listas de control de acceso (ACL).

Con esta operación, puede conceder permisos de acceso mediante uno de estos dos métodos:

  • ACL predefinidas (x-amz-acl): Amazon S3 admite un conjunto de ACL conservadas, conocidas como "ACL predefinidas". Cada ACL predefinida tiene un conjunto predefinido de beneficiarios y permisos. Para obtener más información, consulte ACL predefinidas.

  • Permisos de acceso: para otorgar permisos de acceso de forma explícita a Cuentas de AWS o grupos específicos, utilice los encabezados siguientes. Cada encabezado se asigna a permisos específicos que Amazon S3 admite en una ACL. Para obtener más información, consulte Información general de las Listas de control de acceso (ACL). En el encabezado, especifique una lista de beneficiarios que obtienen el permiso específico.

    • x-amz-grant-read

    • x-amz-grant-write

    • x-amz-grant-read-acp

    • x-amz-grant-write-acp

    • x-amz-grant-full-control

Para obtener más información acerca de la administración de las ACL mediante la AWS CLI, consulte put-bucket-acl en la Referencia de comandos de la AWS CLI.

importante

Si el bucket utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership, debe utilizar políticas para conceder acceso al bucket y a los objetos que contiene. Las solicitudes de configuración de ACL o de actualización de ACL fallan y devuelven el código de error AccessControlListNotSupported. Las solicitudes de lectura de ACL siguen siendo compatibles.