Directrices de política de acceso - Amazon Simple Storage Service

Directrices de política de acceso

Amazon S3 admite políticas basadas en recursos y políticas de usuario para administrar el acceso a sus recursos de Amazon S3. Para obtener más información, consulte Administración del acceso a los recursos. Las políticas basadas en recursos incluyen políticas de bucket, lista de control de acceso (ACL) de buckets y ACL de objetos. En esta sección se describen escenarios específicos de uso de las políticas de acceso basadas en recursos para administrar el acceso a los recursos de Amazon S3.

Cuándo usar una política de acceso basada en ACL (ACL de bucket y objeto)

Tanto los buckets como los objetos tienen ACL asociadas que puede utilizar para conceder permisos.

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.

Cuándo usar una ACL de objeto

A continuación, figuran los escenarios en los que puede usar ACL de objetos para administrar permisos.

Los objetos no son propiedad del propietario del bucket.

Una ACL de objeto es la única forma de administrar el acceso a objetos que no son propiedad del propietario del bucket. Una Cuenta de AWS que sea propietaria de un bucket puede conceder a otra Cuenta de AWS permisos para cargar objetos. El propietario del bucket no es propietario de estos objetos. La Cuenta de AWS que creó el objeto debe conceder permisos mediante las ACL de objetos.

nota

Un propietario de un bucket no puede conceder permisos para objetos que no sean de su propiedad. Por ejemplo, una política de bucket que concede permisos de objeto solo se aplica a objetos que sean propiedad del propietario del bucket. Sin embargo, el propietario del bucket, quien paga las facturas, puede escribir una política de bucket para denegar el acceso a los objetos del bucket, independientemente de quién sea su propietario. El propietario del bucket también puede eliminar cualquier objeto del bucket.

Debe administrar los permisos en el nivel de objeto

Supongamos que los permisos varían según el objeto y que necesita administrar permisos en el nivel de objeto. Puede escribir una única instrucción de política que conceda permiso de lectura a una Cuenta de AWS sobre millones de objetos con un prefijo de nombre de clave específico. Por ejemplo, podría conceder permisos de lectura sobre objetos que comiencen por el prefijo de nombre de clave logs. Sin embargo, si sus permisos de acceso varían en función del objeto, conceder permisos a objetos individuales con una política de bucket puede no resultar práctico. Además, las políticas de bucket tienen un límite de tamaño de 20 KB.

En este caso, es posible que el uso de la ACL de objetos sea una buena alternativa. Sin embargo, incluso las ACL de objetos están limitadas a un máximo de 100 concesiones. Para obtener más información, consulte Información general de las Listas de control de acceso (ACL).

Las ACL de objetos solo controlan los permisos en el nivel de objeto

Solo hay una única política de bucket para la totalidad del bucket, pero las ACL de objetos se especifican por cada objeto.

Una Cuenta de AWS que sea propietaria de un bucket puede conceder a otra Cuenta de AWS el permiso para administrar una política de acceso. Esto permite que esa cuenta pueda cambiar cualquier aspecto de la política. Para administrar mejor los permisos, podría decidir no conceder un permiso demasiado amplio y en su lugar conceder a la otra cuenta solo los permisos READ-ACP y WRITE-ACP sobre un subconjunto de objetos. Así, se limita la cuenta para administrar permisos solamente sobre objetos específicos actualizando ACL de objetos individuales.

Si desea utilizar ACL para administrar los permisos de objeto y también desea poseer nuevos objetos escritos en el bucket, puede aplicar la configuración de propietario del bucket preferido de Object Ownership. Un bucket con la configuración de propietario del bucket preferido sigue aceptando y respetando las ACL de bucket y objeto. Con este ajuste, los nuevos objetos que se escriben con la ACL predefinida bucket-owner-full-control serán propiedad automática del propietario del bucket en lugar del escritor de los objetos. Todos los demás comportamientos de ACL siguen vigentes. Para requerir que todas las operaciones PUT de Amazon S3 incluyan la ACL predefinida bucket-owner-full-control, puede agregar una política de bucket que permita solo cargas de objetos mediante esta ACL.

Alternativas al uso de ACL

