Cómo funciona Amazon S3 con IAM - Amazon Simple Storage Service

Cómo funciona Amazon S3 con IAM

Antes de utilizar IAM para administrar el acceso a Amazon S3, obtenga información sobre qué características de IAM se encuentran disponibles para su uso con Amazon S3.

Para obtener una perspectiva general sobre cómo funcionan Amazon S3 y otros servicios de AWS con la mayoría de las características de IAM, consulte Servicios de AWS que funcionan con IAM en la Guía del usuario de IAM.

Políticas basadas en identidad para Amazon S3

Compatibilidad con las políticas basadas en identidad

Las políticas basadas en identidad son documentos de políticas de permisos JSON que puede asociar a una identidad, como un usuario de IAM, un grupo de usuarios o un rol. Estas políticas controlan qué acciones pueden realizar los usuarios y los roles, en qué recursos y en qué condiciones. Para obtener más información sobre cómo crear una política basada en identidad, consulte Creación de políticas de IAM en la Guía del usuario de IAM.

Con las políticas basadas en identidades de IAM, puede especificar las acciones y los recursos permitidos o denegados, así como las condiciones en las que se permiten o deniegan las acciones. No es posible especificar la entidad principal en una política basada en identidad porque se aplica al usuario o rol al que está adjunto. Para más información sobre los elementos que puede utilizar en una política de JSON, consulte Referencia de los elementos de las políticas de JSON de IAM en la Guía del usuario de IAM.

Ejemplos de políticas basadas en identidad para Amazon S3

Para ver ejemplos de políticas basadas en identidad de Amazon S3, consulte Políticas basadas en identidad para Amazon S3.

Políticas basadas en recursos dentro de Amazon S3

Compatibilidad con las políticas basadas en recursos

Las políticas basadas en recursos son documentos de política JSON que se asocian a un recurso. Ejemplos de políticas basadas en recursos son las políticas de confianza de roles de IAM y las políticas de bucket de Amazon S3. En los servicios que admiten políticas basadas en recursos, los administradores de servicios pueden utilizarlos para controlar el acceso a un recurso específico. Para el recurso al que se asocia la política, la política define qué acciones puede realizar una entidad principal especificada en ese recurso y en qué condiciones. Debe especificar una entidad principal en una política en función de recursos. Las entidades principales pueden incluir cuentas, usuarios, roles, usuarios federados o Servicios de AWS.

Para habilitar el acceso entre cuentas, puede especificar toda una cuenta o entidades de IAM de otra cuenta como la entidad principal de una política en función de recursos. Añadir a una política en función de recursos una entidad principal entre cuentas es solo una parte del establecimiento de una relación de confianza. Cuando la entidad principal y el recurso se encuentran en Cuentas de AWS diferentes, un administrador de IAM de la cuenta de confianza también debe conceder a la entidad principal (usuario o rol) permiso para acceder al recurso. Para conceder el permiso, adjunte la entidad a una política basada en identidad. Sin embargo, si la política en función de recursos concede el acceso a una entidad principal de la misma cuenta, no es necesaria una política basada en identidad adicional. Para más información, consulte Cómo los roles de IAM difieren de las políticas basadas en recursos en la Guía del usuario de IAM.

El servicio de Amazon S3 admite políticas de bucket, políticas de puntos de acceso y concesiones de acceso:

  • Las políticas de bucket son políticas basadas en recursos adjuntas a un bucket de Amazon S3. Una política de bucket define qué entidades principales pueden realizar acciones en el bucket.

  • Las políticas de puntos de acceso son políticas basadas en recursos que se evalúan junto con la política de bucket subyacente.

  • Las concesiones de acceso son un modelo simplificado para definir los permisos de acceso a los datos en Amazon S3 por prefijo, bucket u objeto. Para obtener información sobre las concesiones de acceso de S3, consulte Administración del acceso con S3 Access Grants.

Entidades principales de las políticas de bucket

El elemento Principal especifica el usuario, la cuenta, el servicio u otra entidad con acceso permitido o denegado para un recurso. A continuación se proporcionan ejemplos de la especificación del elemento Principal. Para obtener más información, consulte Principal en la guía del usuario de IAM.

Concesión de permisos a una Cuenta de AWS

Para conceder permisos a una Cuenta de AWS, use el siguiente formato para identificar la cuenta.

