Ejemplos de política de bucket - Amazon Simple Storage Service

¡Bienvenido a la nueva Guía del usuario de Amazon S3! La guía del usuario de Amazon S3 combina información e instrucciones de las tres guías retiradas: Guía para desarrolladores de Amazon S3, Guía del usuario de la consola de Amazon S3y Guía de introducción Amazon S3.

Ejemplos de política de bucket

En esta sección se presentan algunos ejemplos de casos de uso típicos para políticas de bucket. Las políticas utilizan cadenas bucket y examplebucket en el valor del recurso. Para probar estas políticas, debe reemplazar estas cadenas con el nombre de su bucket. Para obtener información acerca del lenguaje de la política de acceso, consulte Administración de acceso con ACL.

nota

Las políticas de bucket tienen un límite de tamaño de 20 KB.

Puede utilizar la herramienta AWS Policy Generator para crear una política de bucket para su bucket de Amazon S3. A continuación, puede utilizar el documento generado para configurar su política de bucket a través de la consola de Amazon S3 mediante una serie de herramientas de terceros o a través de su aplicación.

importante

Si utiliza la consola de Amazon S3 para probar los permisos, deberá conceder permisos adicionales requeridos por la consola: permisos s3:ListAllMyBuckets, s3:GetBucketLocation y s3:ListBucket. Para ver un ejemplo de un tutorial en el que se conceden permisos a usuarios y se los prueba con la consola, consulte Controlar el acceso a un bucket con las políticas de usuario.

Concesión de permisos a varias cuentas con condiciones adicionales

En la siguiente política de ejemplo se conceden los permisos s3:PutObject y s3:PutObjectAcl a varias cuentas de AWS y se requiere que cualquier solicitud de estas operaciones incluya la lista de control de acceso (ACL) predefinida public-read. Para obtener más información, consulte Acciones de Amazon S3 y Claves de condición de Amazon S3.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AddCannedAcl", "Effect":"Allow", "Principal": {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"]}, "Action":["s3:PutObject","s3:PutObjectAcl"], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition":{"StringEquals":{"s3:x-amz-acl":["public-read"]}} } ] }

Concesión de permisos de solo lectura a un usuario anónimo

En la siguiente política de ejemplo se conceden permisos para s3:GetObject a cualquier usuario anónimo público. (Para obtener una lista de las operaciones y de los permisos que permiten, consulte Acciones de Amazon S3). Este permiso permite que cualquier persona pueda leer los datos del objeto, lo que es útil para cuando configura su bucket como un sitio web y desea que todos puedan leer los objetos del bucket. Antes de utilizar una política de bucket para conceder permiso de solo lectura a un usuario anónimo, debe deshabilitar la configuración de bloqueo de acceso público para su bucket. Para obtener más información, consulte Configurar permisos para el acceso a sitios web.

aviso

Tenga cuidado al conceder acceso anónimo a su bucket de Amazon S3 o al deshabilitar la configuración del bloqueo de acceso público. Al otorgar acceso anónimo, cualquier persona puede acceder a su bucket. Le recomendamos que no conceda nunca acceso anónimo a su bucket de Amazon S3 a menos que lo necesite específicamente, por ejemplo con alojamiento de sitios web estáticos.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PublicRead", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"] } ] }

Restricción del acceso a direcciones IP específicas

En el siguiente ejemplo, se deniegan los permisos a cualquier usuario para realizar cualquier operación de Amazon S3 en objetos en el bucket de S3 especificado, a menos que la solicitud se origine en el rango de direcciones IP especificado en la condición.

Esta instrucción identifica el intervalo 54.240.143.0/24 como el intervalo de direcciones IP permitidas en formato de Protocolo de Internet versión 4 (IPv4).

El bloque Condition utiliza la condición NotIpAddress y la clave de condición aws:SourceIp, que es una clave de condición general de AWS. Para obtener más información acerca de las claves de condición, consulte Claves de condición de Amazon S3. Los valores de IPv4 aws:SourceIp utilizan la notación CIDR estándar. Para obtener más información, consulte Referencia de los elementos de las políticas de JSON de IAM en la guía del usuario de IAM.

importante

Sustituya el intervalo de direcciones IP del ejemplo con un valor adecuado para su caso de uso antes de utilizar esta política. De lo contrario, perderá la capacidad de acceder a su bucket.