Además de las ACL, hay otras formas de que el propietario de un objeto pueda administrar los permisos de objeto:

  • Si la Cuenta de AWS que es propietaria del objeto también lo es del bucket, puede escribir una política de bucket para administrar los permisos del objeto.

  • Si la Cuenta de AWS propietaria del objeto quisiera conceder permisos a un usuario de la cuenta, puede hacerlo mediante una política de usuario.

  • Si, como propietario del bucket, desea tener automáticamente la propiedad y el control total sobre cada objeto del bucket, puede aplicar la configuración de propietario del bucket obligatorio de Object Ownership para desactivar las ACL. Como resultado, el control de acceso de los datos se basa en políticas. Para obtener más información, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket.

Cuándo usar una ACL de bucket

El único caso de uso recomendado para las ACL de bucket es conceder permisos a ciertos Servicios de AWS como la cuenta awslogsdelivery de Amazon CloudFront. Al crear o actualizar una distribución y habilitar el registro de CloudFront, CloudFront actualiza la ACL del bucket para conceder permisos FULL_CONTROL a la cuenta awslogsdelivery para que escriba registros en el bucket. Para obtener más información, consulte Permisos necesarios para configurar el registro estándar y acceder a los archivos de registro en la Guía para desarrolladores de Amazon CloudFront. Si el bucket que almacena los registros utiliza la configuración de propietario del bucket obligatorio de S3 Object Ownership para desactivar las ACL, CloudFront no puede escribir registros en el bucket. Para obtener más información, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket.

Cuándo usar una política de bucket

Si una Cuenta de AWS propietaria de un objeto quiere conceder permisos a los usuarios en ella, puede emplear una política de bucket o una política de usuario. Sin embargo, en los siguientes escenarios debe usar una política de bucket.

Desea administrar los permisos entre cuentas para todos los permisos de Amazon S3

Puede usar las ACL para otorgar permisos entre cuentas a otras cuentas. Sin embargo, las ACL solo admiten un conjunto finito de permisos y estos no incluyen todos los permisos de Amazon S3. Para obtener más información, consulte ¿Qué permisos puedo conceder?. Por ejemplo, no puede conceder permisos en subrecursos de bucket. Para obtener más información, consulte Identity and Access Management en Amazon S3.

Tanto las políticas de bucket como las de usuario admiten la concesión de permisos para todas las operaciones de Amazon S3. (Para obtener más información, consulte Acciones de Amazon S3.) Sin embargo, las políticas de usuario son para administrar permisos para los usuarios de la cuenta. Para los permisos entre cuentas que se conceden a otras Cuentas de AWS o a usuarios en otra cuenta, es necesario utilizar una política de bucket.

Cuándo usar una política de usuario

En general, puede usar una política de usuario o una política de bucket para administrar permisos. Puede optar por administrar permisos mediante la creación de usuarios y la administración de permisos individualmente al adjuntar políticas a usuarios (o grupos de usuarios). O bien, es posible que las políticas basadas en recursos, como una política de bucket, funcionen mejor para su escenario.

Con AWS Identity and Access Management (IAM), puede crear varios usuarios en la Cuenta de AWS y administrar sus permisos mediante políticas de usuario. Un usuario de IAM debe tener permisos de la cuenta principal a la que pertenece y de la Cuenta de AWS propietaria del recurso al que el usuario desea acceder. Se puede conceder los permisos de las siguientes maneras:

  • Permiso de la cuenta principal: la cuenta principal puede conceder permisos a su usuario adjuntando una política de usuario.

  • Permiso del propietario del recurso: el propietario del recurso puede conceder permisos al usuario de IAM (con una política de bucket) o a la cuenta principal (con una política de bucket, una ACL de bucket o una ACL de objeto).

Esto es similar a cuando un niño quiere jugar con un juguete que pertenece a otro niño. Para jugar con el juguete, el niño debe obtener permiso de un padre y permiso del propietario del juguete.

Para obtener más información, consulte Políticas de bucket y de usuario.

Delegación de permisos

Si una Cuenta de AWS es propietaria de un recurso, puede conceder esos permisos a otra Cuenta de AWS. Esa cuenta, a continuación, puede delegar esos permisos, o un subconjunto de ellos, a usuarios de la cuenta. Esto se conoce como delegación de permisos. Sin embargo, una cuenta que recibe permisos de otra cuenta no puede delegarlos a otra Cuenta de AWS con la modalidad entre cuentas.

Le recomendamos que consulte primero todos los temas de introducción en los que se explica cómo administrar el acceso a los recursos de Amazon S3 y las directrices relacionadas. Para obtener más información, consulte Identity and Access Management en Amazon S3. Puede recurrir a los siguientes temas para obtener más información sobre opciones de política de acceso específicas.