"AWS":"account-ARN"

A continuación se muestran algunos ejemplos.

"Principal":{"AWS":"arn:aws:iam::AccountIDWithoutHyphens:root"}
"Principal":{"AWS":["arn:aws:iam::AccountID1WithoutHyphens:root","arn:aws:iam::AccountID2WithoutHyphens:root"]}

Conceder permisos a un usuario de IAM

Para conceder permisos a un usuario de IAM dentro de la cuenta, debe proporcionar el par nombre-valor "AWS":"user-ARN".

"Principal":{"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"}

Para obtener ejemplos detallados que proporcionan instrucciones paso a paso, consulte Ejemplo 1: propietario del bucket que concede permisos de bucket a sus usuarios y Ejemplo 3: propietario del bucket que concede a sus usuarios permisos para objetos que no posee.

nota

Si se elimina una identidad de IAM después de actualizar la política de bucket, la política de bucket mostrará un identificador único en el elemento de la entidad principal en lugar de un ARN. Estos ID únicos nunca se reutilizan, por lo que puede eliminar de forma segura las entidades principales con identificadores únicos de todas las instrucciones de política. Para obtener más información acerca de los identificadores únicos, consulte Identificadores de IAM en la Guía del usuario de IAM.

Conceder permisos anónimos

aviso

Extreme las precauciones a la hora de otorgar acceso anónimo a su bucket de Amazon S3. Al otorgar acceso anónimo, cualquier persona puede acceder a su bucket. Se recomienda encarecidamente que no otorgue nunca ningún tipo de acceso de escritura anónimo en su bucket de S3.

Para conceder permisos a todos los usuarios, lo que también se denomina acceso anónimo, puede establecer el carácter comodín ("*") como valor de Principal. Por ejemplo, si configura el bucket como sitio web, es porque desea que todos los objetos en el bucket tengan acceso público.

"Principal":"*"
"Principal":{"AWS":"*"}

Utilizar "Principal": "*" con un efecto de Allow en una política basada en recursos permite que cualquier persona, incluso si no ha iniciado sesión en AWS, acceda a su recurso.

Utilizar "Principal" : { "AWS" : "*" } con un efecto de Allow en una política basada en recursos permite que cualquier usuario raíz, usuario de IAM, sesión de rol asumido o usuario federado en cualquier cuenta de la misma partición acceda a su recurso.

Para los usuarios anónimos, estos dos métodos son equivalentes. Para obtener más información, consulte Todas las entidades principales en la Guía del usuario de IAM.

No puede utilizar un carácter comodín para buscar coincidencias con parte de un nombre de entidad principal o ARN.

importante

Puesto que cualquiera puede crear una Cuenta de AWS, el nivel de seguridad de estos dos métodos es equivalente, aunque funcionan de forma diferente.

Restringir los permisos de recursos

También puede utilizar la política de recursos para restringir el acceso a los recursos que, de otro modo, estarían disponibles para las entidades principales de IAM. Utilice una instrucción Deny para impedir el acceso.

El siguiente ejemplo bloquea el acceso si no se utiliza un protocolo de transporte seguro:

{"Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": <bucket ARN>, "Condition": { "Boolean": { "aws:SecureTransport" : "false"} } }

Una práctica recomendada para esta política es usar "Principal": "*" para que esta restricción se aplique a todo el mundo, en lugar de intentar denegar el acceso solo a cuentas o entidades principales específicas mediante este método.

Requerir acceso a través de URL de CloudFront

Puede exigir a los usuarios que obtengan acceso al contenido de Amazon S3 solo mediante direcciones URL de CloudFront en lugar de direcciones URL de Amazon S3. Para ello, cree un control de acceso de origen (OAC) de CloudFront. A continuación, cambie los permisos de los datos de S3. En la política de bucket, puede configurar CloudFront como entidad principal de la siguiente manera:

"Principal":{"Service":"cloudfront.amazonaws.com"}

Utilice un elemento Condition en la política para permitir que CloudFront acceda al bucket solo cuando la solicitud sea en nombre de la distribución de CloudFront que contiene el origen de S3.

"Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront-distribution-ID" } }

