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

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 DOC-EXAMPLE-BUCKET en el valor del recurso. Para probar estas políticas, debe reemplazar estas cadenas con el nombre de su bucket. Para obtener información sobre las políticas de buckets, consulte Uso de políticas de bucket. Para obtener más información sobre el lenguaje de la política, consulte Políticas y permisos en Amazon S3.

Una política de bucket está basada en recursos que puede utilizar para conceder permisos de acceso al bucket y a los objetos que contiene. Solo el propietario del bucket puede asociar una política a un bucket. Los permisos asociados a un bucket se aplican a todos los objetos del bucket que son propiedad de la cuenta de propietario del bucket. Estos permisos de no se aplican a los objetos que pertenecen a otras Cuentas de AWS.

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. Para obtener más información, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket .

Para obtener más información acerca de las políticas de bucket, consulte Uso de políticas de bucket.

nota

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

Puede utilizar la herramienta Generador de políticas de AWS a fin de 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, debe 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 Ejemplos de claves de condición de Amazon S3.

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": "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 a 54.240.143.0/24 como el rango de direcciones IP permitidas del 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 Ejemplos de 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.

aviso

Antes de utilizar esta política, reemplace el rango de direcciones IP 54.240.143.0/24 en este ejemplo con un valor adecuado para su caso de uso. 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 la 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 la 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.

aviso

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 S3, DOC-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.

aviso

Le recomendamos que actúe con precaución cuando utilice la clave de condición de aws:Referer. Es peligroso incluir un valor de encabezado de referencia conocido públicamente. Las partes no autorizadas podrían utilizar navegadores personalizados o modificados para proporcionar cualquier valor aws:Referer que eligieran. Por lo tanto, no utilice aws:Referer para evitar que las partes no autorizadas realicen solicitudes de AWS de forma directa.

La clave de condición de aws:Referer se ofrece solo para que los clientes puedan proteger su contenido digital, como el contenido almacenado en Amazon S3, para evitar las referencias en sitios de terceros no autorizados. Para obtener más información, consulte aws:Referer en la Guía del usuario de IAM.

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 autenticación multifactor de AWS. 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. AWS Identity and Access Management Los usuarios de IAM pueden acceder a los recursos de Amazon S3 con 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. Esta política de ejemplo 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 autenticación multifactor (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 true 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 (111122223333) 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 en la política especifica la clave s3:x-amz-acl condition para expresar el requisito (consulte Ejemplos de claves de condición de Amazon S3).

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"111122223333"}, "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 Amazon S3 Inventory y análisis de Amazon S3

Amazon S3 Inventory crea listas de los objetos en un bucket de Amazon 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 Amazon S3 Inventory y la exportación del 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": "111122223333", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

Concesión de permisos para Amazon S3 Storage Lens

Amazon S3 Storage Lens agrupa sus métricas de uso y actividad, y muestra la información en la instantánea de la cuenta en la página de inicio de la consola de Amazon S3 (Buckets), los paneles interactivos o mediante una exportación de métricas que se puede descargar en formato CSV o Parquet. Puede utilizar el panel para visualizar la información y las tendencias, marcar los valores atípicos y obtener las recomendaciones necesarias para optimizar los costos de almacenamiento y aplicar las prácticas recomendadas sobre protección de datos. Puede utilizar S3 Storage Lens a través de la AWS Management Console, la AWS CLI, los SDK de AWS o la API 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 momento de 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", "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:s3:Región de AWS:111122223333:storage-lens/storage-lens-dashboard-configuration-id" } } } ] }

Utilice la siguiente modificación del recurso de política de bucket anterior al configurar una exportación de métricas de organización de S3 Storage Lens.

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