{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "IPAllow", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

Autorización de direcciones IPv4 e IPv6

Cuando comience a utilizar direcciones IPv6, le recomendamos que actualice todas las políticas de su organización con sus rangos de dirección IPv6 además de los rangos IPv4 existentes para asegurarse de que las políticas sigan funcionando mientras adopta IPv6.

En el siguiente ejemplo de política de bucket se muestra cómo combinar los rangos de dirección IPv4 e IPv6 para incluir todas las direcciones IP válidas de su organización. La política de ejemplo permitiría el acceso a las direcciones IP de ejemplo 54.240.143.1 y 2001:DB8:1234:5678::1, y denegaría el acceso a las direcciones 54.240.143.129 y 2001:DB8:1234:5678:ABCD::1.

Los valores de IPv6 para aws:SourceIp deben estar en formato CIDR estándar. Para IPv6, aceptamos el uso de :: para representar un rango de 0, (por ejemplo, 2032001:DB8:1234:5678::/64). Para obtener más información, consulte Operadores de condición de dirección IP en la guía del usuario de IAM.

importante

Sustituya los intervalos de direcciones IP del ejemplo con valores adecuados para su caso de uso antes de utilizar esta política. De lo contrario, puede perder la capacidad de acceder a su bucket.

{ "Id":"PolicyId2", "Version":"2012-10-17", "Statement":[ { "Sid":"AllowIPmix", "Effect":"Allow", "Principal":"*", "Action":"s3:*", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] }, "NotIpAddress": { "aws:SourceIp": [ "54.240.143.128/30", "2001:DB8:1234:5678:ABCD::/80" ] } } } ] }

Restricción del acceso a un HTTP referer específico

Suponga que tiene un sitio web con un nombre de dominio (www.example.com o example.com) con enlaces a fotografías y videos almacenados en su bucket de Amazon S3DOC-EXAMPLE-BUCKET. De forma predeterminada, todos los recursos de Amazon S3 son privados; por lo tanto, solo la cuenta de AWS que creó los recursos puede acceder a ellos. Para permitir el acceso de lectura a estos objetos desde su sitio web, puede añadir una política de bucket que conceda el permiso para s3:GetObject con una condición, a través de la clave aws:Referer, que establezca que la solicitud GET debe proceder de páginas web específicas. En la siguiente política se especifica la condición StringLike con la clave de condición aws:Referer.