Para obtener más información acerca de cómo solicitar acceso de S3 a través de las URL de CloudFront, consulte Restricción del acceso a un origen de Amazon Simple Storage Service en la Guía para desarrolladores de Amazon CloudFront. Para obtener más información sobre los beneficios de seguridad y privacidad de usar Amazon CloudFront, consulte Configuración de acceso seguro y acceso restringido al contenido.

Ejemplos de políticas basadas en recursos para Amazon S3

Acciones de políticas para Amazon S3

Admite acciones de política

Los administradores pueden utilizar las políticas JSON de AWS para especificar quién tiene acceso a qué. Es decir, qué entidad principal puede realizar acciones en qué recursos y en qué condiciones.

El elemento Action de una política JSON describe las acciones que puede utilizar para conceder o denegar el acceso en una política. Las acciones de la política generalmente tienen el mismo nombre que la operación de API de AWS asociada. Hay algunas excepciones, como acciones de solo permiso que no tienen una operación de API coincidente. También hay algunas operaciones que requieren varias acciones en una política. Estas acciones adicionales se denominan acciones dependientes.

Incluya acciones en una política para conceder permisos y así llevar a cabo la operación asociada.

A continuación, se muestran los diferentes tipos de relaciones de mapeo entre las operaciones de la API de S3 y las acciones de políticas requeridas.

  • Mapeo uno a uno con el mismo nombre. Por ejemplo, para utilizar la operación de la API PutBucketPolicy, se necesita la acción de política s3:PutBucketPolicy.

  • Mapeo uno a uno con diferentes nombres. Por ejemplo, para utilizar la operación de la API ListObjectsV2, se necesita la acción de política s3:ListBucket.

  • Mapeo uno a varios. Por ejemplo, para utilizar la operación de la API HeadObject, se necesita s3:GetObject. Además, si utiliza el bloqueo de objetos de S3 y desea obtener el estado de retención legal o la configuración de retención de un objeto, también son necesarias las acciones de políticas s3:GetObjectLegalHold y s3:GetObjectRetention correspondientes para poder utilizar la operación de API HeadObject.

  • Mapeo uno a varios. Por ejemplo, para utilizar las operaciones de la API ListObjectsV2 o HeadBucket, se necesita la acción de política s3:ListBucket.

Para ver una lista de las acciones de Amazon S3 para usar en políticas, consulte Acciones definidas por Amazon S3 en la Referencia de autorizaciones de servicio. Para obtener una lista de operaciones de la API de Amazon S3, consulte Amazon S3 API Actions en la Referencia de la API de Amazon Simple Storage Service.

Las acciones de políticas de Amazon S3 utilizan el siguiente prefijo antes de la acción:

s3

Para especificar varias acciones en una única instrucción, sepárelas con comas.

"Action": [ "s3:action1", "s3:action2" ]

Las operaciones de buckets son operaciones de la API de S3 que funcionan en el tipo de recurso de bucket. Por ejemplo, CreateBucket, ListObjectsV2 y PutBucketPolicy. Las acciones de las políticas de S3 para operaciones de buckets requieren que el elemento Resource de las políticas de buckets o de las políticas basadas en identidades de IAM sea el identificador de Nombre de recurso de Amazon (ARN) del tipo de bucket de S3 en el siguiente formato de ejemplo.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"

La siguiente política de buckets otorga al usuario Akua con la cuenta 12345678901 el permiso s3:ListBucket para realizar la operación de la API ListObjectsV2 y enumerar los objetos de un bucket de S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to list objects in the bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }
Operaciones de buckets en políticas de puntos de acceso

Los permisos concedidos en una política de puntos de acceso solo se aplican si el bucket subyacente permite los mismos permisos. Cuando utilice puntos de acceso de S3, debe delegar el control de acceso del bucket al punto de acceso o añadir los mismos permisos en las políticas del punto de acceso a la política del bucket subyacente. Para obtener más información, consulte Configurar las políticas de IAM para el uso de puntos de acceso. En las políticas de puntos de acceso, en las acciones de la política de S3 para las operaciones de buckets es necesario utilizar el ARN de accesspoint para el elemento Resource en el siguiente formato.

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT"

La siguiente política de puntos de acceso otorga al usuario Akua con la cuenta 12345678901 el permiso s3:ListBucket para realizar la operación de la API ListObjectSv2 a través del punto de acceso de S3 DOC-EXAMPLE-ACCESS-POINT para enumerar los objetos del bucket asociado al punto de acceso.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to list objects in the bucket through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT" } ] }
nota

El punto de acceso de S3 no admite todas las operaciones de bucket. Para obtener más información, consulte Compatibilidad de los puntos de acceso con las operaciones de S3.

Las operaciones de objetos son operaciones de la API de S3 que actúan en función del tipo de recurso del objeto. Por ejemplo, GetObject, PutObject y DeleteObject. Las acciones de políticas de S3 para las operaciones de objetos necesitan que el elemento Resource de las políticas sea el ARN del objeto de S3 en los siguientes formatos de ejemplo.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/*"
nota

El ARN del objeto debe contener una barra inclinada después del nombre del bucket, como se ha visto en los ejemplos anteriores.

La siguiente política de buckets concede al usuario Akua con la cuenta 12345678901 el permiso s3:PutObject para realizar la operación de la API PutObject para subir objetos a un bucket de S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to upload objects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
Operaciones de objetos en políticas de puntos de acceso

Cuando utilice puntos de acceso de S3 para controlar el acceso a las operaciones de los objetos, puede utilizar políticas de puntos de acceso. Cuando utilice políticas de puntos de acceso, las acciones de la política de S3 para operaciones con objetos requieren que utilice el ARN accesspoint para el elemento Resource en el siguiente formato: arn:aws:s3:region:account-id:accesspoint/access-point-name/object/resource. Para las operaciones de objetos que utilizan el punto de acceso, debe incluir el valor /object/ después de todo el ARN del punto de acceso en el elemento Resource. Estos son algunos ejemplos.

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/*"
"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/prefix/*"

La siguiente política de puntos de acceso otorga al usuario Akua con la cuenta 12345678901 el permiso s3:GetObject para realizar la operación de la API GetObject a través del punto de acceso DOC-EXAMPLE-ACCESS-POINT en todos los objetos del bucket asociado al punto de acceso.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Akua to get objects through access point", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::12345678901:user/Akua" }, "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT/object/*" } ] }
nota

El punto de acceso de S3 no admite todas las operaciones de objetos. Para obtener más información, consulte Compatibilidad de los puntos de acceso con las operaciones de S3.

Las operaciones de puntos de acceso son operaciones de la API de S3 que funcionan en el tipo de recurso accesspoint. Por ejemplo, CreateAccessPoint, DeleteAccessPoint y GetAccessPointPolicy. Las acciones de políticas de S3 para las operaciones de punto de acceso solo pueden utilizarse en las políticas de IAM basadas en identidades, no en las políticas de buckets ni en las de puntos de acceso. Las operaciones de puntos de acceso requieren que el elemento Resource sea el ARN de accesspoint en el siguiente formato de ejemplo.

"Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/DOC-EXAMPLE-ACCESS-POINT"

La siguiente política de IAM basada en identidades concede el permiso s3:GetAccessPointPolicy para realizar la operación de la API GetAccessPointPolicy en el punto de acceso de S3 DOC-EXAMPLE-ACCESS-POINT.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Grant permission to retrieve the access point policy of access point DOC-EXAMPLE-ACCESS-POINT", "Effect": "Allow", "Action": [ "s3:GetAccessPointPolicy" ], "Resource": "arn:aws:s3:*:123456789012:access point/DOC-EXAMPLE-ACCESS-POINT" } ] }

Cuando utilice puntos de acceso, para controlar el acceso a las operaciones de buckets, consulte Operaciones de buckets en políticas de puntos de acceso; para controlar el acceso a las operaciones de objetos, consulte Operaciones de objetos en políticas de puntos de acceso. Para obtener más información acerca de cómo configurar políticas de punto de acceso, consulte Configurar las políticas de IAM para el uso de puntos de acceso.

Con Amazon S3 Object Lambda, puede agregar su propio código a las solicitudes GET, LIST y HEAD de Amazon S3 para modificar y procesar los datos a medida que vuelven a una aplicación. Puede realizar solicitudes a través de un punto de acceso de Object Lambda, que funciona como realizar solicitudes a través de otros puntos de acceso. Para obtener más información, consulte Transformación de objetos con Lambda para objetos S3.

Para obtener más información sobre cómo configurar políticas para operaciones de puntos de acceso de Object Lambda, consulte Configuración de las políticas de IAM para puntos de acceso de Object Lambda.

Un punto de acceso de varias regiones proporciona un punto de conexión global que las aplicaciones pueden utilizar para satisfacer las solicitudes de los buckets de S3 ubicados en varias Región de AWS. Puede utilizar un punto de acceso de varias regiones para crear aplicaciones de varias regiones con la misma arquitectura que se utiliza en una sola región y, a continuación, ejecutar esas aplicaciones en cualquier parte del mundo. Para obtener más información, consulte Puntos de acceso de varias regiones de Amazon S3.

Para obtener más información sobre cómo configurar políticas para operaciones de puntos de acceso multiregionales, consulte Ejemplos de política de punto de acceso multirregional.

Las operaciones de trabajos (operaciones por lotes) son operaciones de la API de S3 que funcionan en el tipo de recurso de trabajo. Por ejemplo, DescribeJob y CreateJob. Las acciones de políticas de S3 para operaciones de trabajo solo pueden utilizarse en políticas basadas en identidades de IAM, no en políticas de buckets. Además, las operaciones de trabajos requieren que el elemento Resource de las políticas basadas en identidades de IAM sean el ARN de job en el siguiente formato de ejemplo.

"Resource": "arn:aws:s3:*:123456789012:job/*"

La siguiente política de IAM basada en identidades concede el permiso s3:DescribeJob para realizar la operación de la API DescribeJob en el trabajo de operaciones por lotes DOC-EXAMPLE-JOB de S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow describing the Batch operation job DOC-EXAMPLE-JOB", "Effect": "Allow", "Action": [ "s3:DescribeJob" ], "Resource": "arn:aws:s3:*:123456789012:job/DOC-EXAMPLE-JOB" } ] }

Para obtener más información acerca de cómo configurar las operaciones de configuración de S3 Storage Lens, consulte Permisos de Amazon S3 Storage Lens.

Las operaciones de cuentas son operaciones de la API de S3 que funcionan en el nivel de la cuenta. Por ejemplo, GetPublicAccessBlock (para una cuenta). La cuenta no es un tipo de recurso definido por Amazon S3. Las acciones de políticas de S3 para operaciones de cuentas solo pueden utilizarse en políticas basadas en identidades de IAM, no en políticas de buckets. Además, las operaciones de cuentas requieren que el elemento Resource de las políticas basadas en identidades de IAM sean "*".

La siguiente política de IAM basada en identidades concede el permiso s3:GetAccountPublicAccessBlock para realizar la operación de la API GetPublicAccessBlock en el nivel de la cuenta y recuperar la configuración del bloque de acceso público en el nivel de la cuenta.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"Allow retrieving the account-level Public Access Block settings", "Effect":"Allow", "Action":[ "s3:GetAccountPublicAccessBlock" ], "Resource":[ "*" ] } ] }

Ejemplos de políticas para Amazon S3

Recursos de políticas para Amazon S3

Admite recursos de políticas

Los administradores pueden utilizar las políticas JSON de AWS para especificar quién tiene acceso a qué. Es decir, qué entidad principal puede realizar acciones en qué recursos y en qué condiciones.

El elemento Resource de la política JSON especifica el objeto u objetos a los que se aplica la acción. Las instrucciones deben contener un elemento Resource o NotResource. Como práctica recomendada, especifique un recurso utilizando el Nombre de recurso de Amazon (ARN). Puede hacerlo para acciones que admitan un tipo de recurso específico, conocido como permisos de nivel de recurso.

Para las acciones que no admiten permisos de nivel de recurso, como las operaciones de descripción, utilice un carácter comodín (*) para indicar que la instrucción se aplica a todos los recursos.

"Resource": "*"

Algunas acciones de la API de Amazon S3 admiten varios recursos. Por ejemplo, s3:GetObject accede a EXAMPLE-RESOURCE-1 y EXAMPLE-RESOURCE-2, por lo que una entidad principal debe tener permisos para acceder a ambos recursos. Para especificar varios recursos en una única instrucción, separe los ARN con comas.

"Resource": [ "EXAMPLE-RESOURCE-1", "EXAMPLE-RESOURCE-2"

Los recursos de Amazon S3 son buckets, objetos, puntos de acceso o trabajos. En una política, utilice el nombre de recurso de Amazon (ARN) del bucket, objeto, punto de acceso o trabajo para identificar el recurso.

Para ver una lista completa de los tipos de recursos de Amazon S3 y los ARN, consulte Recursos definidos por Amazon S3 en la Referencia de autorizaciones de servicio. Para obtener información acerca de las acciones con las que puede especificar el ARN de cada recurso, consulte Acciones definidas por Amazon S3.

Comodines para los ARN de recursos

Puede utilizar comodines como parte del ARN del recurso. Puede utilizar caracteres comodín (* y ?) en cualquier segmento del ARN (las partes se separan mediante signos de dos puntos). Un asterisco (*) representa cualquier combinación de cero o más caracteres y un signo de interrogación (?) representa un único carácter. Puede utilizar varios caracteres * o ? en cada segmento, pero un carácter comodín no puede abarcar varios segmentos.

  • El ARN siguiente utiliza el carácter comodín * en la parte de identificador relativo del ARN para identificar todos los objetos del bucket examplebucket.

    arn:aws:s3:::examplebucket/*
  • El siguiente ARN utiliza * para indicar todos los buckets de S3 y objetos.

    arn:aws:s3:::*
  • El siguiente ARN utiliza ambos comodines, * y ?, en la parte relative-ID. Identifica todos los objetos en los buckets como example1bucket, example2bucket, example3bucket, etc.

    arn:aws:s3:::example?bucket/*

Variables de política para ARN de recursos

Puede utilizar variables de política en los ARN de Amazon S3. Cuando se evalúa una política, estas variables predefinidas se sustituyen por los valores correspondientes. Supongamos que organiza los buckets como una colección de carpetas, una carpeta para cada uno de los usuarios. El nombre de la carpeta será igual al nombre del usuario. Para conceder a los usuarios permisos para sus carpetas, puede especificar una variable de política en el ARN del recurso:

arn:aws:s3:::bucket_name/developers/${aws:username}/

En tiempo de ejecución, cuando se evalúa la política, la variable ${aws:username} en el ARN del recurso se sustituye por el nombre de usuario de la persona que realiza la solicitud.

Ejemplos de políticas para Amazon S3

Claves de condición de políticas para Amazon S3

Admite claves de condición de políticas específicas del servicio

Los administradores pueden utilizar las políticas JSON de AWS para especificar quién tiene acceso a qué. Es decir, qué entidad principal puede realizar acciones en qué recursos y en qué condiciones.

El elemento Condition (o bloque de Condition) permite especificar condiciones en las que entra en vigor una instrucción. El elemento Condition es opcional. Puede crear expresiones condicionales que utilicen operadores de condición, tales como igual o menor que, para que la condición de la política coincida con los valores de la solicitud.

Si especifica varios elementos de Condition en una instrucción o varias claves en un único elemento de Condition, AWS las evalúa mediante una operación AND lógica. Si especifica varios valores para una única clave de condición, AWS evalúa la condición con una operación lógica OR. Se deben cumplir todas las condiciones antes de que se concedan los permisos de la instrucción.

También puede utilizar variables de marcador de posición al especificar condiciones. Por ejemplo, puede conceder un permiso de usuario de IAM para acceder a un recurso solo si está etiquetado con su nombre de usuario de IAM. Para más información, consulte Elementos de la política de IAM: variables y etiquetas en la Guía del usuario de IAM.

AWS admite claves de condición globales y claves de condición específicas del servicio. Para ver todas las claves de condición globales de AWS, consulte Claves de contexto de condición globales de AWSen la Guía del usuario de IAM.

Cada clave de condición de Amazon S3 se asigna al encabezado de solicitud con el mismo nombre permitido por la API en la que se puede establecer la condición. Las claves de condición específicas de Amazon S3 dictan el comportamiento de los encabezados de solicitudes del mismo nombre. Por ejemplo, la clave de condición s3:VersionId utilizada para conceder permisos condicionales para el permiso s3:GetObjectVersion define el comportamiento del parámetro de consulta versionId que establece en una solicitud GET Object.

Para ver una lista de las claves de condición de Amazon S3, consulte Claves de condición para Amazon S3 en la Referencia de autorizaciones de servicio. Para obtener más información acerca de las acciones y los recursos con los que puede utilizar una clave de condición, consulte Acciones definidas por Amazon S3.

Ejemplo: restricción de cargas de objetos a objetos con una clase de almacenamiento específica

Supongamos que la cuenta A, representada por el ID de cuenta 123456789012, posee un bucket. El administrador de la cuenta A desea restringir a Dave, un usuario en la cuenta A, para que solo pueda cargar objetos en el bucket que se almacenan con la clase de almacenamiento STANDARD_IA. Para restringir las cargas de objetos a una clase de almacenamiento específica, el administrador de cuenta A puede utilizar la clave de condición s3:x-amz-storage-class, como se muestra en la siguiente política de bucket de ejemplo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "Condition": { "StringEquals": { "s3:x-amz-storage-class": [ "STANDARD_IA" ] } } } ] }

En el ejemplo, el bloque Condition especifica la condición StringEquals que se aplica al par clave-valor especificado, "s3:x-amz-acl":["public-read"]. Existe un conjunto de claves predefinidas que puede usar para expresar una condición. En el ejemplo se utiliza la clave de condición s3:x-amz-acl. Esta condición requiere que el usuario incluya el encabezado x-amz-acl con el valor public-read en cada solicitud PUT Object.

Ejemplos de políticas para Amazon S3

ACL en Amazon S3

Admite las ACL

En Amazon S3, las listas de control de acceso (ACL) controlan qué Cuentas de AWS tienen permisos para acceder a un recurso. Las ACL son similares a las políticas basadas en recursos, aunque no utilizan el formato de documento de políticas JSON.

importante

La mayoría de los casos de uso modernos de Amazon S3 ya no requieren el uso de ACL.

Para obtener información acerca de cómo usar ACL para controlar el acceso en Amazon S3, consulte Administración de acceso con ACL.

ABAC con Amazon S3

Admite ABAC (etiquetas en las políticas)

Parcial

El control de acceso basado en atributos (ABAC) es una estrategia de autorización que define permisos en función de atributos. En AWS, estos atributos se denominan etiquetas. Puede adjuntar etiquetas a entidades de IAM (usuarios o roles) y a muchos recursos de AWS. El etiquetado de entidades y recursos es el primer paso de ABAC. A continuación, designa las políticas de ABAC para permitir operaciones cuando la etiqueta de la entidad principal coincida con la etiqueta del recurso al que se intenta acceder.

ABAC es útil en entornos que crecen con rapidez y ayuda en situaciones en las que la administración de las políticas resulta engorrosa.

Para controlar el acceso en función de etiquetas, debe proporcionar información de las etiquetas en el elemento de condición de una política utilizando las claves de condición aws:ResourceTag/key-name, aws:RequestTag/key-name o aws:TagKeys.

Si un servicio admite las tres claves de condición para cada tipo de recurso, el valor es para el servicio. Si un servicio admite las tres claves de condición solo para algunos tipos de recursos, el valor es Parcial.

Para obtener más información sobre ABAC, consulte ¿Qué es ABAC? en la Guía del usuario de IAM. Para ver un tutorial con los pasos para configurar ABAC, consulte Uso del control de acceso basado en atributos (ABAC) en la Guía del usuario de IAM.

Para ver ejemplos de políticas basadas en identidades para limitar el acceso a trabajos de operaciones por lotes de S3 en función de etiquetas, consulte Control de permisos para Operaciones por lotes de S3 mediante etiquetas de trabajo.

ABAC y etiquetas de objetos

En las políticas de ABAC, los objetos utilizan etiquetas de s3: en lugar de etiquetas de aws:. Para controlar el acceso a objetos en función de etiquetas de objetos, debe proporcionar información de las etiquetas en el elemento de condición de una política con las siguientes etiquetas:

  • s3:ExistingObjectTag/tag-key

  • s3:s3:RequestObjectTagKeys

  • s3:RequestObjectTag/tag-key

Para obtener información sobre el uso de etiquetas de objetos para controlar el acceso, incluidos ejemplos de políticas de permisos, consulte Etiquetado y políticas de control de acceso.

Uso de credenciales temporales con Amazon S3

Compatible con el uso de credenciales temporales

Algunos Servicios de AWS no funcionan cuando inicia sesión con credenciales temporales. Para obtener información adicional, incluida la información sobre qué Servicios de AWS funcionan con credenciales temporales, consulte Servicios de AWS que funcionan con IAM en la Guía del usuario de IAM.

Utiliza credenciales temporales si inicia sesión en la AWS Management Console con cualquier método, excepto un nombre de usuario y una contraseña. Por ejemplo, cuando accede a AWS utilizando el enlace de inicio de sesión único (SSO) de la empresa, ese proceso crea automáticamente credenciales temporales. También crea automáticamente credenciales temporales cuando inicia sesión en la consola como usuario y luego cambia de rol. Para más información sobre el cambio de roles, consulte Cambio a un rol (consola) en la Guía del usuario de IAM.

Puede crear credenciales temporales de forma manual mediante la AWS CLI o la API de AWS. A continuación, puede usar esas credenciales temporales para acceder a AWS. AWS recomienda generar credenciales temporales de forma dinámica en lugar de usar claves de acceso a largo plazo. Para más información, consulte Credenciales de seguridad temporales en IAM.

Sesiones de acceso directo para Amazon S3

Admite Forward access sessions (FAS)

Cuando utiliza un usuario o un rol de IAM para llevar a cabo acciones en AWS, se lo considera una entidad principal. Cuando utiliza algunos servicios, es posible que realice una acción que desencadene otra acción en un servicio diferente. FAS utiliza los permisos de la entidad principal para llamar a un Servicio de AWS, combinados con el Servicio de AWS solicitante para realizar solicitudes a servicios posteriores. Las solicitudes de FAS solo se realizan cuando un servicio recibe una solicitud que requiere interacciones con otros Servicios de AWS o recursos para completarse. En este caso, debe tener permisos para realizar ambas acciones. Para obtener información sobre las políticas a la hora de realizar solicitudes de FAS, consulte Reenviar sesiones de acceso.

  • Amazon S3 utiliza FAS para realizar llamadas a AWS KMS para descifrar un objeto cuando se ha utilizado SSE-KMS para cifrarlo. Para obtener más información, consulte Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS).

  • Las concesiones de acceso de S3 también utilizan FAS. Tras crear una concesión de acceso a los datos de S3 para una identidad concreta, el concesionario solicita una credencial temporal de concesiones de acceso de S3. Las concesiones de acceso de S3 obtienen una credencial temporal para el solicitante de AWS STS y venden la credencial al solicitante. Para obtener más información, consulte Solicitar acceso a los datos de Amazon S3 a través de S3 Access Grants.

Roles de servicio para Amazon S3

Compatible con roles de servicio

Un rol de servicio es un rol de IAM que asume un servicio para realizar acciones en su nombre. Un administrador de IAM puede crear, modificar y eliminar un rol de servicio desde IAM. Para obtener más información, consulte Creación de un rol para delegar permisos a un Servicio de AWS en la Guía del usuario de IAM.

aviso

Es posible que cambiar los permisos de un rol de servicio interrumpa la funcionalidad de Amazon S3. Edite los roles de servicio solo cuando Amazon S3 proporcione orientación para hacerlo.

Roles vinculados a servicios para Amazon S3

Compatible con roles vinculados al servicio

Parcial

Un rol vinculado al servicio es un tipo de rol de servicio que está vinculado a un Servicio de AWS. El servicio puede asumir el rol para realizar una acción en su nombre. Los roles vinculados a servicios aparecen en la Cuenta de AWS y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos de los roles vinculados a servicios.

Amazon S3 admite roles vinculados a servicios para Amazon S3 Storage Lens. Para obtener más información sobre cómo crear o administrar roles vinculados a servicios de Amazon S3, consulte Uso de roles vinculados a servicios para Amazon S3 Storage Lens.

Servicio de Amazon S3 como entidad principal

Nombre del servicio en la política Característica de S3 Más información

s3.amazonaws.com

Replicación de S3

Configuración de la replicación

s3.amazonaws.com

Notificaciones de eventos de S3

Notificaciones de eventos de Amazon S3

s3.amazonaws.com

Inventario de S3

Inventario de Amazon S3

access-grants.s3.amazonaws.com

Permisos de acceso de S3

Registrar una ubicación

batchoperations.s3.amazonaws.com

Operaciones por lotes de S3

Concesión de permisos para Operaciones por lotes de S3

logging.s3.amazonaws.com

Registro de acceso al servidor de S3

Habilitación del registro de acceso al servidor de Amazon S3

storage-lens.s3.amazonaws.com

Almacenamiento de lente de S3

Visualización de las métricas de Amazon S3 Storage Lens mediante una exportación de datos