{ "Version":"2012-10-17", "Id":"http referer policy example", "Statement":[ { "Sid":"Allow get requests originating from www.example.com and example.com.", "Effect":"Allow", "Principal":"*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} } } ] }

Asegúrese de que los navegadores que utiliza incluyan el encabezado HTTP referer en la solicitud.

Concesión de permisos a una OAI de Amazon CloudFront

En el siguiente ejemplo de política de buckets, se concede un permiso de identidad de acceso de origen (OAI) de CloudFront para obtener (leer) todos los objetos del bucket de Amazon S3. Puede utilizar un OAI de CloudFront para permitir a los usuarios acceder a objetos del bucket a través de CloudFront, pero no directamente a través de Amazon S3. Para obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen en la guía para desarrolladores de Amazon CloudFront.

La política siguiente utiliza el ID de la OAI como Principal de la política. Para obtener más información sobre el uso de políticas de buckets de S3 para conceder acceso a un OAI de CloudFront, consulte Utilización de políticas de buckets de Amazon S3 en la guía del desarrollador de Amazon CloudFront.

Para usar este ejemplo:

{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Incorporación de una política de bucket para solicitar MFA

Amazon S3 admite el acceso de API protegido por MFA, una característica que puede exigir aplicar Multi-Factor Authentication (MFA) para acceder a sus recursos de Amazon S3. La autenticación multifactor proporciona un nivel de seguridad adicional que puede aplicar a su entorno de AWS. Se trata de una característica de seguridad que requiere que los usuarios demuestren una posesión física de un dispositivo de MFA facilitando un código MFA válido. Para obtener más información, consulte AWS Multi-Factor Authentication. Puede solicitar MFA para cualquier solicitud de acceso a sus recursos de Amazon S3.

Puede implementar el requisito de MFA con la clave aws:MultiFactorAuthAge en una política de bucket. Los usuarios de AWS Identity and Access Management (IAM) pueden acceder a los recursos de Amazon S3 mediante credenciales temporales emitidas por AWS Security Token Service (AWS STS). Usted facilita el código de MFA al realizar la solicitud al AWS STS.

Cuando Amazon S3 recibe una solicitud con autenticación multifactor, la clave aws:MultiFactorAuthAge proporciona un valor numérico que indica el tiempo que transcurrió (en segundos) desde que se creó la credencial temporal. Si la credencial temporal provista en la solicitud no se creó con un dispositivo de MFA, este valor de clave es nulo (no está presente). En una política de bucket, puede añadir una condición para revisar este valor, como se muestra en el siguiente ejemplo de política de bucket. La política deniega cualquier operación de Amazon S3 en la carpeta /taxdocuments del bucket DOC-EXAMPLE-BUCKET si la solicitud no se autentica mediante MFA. Para obtener más información sobre MFA, consulte Uso de Multi-Factor Authentication (MFA) en AWS en la guía del usuario de IAM.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }

La condición Null en el bloque Condition se evalúa como válida si el valor de clave aws:MultiFactorAuthAge es nulo, lo que indica que las credenciales de seguridad temporales en la solicitud se crearon sin la clave de MFA.

La siguiente política de bucket es una extensión de la política de bucket anterior. Incluye dos instrucciones de política. Una instrucción permite el permiso s3:GetObject en un bucket (DOC-EXAMPLE-BUCKET) para todo el mundo. Otra instrucción limita el acceso a la carpeta DOC-EXAMPLE-BUCKET/taxdocuments en el bucket mediante la solicitud de la MFA.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Puede utilizar de forma opcional una condición numérica para limitar la duración de la validez de la clave aws:MultiFactorAuthAge, independientemente de la duración de la credencial de seguridad temporal que se utiliza en la autenticación de la solicitud. Por ejemplo, la siguiente política de bucket, además de exigir la autenticación MFA, también verifica el tiempo que transcurrió desde que se creó la sesión temporal. La política deniega cualquier operación si el valor de clave aws:MultiFactorAuthAge indica que la sesión temporal se creó hace más de una hora (3600 segundos).

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Concesión de permisos entre cuentas para cargar objetos al mismo tiempo que se garantiza que el propietario del bucket tenga el control total

En el siguiente ejemplo se muestra cómo permitir que otra cuenta de AWS cargue objetos en el bucket mientras asume el control total de los objetos cargados. Esta política impone que se conceda a una cuenta de AWS específica (123456789012) la capacidad de cargar objetos solo si esa cuenta incluye la ACL predefinida de control completo del propietario del bucket en la carga. La condición StringEquals de la política especifica la clave de condición s3:x-amz-acl para expresar el requisito (consulte Claves de condición de Amazon S3).

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"123456789012"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }

Concesión de permisos para el inventario de Amazon S3 y el análisis de Amazon S3

El inventario de Amazon S3 crea listas de los objetos en un bucket de S3 y la exportación del análisis de Amazon S3 crea archivos de salida de los datos utilizados en los análisis. El bucket para el que el inventario enumera los objetos se denomina bucket de origen. El bucket donde se escribe el archivo de inventario y el bucket donde se escribe el archivo de exportación de análisis se denomina bucket de destino. Debe crear una política de bucket para el bucket de destino cuando configura el inventario para un bucket de Amazon S3 y cuando configura la exportación de análisis. Para obtener más información, consulte Inventario de Amazon S3 y Análisis de Amazon S3: análisis de clases de almacenamiento.

En el siguiente ejemplo de política de bucket, se concede a Amazon S3 permiso para escribir objetos (PUT) de la cuenta para el bucket de origen en el bucket de destino. Usted utiliza una política de bucket como esta en el bucket de destino cuando configura el inventario de Amazon S3 y la exportación de análisis de Amazon S3.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"InventoryAndAnalyticsExamplePolicy", "Effect":"Allow", "Principal": {"Service": "s3.amazonaws.com"}, "Action":"s3:PutObject", "Resource":["arn:aws:s3:::destinationbucket/*"], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::sourcebucket" }, "StringEquals": { "aws:SourceAccount": "123456789012", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

Concesión de permisos para Amazon S3 Storage Lens

Amazon S3 Storage Lens agrega las métricas de uso y actividad y muestra la información en un panel interactivo en la consola de Amazon S3 o a través de una exportación de datos de métricas que se puede descargar en formato CSV o Parquet. Puede utilizar el panel para visualizar perspectivas y tendencias, marcar valores atípicos y proporcionar recomendaciones a fin de optimizar los costos de almacenamiento y aplicar las prácticas recomendadas de protección de datos. Puede utilizar S3 Storage Lens a través de la consola de administración de AWS, la CLI de AWS, los SDK de AWS o la API de REST.

S3 Storage Lens puede agregar el uso de almacenamiento a las exportaciones de métricas en un bucket de Amazon S3 para un análisis posterior. El bucket en el que S3 Storage Lens coloca sus exportaciones de métricas se conoce como el bucket de destino. Debe tener una política de bucket para el bucket de destino al configurar la exportación de métricas de S3 Storage Lens. Para obtener más información, consulte Evaluación de la actividad y el uso de almacenamiento con Amazon S3 Storage Lens.

En el siguiente ejemplo de política de bucket, se concede a Amazon S3 permiso para escribir objetos (PUT) en un bucket de destino. Usted utiliza una política de bucket como esta en el bucket de destino cuando configura una exportación de métricas de S3 Storage Lens.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3StorageLensExamplePolicy", "Effect": "Allow", "Principal": { "Service": [ "storage-lens.s3.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/111122223333/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" }, "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringEquals": { "aws:SourceArn": "arn:aws:s3:your-region:111122223333:storage-lens/your-dashboard-configuration-id" } } } ] }

La siguiente modificación del recurso "Action": "s3:PutObject" de política de bucket anterior al configurar una exportación de métricas de nivel de organización de S3 Storage Lens.

{ "Action": "s3:PutObject", "Resource": "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/your-organization-id/*",