

# Políticas de buckets para Amazon S3
<a name="bucket-policies"></a>

Una política de bucket está basada en recursos que puede utilizar para conceder permisos de acceso al bucket de Amazon S3 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 no se aplican a los objetos que pertenecen a otras Cuentas de AWS.

S3 Object Ownership es una configuración de nivel de bucket de Amazon S3 que puede usar para controlar la propiedad de los objetos que se cargan en el bucket y para activar o desactivar las listas de control de acceso (ACL). De forma predeterminada, la propiedad de objetos se establece en la configuración impuesta por el propietario del bucket. Además, todas las ACL están deshabilitadas. El propietario del bucket posee todos los objetos del bucket y administra el acceso a los datos de forma exclusiva mediante políticas.

Las políticas de buckets utilizan el lenguaje de política de AWS Identity and Access Management (IAM) basado en JSON. Puede utilizar directivas de bucket para agregar o denegar permisos para los objetos de un bucket. Las políticas de bucket pueden permitir o denegar solicitudes en función de los elementos de la política. Estos elementos incluyen el solicitante, las acciones de S3, los recursos y los aspectos o condiciones de la solicitud (como la dirección IP utilizada para realizar la solicitud). 

Por ejemplo, puede crear una política de bucket que haga lo siguiente: 
+ Conceder permisos entre cuentas para cargar objetos en el bucket de S3
+ Asegurarse de que usted, el propietario del bucket, tenga el control total de los objetos cargados

Para obtener más información, consulte [Ejemplos de políticas de bucket de Amazon S3](example-bucket-policies.md).

**importante**  
No puede usar una política de bucket para evitar eliminaciones ni transiciones mediante una regla de [S3 Lifecycle](object-lifecycle-mgmt.md). Por ejemplo, aunque la política de bucket deniegue todas las acciones a todas las entidades principales, la configuración de S3 Lifecycle seguirá funcionando con normalidad.

Los temas de esta sección proporcionan ejemplos y muestran cómo agregar una política de bucket en la consola de S3. Para obtener más información sobre las políticas basadas en la identidad, consulte [Políticas basadas en identidad para Amazon S3](security_iam_id-based-policy-examples.md). Para obtener información sobre el lenguaje de las políticas de bucket, consulte [Políticas y permisos en Amazon S3](access-policy-language-overview.md).

Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).

**Topics**
+ [Agregar una política de bucket mediante la consola de Amazon S3](add-bucket-policy.md)
+ [Control del acceso desde puntos de enlace de la VPC con políticas de bucket](example-bucket-policies-vpc-endpoint.md)
+ [Ejemplos de políticas de bucket de Amazon S3](example-bucket-policies.md)
+ [Ejemplos de políticas de bucket que utilizan claves de condición](amazon-s3-policy-keys.md)

# Agregar una política de bucket mediante la consola de Amazon S3
<a name="add-bucket-policy"></a>

Puede utilizar el [Generador de políticas de AWS](https://aws.amazon.com/blogs/aws/aws-policy-generator/) y la consola de Amazon S3 para agregar una nueva política de bucket o editar una existente. Una política de bucket es una política de AWS Identity and Access Management (IAM) basada en recursos. Puede agregar una política de bucket a un bucket para conceder a otras Cuentas de AWS o usuarios de IAM permisos de acceso al bucket y los objetos que contiene. Los permisos de objetos solo se aplican a aquellos objetos que cree el propietario del bucket. Para obtener más información acerca de las políticas de bucket, consulte [Administración de identidades y accesos para Amazon S3](security-iam.md).

Asegúrese de resolver advertencias de seguridad, errores, advertencias generales y sugerencias de AWS Identity and Access Management Access Analyzer antes de guardar la política. IAM Access Analyzer ejecuta verificaciones de política para validarla contra la [Gramática de la política](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) de IAM y las [prácticas recomendadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html). Estas verificaciones generan hallazgos y proporcionan recomendaciones procesables para ayudarlo a crear políticas funcionales y que se ajustan a las prácticas recomendadas de seguridad. Para obtener más información sobre la validación de políticas utilizando IAM Access Analyzer, consulte [Validación de políticas de IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) en la *Guía del usuario de IAM*. Para ver una lista de advertencias, errores y sugerencias que devuelve IAM Access Analyzer, consulte [Referencia de verificación de políticas de IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Para obtener instrucciones sobre la solución de errores con una política, consulte [Solución de problemas de errores de acceso rechazado (403 Forbidden) en Amazon S3](troubleshoot-403-errors.md).

**Para crear o editar una política de bucket**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general** o **Buckets de directorio**.

1. En la lista de buckets, elija el nombre del bucket para el que desea crear una política de bucket o cuya política de bucket quiera editar.

1. Elija la pestaña **Permisos**.

1. En **Política de bucket**, elija **Editar**. Aparece la página **Edit bucket policy** (Editar política de bucket).

1. En la página **Editar política de bucket**, lleve a cabo alguna de las siguientes operaciones: 
   + Para ver ejemplos de políticas de bucket, elija **Ejemplos de políticas**. O consulte [Ejemplos de políticas de bucket de Amazon S3](example-bucket-policies.md) en la *Guía del usuario de Amazon S3*.
   + Para generar una política automáticamente o editar JSON en la sección **Política**, elija **Generador de políticas**.

   Si elige **Generador de políticas**, se abre el generador de políticas de AWS en una ventana nueva.

   1. En la página **Generador de políticas de AWS**, para **Seleccionar tipo de política**, elija **Política de bucket de S3**.

   1. Agregue una instrucción ingresando la información en los campos proporcionados y, a continuación, elija **Agregar declaración**. Repita este paso para tantas instrucciones como desee agregar. Para obtener más información acerca de estos campos, consulte la [Referencia de los elementos de las políticas de JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) en la *Guía del usuario de IAM*. 
**nota**  
Para mayor comodidad, la página **Editar la política del bucket** muestra el **ARN del bucket** (Nombre de recurso de Amazon) actual encima del campo de texto **Política**. Puede copiar este ARN para utilizarlo en las instrucciones de la página **Generador de políticas de AWS**. 

   1. Una vez que haya terminado de agregar instrucciones, elija **Generar política**.

   1. Copie el texto de la política generada, elija **Cerrar** y vuelva a la página **Editar política de bucket** en la consola de Amazon S3.

1. En el cuadro **Política**, edite la política existente o pegue la política de bucket desde el generador de políticas de AWS. Asegúrese de resolver advertencias de seguridad, errores, advertencias generales y sugerencias antes de guardar la política.
**nota**  
Las políticas de bucket tienen un límite de tamaño de 20 KB.

1. (Opcional) Elija **Preview external access** (Vista previa del acceso externo) en la esquina inferior derecha para obtener una vista previa de cómo la política nueva afecta al acceso público y entre cuentas al recurso. Antes de guardar la política, puede comprobar si introduce nuevos hallazgos de IAM Access Analyzer o resuelve las conclusiones existentes. Si no ve un analizador activo, elija **Ir a Access Analyzer** para [crear un analizador de la cuenta](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) en Access Analyzer de IAM. Para obtener más información, consulte [Vista previa del acceso](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html) en la *Guía del usuario de IAM*. 

1. Elija **Guardar cambios**, que le devuelve a la pestaña **Permisos**. 

# Control del acceso desde puntos de enlace de la VPC con políticas de bucket
<a name="example-bucket-policies-vpc-endpoint"></a>

Puede utilizar las políticas de bucket de Amazon S3 para controlar el acceso a los buckets desde puntos de conexión específicos de la nube privada virtual (VPC) o VPC específicas. Esta sección incluye ejemplos de políticas de bucket que se pueden utilizar para controlar el acceso al bucket de Amazon S3 desde puntos de conexión de VPC. Para obtener información acerca de cómo configurar los puntos de enlace de la VPC, consulte [Puntos de conexión de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) en la *guía del usuario de VPC*. 

Una VPC le permite lanzar recursos de AWS en una red virtual que haya definido. Un punto de conexión de VPC le permite crear una conexión privada entre la VPC y otro Servicio de AWS. Esta conexión privada no requiere acceso a través de Internet, de una conexión de red privada virtual (VPN), de una instancia NAT o de Direct Connect. 

Un punto de conexión de la VPC de Amazon S3 es una entidad lógica dentro de una VPC que permite la conectividad solo a Amazon S3. El punto de conexión de la VPC direcciona las solicitudes a Amazon S3 y direcciona las respuestas de vuelta a la VPC. Los puntos de conexión de la VPC solo cambian la forma en que se direccionan las solicitudes. Los nombres de DNS y los puntos de enlace públicos de Amazon S3 seguirán funcionando con los puntos de enlace de la VPC. Para obtener información importante acerca de cómo utilizar los puntos de conexión de VPC con Amazon S3, consulte [Puntos de conexión de puerta de enlace](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html) y [Puntos de conexión de puerta de enlace para Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html) en la *Guía del usuario de VPC*. 

Los puntos de enlace de VPC para Amazon S3 tienen dos formas de controlar el acceso a los datos de Amazon S3: 
+ Puede controlar qué solicitudes, usuarios o grupos obtienen acceso a través de un punto de conexión de la VPC específico. Para obtener información acerca de este tipo de control de acceso, consulte [Control del acceso a los puntos de conexión de VPC con políticas de puntos de conexión](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) en la *Guía del usuario de VPC*.
+ Puede controlar qué VPC o puntos de enlace de la VPC tienen acceso a sus buckets a través de las políticas de bucket de Amazon S3. Para ver ejemplos de este tipo de control de acceso de política de bucket, consulte los siguientes temas sobre restricción de acceso.

**Topics**
+ [Restricción del acceso a un punto de conexión de la VPC específico](#example-bucket-policies-restrict-accesss-vpc-endpoint)
+ [Restricción del acceso a una VPC específica](#example-bucket-policies-restrict-access-vpc)
+ [Restricción del acceso a un punto de conexión de VPC de IPv6](#example-bucket-policies-ipv6-vpc-endpoint)

**importante**  
Al aplicar las políticas de bucket de Amazon S3 para los puntos de conexión de VPC que se describen en esta sección, es posible que bloquee el acceso al bucket involuntariamente. Los permisos de bucket pensados para limitar el acceso del bucket a las conexiones procedente de su punto de conexión de la VPC pueden bloquear todas las conexiones al bucket. Para obtener información acerca de cómo corregir este problema, consulte [¿Cómo ajusto mi política de bucket cuando tiene la VPC o el ID de punto de conexión de VPC incorrectos?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/) en el *Centro de conocimiento de AWS Support*.

## Restricción del acceso a un punto de conexión de la VPC específico
<a name="example-bucket-policies-restrict-accesss-vpc-endpoint"></a>

El siguiente es un ejemplo de una política de bucket de Amazon S3 que restringe el acceso a un bucket específico, `awsexamplebucket1`, solo desde el punto de conexión de la VPC con el ID `vpce-1a2b3c4d`. Si el punto de conexión específico no se usa, la política deniega todo el acceso al bucket. La condición `aws:SourceVpce` especifica el punto de conexión. La condición `aws:SourceVpce` no requiere un nombre de recurso de Amazon (ARN) para el recurso de punto de conexión de VPC, solo el ID del punto de conexión de VPC. Para obtener más información acerca del uso de las condiciones en una política, consulte [Ejemplos de políticas de bucket que utilizan claves de condición](amazon-s3-policy-keys.md).

**importante**  
Antes de utilizar la política de ejemplo siguiente, reemplace el ID del punto de conexión de la VPC por un valor adecuado para su caso de uso. De lo contrario, no podrá acceder a su bucket.
Esta política desactiva el acceso a la consola al bucket especificado, ya que las solicitudes de consola no se originan en el punto de conexión de VPC especificado.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "Policy1415115909152",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPCE-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpce": "vpce-0abcdef1234567890"
         }
       }
     }
   ]
}
```

------

## Restricción del acceso a una VPC específica
<a name="example-bucket-policies-restrict-access-vpc"></a>

Puede crear una política de bucket para restringir el acceso a una VPC específica con la condición `aws:SourceVpc`. Esto es útil si tiene múltiples puntos de enlace de la VPC configurados en la misma VPC y desea administrar el acceso a sus buckets de Amazon S3 para todos sus puntos de enlace. El siguiente es un ejemplo de una política que deniega el acceso a `awsexamplebucket1` y sus objetos desde cualquier VPC `vpc-111bbb22` exterior. Si la VPC especificada no se usa, la política deniega todo el acceso al bucket. Esta instrucción no concede acceso al bucket. Para conceder el acceso, debe agregar una instrucción `Allow` independiente. La clave de condición `vpc-111bbb22` no requiere un ARN para el recurso de VPC, solo el ID de VPC.

**importante**  
Antes de utilizar la política de ejemplo siguiente, reemplace el ID de VPC por un valor adecuado para su caso de uso. De lo contrario, no podrá acceder a su bucket.
Esta política desactiva el acceso a la consola al bucket especificado porque las solicitudes de consola no se originan en la VPC especificada.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpc": "vpc-1a2b3c4d"
         }
       }
     }
   ]
}
```

------

## Restricción del acceso a un punto de conexión de VPC de IPv6
<a name="example-bucket-policies-ipv6-vpc-endpoint"></a>

La política de ejemplo siguiente deniega todas las acciones de Amazon S3 (`s3:`) en el bucket de *amzn-s3-demo-bucket* y sus objetos, a menos que la solicitud se origine en el punto de conexión de VPC especificado (`vpce-0a1b2c3d4e5f6g`) y la dirección IP de origen coincida con el bloque de CIDR de IPv6 proporcionado.

```
{
   "Version": "2012-10-17", 		 	 	 
   "Id": "Policy1415115909154",
   "Statement": [
     {
       "Sid": "AccessSpecificIPv6VPCEOnly",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpc": "vpc-0a1b2c3d4e5f6g4h2"
         },
        "NotIpAddress": {
          "aws:VpcSourceIp": "2001:db8::/32"
        }
       }
     }
   ]
}
```

Para obtener información sobre cómo restringir el acceso al bucket en función de IP o VPC específicas, consulte [¿Cómo puedo permitir que solo puntos de enlace o direcciones IP de VPC específicos accedan a mi bucket de Amazon S3?](https://repost.aws/knowledge-center/block-s3-traffic-vpc-ip) en el Centro de conocimiento de AWS re:Post.

# Ejemplos de políticas de bucket de Amazon S3
<a name="example-bucket-policies"></a>

Con las políticas de bucket de Amazon S3, puede proteger el acceso a los objetos de los buckets, de modo que solo los usuarios con los permisos adecuados puedan acceder a ellos. Incluso puede impedir que los usuarios autenticados sin los permisos adecuados accedan a los recursos de Amazon S3.

En esta sección se presentan ejemplos de casos de uso típicos para políticas de bucket. Estas políticas de ejemplo usan `amzn-s3-demo-bucket` como valor de recurso. Para probar estas políticas, sustituya `user input placeholders` por su propia información (como el nombre del bucket). 

Para conceder o denegar permisos a un conjunto de objetos, puede usar caracteres comodín (`*`) en nombres de recurso de Amazon (ARN) y otros valores. Por ejemplo, puede controlar el acceso a grupos de objetos que empiezan por un [prefijo](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) común o terminar con una extensión específica, como `.html`. 

Para obtener más información sobre el lenguaje de la política de AWS Identity and Access Management (IAM), consulte [Políticas y permisos en Amazon S3](access-policy-language-overview.md).

Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).

**nota**  
Si utiliza la consola de Amazon S3 para probar los permisos, debe conceder permisos adicionales requeridos por la consola: `s3:ListAllMyBuckets`, `s3:GetBucketLocation` y `s3:ListBucket`. Para ver un ejemplo de un tutorial en el que se conceden permisos a usuarios y se prueban esos permisos utilizando la consola, consulte [Controlar el acceso a un bucket con las políticas de usuario](walkthrough1.md).

Los recursos adicionales para crear políticas de bucket incluyen lo siguiente:
+ Para obtener una lista de las acciones, recursos y claves de condición de política de IAM que se pueden utilizar al crear una política de buckets, consulte [Acciones, recursos y claves de condición para Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) en la *Referencia de autorizaciones de servicios*.
+ Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).
+ Para obtener información sobre cómo crear una política de S3, consulte [Agregar una política de bucket mediante la consola de Amazon S3](add-bucket-policy.md).
+ Para solucionar los errores de una política, consulte [Solución de problemas de errores de acceso rechazado (403 Forbidden) en Amazon S3](troubleshoot-403-errors.md).

Si tiene problemas para agregar o actualizar una política, consulte [¿Por qué aparece el error “Invalid principal in policy” cuando intento actualizar mi política de bucket de Amazon S3?](https://repost.aws/knowledge-center/s3-invalid-principal-in-policy-error) en el Centro de conocimiento de AWS re:Post.

**Topics**
+ [Concesión de permisos de solo lectura a un usuario anónimo público](#example-bucket-policies-anonymous-user)
+ [Requerir cifrado](#example-bucket-policies-encryption)
+ [Administración de buckets mediante ACL predefinidas](#example-bucket-policies-public-access)
+ [Administración del acceso a objetos con etiquetado de objetos](#example-bucket-policies-object-tags)
+ [Administración del acceso a objetos mediante claves de condición globales](#example-bucket-policies-global-condition-keys)
+ [Administración del acceso en función de solicitudes HTTP o HTTPS](#example-bucket-policies-HTTP-HTTPS)
+ [Administración del acceso de los usuarios a carpetas específicas](#example-bucket-policies-folders)
+ [Administración del acceso para los registros de acceso](#example-bucket-policies-access-logs)
+ [Administración del acceso a una OAI de Amazon CloudFront](#example-bucket-policies-cloudfront)
+ [Administración del acceso para la Lente de almacenamiento de Amazon S3](#example-bucket-policies-lens)
+ [Administración de permisos para inventario de S3, análisis de S3 e informes de inventario de S3](#example-bucket-policies-s3-inventory)
+ [Exigir MFA](#example-bucket-policies-MFA)
+ [Prevención de que los usuarios eliminen objetos](#using-with-s3-actions-related-to-bucket-subresources)

## Concesión de permisos de solo lectura a un usuario anónimo público
<a name="example-bucket-policies-anonymous-user"></a>

Puede usar la configuración de la política para conceder acceso a usuarios anónimos públicos, lo que resulta útil si está configurando el bucket como un sitio web estático. Para conceder acceso a usuarios públicos anónimos, es necesario deshabilitar la configuración de Bloqueo de acceso público para su bucket. Para obtener más información acerca de cómo hacerlo y la política necesaria, consulte [Configurar permisos para el acceso a sitios web](WebsiteAccessPermissionsReqd.md). Para obtener información sobre cómo configurar políticas más restrictivas con el mismo propósito, consulte [¿Cómo puedo conceder acceso de lectura público a algunos objetos de mi bucket de Amazon S3?](https://repost.aws/knowledge-center/read-access-objects-s3-bucket) en el Centro de conocimiento de AWS.

De forma predeterminada, Amazon S3 bloquea el acceso público a su cuenta y sus buckets. Si desea utilizar un bucket para alojar un sitio web estático, puede utilizar estos pasos para editar la configuración de bloqueo de acceso público. 

**aviso**  
Antes de completar estos pasos, consulte [Bloquear el acceso público a su almacenamiento de Amazon S3](access-control-block-public-access.md) para asegurarse de que comprende y acepta los riesgos que implica permitir el acceso público. Cuando desactiva la configuración de acceso público de bloqueo para que el bucket sea público, cualquier usuario de Internet puede acceder al bucket. Le recomendamos que bloquee todo el acceso público a sus buckets.

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3/).

1. Elija el nombre del bucket que ha configurado como sitio web estático.

1. Elija **Permisos**.

1. En **Bloquear acceso público (configuración de bucket)**, elija **Editar**.

1. Desactive **Bloquear *todo el* acceso público** y elija **Guardar cambios**.  
![\[La consola de Amazon S3, que muestra la configuración del bucket de acceso público al bloque.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   Amazon S3 desactiva la configuración de Bloqueo de acceso público para su bucket. Para crear un sitio web público y estático, es posible que también tenga que [editar la configuración de Bloqueo de acceso público](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html) para su cuenta antes de agregar una política de bucket. Si la configuración de Bloqueo de acceso público de su cuenta está activada actualmente, verá una nota en **Bloquear acceso público (configuración del bucket)**.

## Requerir cifrado
<a name="example-bucket-policies-encryption"></a>

Puede requerir cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), como se muestra en los siguientes ejemplos.

### Requerir SSE-KMS para todos los objetos escritos en un bucket
<a name="example-bucket-policies-encryption-1"></a>

La política de ejemplo siguiente requiere que todos los objetos que se escriben en el bucket se cifren con el cifrado del lado del servidor mediante claves de AWS Key Management Service (AWS KMS) (SSE-KMS). Si el objeto no está cifrado con SSE-KMS, se deniega la solicitud.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "DenyObjectsThatAreNotSSEKMS",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
  "Condition": {
    "Null": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "true"
    }
  }
}]
}
```

------

### Requerir SSE-KMS con una AWS KMS key específica para todos los objetos escritos en un bucket
<a name="example-bucket-policies-encryption-2"></a>

La siguiente política de ejemplo impide que se escriban objetos en el bucket si no están cifrados con SSE-KMS mediante un ID de clave de KMS específico. Aunque los objetos se cifran con SSE-KMS mediante un cifrado predeterminado de encabezado por solicitud o de bucket, los objetos no se pueden escribir en el bucket si no se han cifrado con la clave de KMS especificada. Asegúrese de sustituir el ARN de clave de KMS que se usa en este ejemplo por su propio ARN de clave de KMS.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "DenyObjectsThatAreNotSSEKMSWithSpecificKey",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
  "Condition": {
    "ArnNotEqualsIfExists": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
    }
  }
}]
}
```

------

## Administración de buckets mediante ACL predefinidas
<a name="example-bucket-policies-public-access"></a>

### Concesión de permisos a varias cuentas para cargar objetos o establecer ACL de objetos para el acceso público
<a name="example-bucket-policies-acl-1"></a>

La política de ejemplo siguiente concede permisos `s3:PutObject` y `s3:PutObjectAcl` a múltiples Cuentas de AWS. Además, la política de ejemplo requiere que cualquier solicitud de estas operaciones incluya la [lista de control de acceso (ACL) predefinida `public-read`](acl-overview.md#canned-acl). Para obtener más información, consulte [Acciones de políticas para Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) y [Claves de condición de políticas para Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys).

**aviso**  
La `public-read` ACL predefinida permite que cualquier persona del mundo vea los objetos del bucket. 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](WebsiteHosting.md). Si desea habilitar la configuración del acceso público de bloques para el alojamiento de sitios web estáticos, consulte el [Tutorial: Configuración de un sitio web estático en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html).

------
#### [ JSON ]

****  

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

------

### Conceder permisos entre cuentas para cargar objetos al mismo tiempo que se garantiza que el propietario del bucket tenga el control total
<a name="example-bucket-policies-acl-2"></a>

En el siguiente ejemplo, se muestra cómo permitir que otra Cuenta de AWS cargue objetos en el bucket al tiempo que se asegura de que tiene el control total de los objetos cargados. Esta política otorga una Cuenta de AWS específica (*`111122223333`*) la capacidad de cargar objetos solo si esa cuenta incluye la ACL predefinida `bucket-owner-full-control` en la carga. La condición `StringEquals` en la política especifica la clave de condición `s3:x-amz-acl` para expresar el requisito de ACL predefinido. Para obtener más información, consulte [Claves de condición de políticas para Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). 

------
#### [ JSON ]

****  

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

------

## Administración del acceso a objetos con etiquetado de objetos
<a name="example-bucket-policies-object-tags"></a>

### Permitir a un usuario leer solo los objetos que tienen una clave y valor de etiqueta específicos
<a name="example-bucket-policies-tagging-1"></a>

La siguiente política de permisos limita al usuario a leer solo los objetos que tengan la clave y el valor de la etiqueta `environment: production`. Esta política usa la clave de condición `s3:ExistingObjectTag` para especificar la clave y el valor de etiqueta.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Principal":{
            "AWS":"arn:aws:iam::111122223333:role/JohnDoe"
         },
         "Effect":"Allow",
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
         "Condition":{
            "StringEquals":{
               "s3:ExistingObjectTag/environment":"production"
            }
         }
      }
   ]
}
```

------

### Restringir las claves de etiqueta de objetos que los usuarios pueden agregar
<a name="example-bucket-policies-tagging-2"></a>

La política de ejemplo siguiente concede un permiso de usuario para realizar la acción `s3:PutObjectTagging`, lo que permite al usuario agregar etiquetas a un objeto existente. La condición usa la clave de condición `s3:RequestObjectTagKeys` para especificar las claves de etiqueta permitidas, como `Owner` o `CreationDate`. Para obtener más información, consulte [Creación de una condición que pruebe valores de varias claves](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) en la *Guía para usuarios de IAM*.

La política garantiza que cada clave de etiqueta especificada en la solicitud sea una clave de etiqueta autorizada. El calificador `ForAnyValue` de la condición garantiza que al menos una de las claves especificadas estará presente en la solicitud.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::111122223333:role/JohnDoe"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
            "Owner",
            "CreationDate"
          ]
        }
      }
    }
  ]
}
```

------

### Requerir una clave y un valor de etiqueta específica al permitir a los usuarios agregar etiquetas de objetos
<a name="example-bucket-policies-tagging-3"></a>

La política de ejemplo siguiente concede un permiso de usuario para realizar la acción `s3:PutObjectTagging`, lo que permite al usuario agregar etiquetas a un objeto existente. La condición requiere que el usuario incluya una clave de etiqueta específica (como `Project`) con el valor establecido en `X`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::111122223333:user/JohnDoe"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X"
        }
      }
    }
  ]
}
```

------

### Permitir a un usuario agregar objetos solo con una clave y valor de etiqueta de objetos específicos
<a name="example-bucket-policies-tagging-4"></a>

La política de ejemplo siguiente concede un permiso de usuario para realizar la acción `s3:PutObject`, de modo que pueda agregar objetos a un bucket. Sin embargo, la instrucción `Condition` restringe las claves de etiqueta y los valores permitidos en los objetos cargados. En este ejemplo, el usuario solo puede agregar al bucket objetos que tengan la clave de etiqueta específica (`Department`) con el valor establecido en `Finance`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Principal":{
            "AWS":[
                 "arn:aws:iam::111122223333:user/JohnDoe"
         ]
        },
        "Effect": "Allow",
        "Action": [
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "StringEquals": {
                "s3:RequestObjectTag/Department": "Finance"
            }
        }
    }]
}
```

------

## Administración del acceso a objetos mediante claves de condición globales
<a name="example-bucket-policies-global-condition-keys"></a>

Las [claves de condición globales](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) son claves de contexto de condición con un prefijo `aws`. Servicios de AWS pueden admitir claves de condición globales o proporcionar claves específicas del servicio que incluyan el prefijo de servicio. Puede utilizar el elemento `Condition` de una política JSON para comparar las claves de una solicitud con los valores de claves que especifique en la política.

### Restringir el acceso solo a entregas de registros de acceso al servidor de Amazon S3
<a name="example-bucket-policies-global-condition-keys-1"></a>

En la política de bucket de ejemplo siguiente, la clave de condición global [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) se utiliza para comparar el [Nombre de recurso de Amazon (ARN)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) del recurso, que realiza una solicitud de servicio a servicio con el ARN especificado en la política. La clave de condición global `aws:SourceArn` se usa para evitar que el servicio de Amazon S3 se utilice como un [sustituto confuso](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) durante las transacciones entre servicios. Solo el servicio de Amazon S3 tiene permiso para agregar objetos al bucket de Amazon S3.

Esta política de bucket de ejemplo concede permisos `s3:PutObject` solo a la entidad principal del servicio de registro (`logging.s3.amazonaws.com`). 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPutObjectS3ServerAccessLogsPolicy",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket1"
                }
            }
        },
        {
            "Sid": "RestrictToS3ServerAccessLogs",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "ForAllValues:StringNotEquals": {
                    "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com"
                }
            }
        }
    ]
}
```

------

### Permitir el acceso solo a la organización
<a name="example-bucket-policies-global-condition-keys-2"></a>

Si desea exigir que todas las [entidades principales de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) que accedan a un recurso provengan de una Cuenta de AWS en la organización (incluida la cuenta de administración de AWS Organizations), puede utilizar la clave de condición global `aws:PrincipalOrgID`.

Para conceder o restringir este tipo de acceso, defina la condición `aws:PrincipalOrgID` y establezca el valor del [ID de la organización](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_org_details.html) en la política de bucket. El ID de la organización se usa para controlar el acceso al bucket. Al usar la condición `aws:PrincipalOrgID`, los permisos de la política de bucket también se aplican a todas las cuentas nuevas que se agreguen a la organización.

Este es un ejemplo de política de bucket basada en recursos que puede utilizar para conceder a determinadas entidades principales de IAM de la organización acceso directo al bucket. Al agregar la clave de condición global `aws:PrincipalOrgID` a la política de bucket, ahora es necesario que la cuenta de la entidad principal esté en la organización para poder acceder al recurso. Aunque especifique accidentalmente una cuenta incorrecta al conceder el acceso, la [clave de condición global aws:PrincipalOrgID](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) actúa como una protección adicional. Cuando esta clave global se utiliza en una política, evita que todas las entidades principales de fuera de la organización especificada accedan al bucket de S3. Solo las entidades principales de las cuentas de la organización mostradas pueden obtener acceso al recurso.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AllowGetObject",
        "Principal": {
            "AWS": "*"
        },
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalOrgID": ["o-aa111bb222"]
            }
        }
    }]
}
```

------

## Administración del acceso en función de solicitudes HTTP o HTTPS
<a name="example-bucket-policies-HTTP-HTTPS"></a>

### Restringir el acceso solo a las solicitudes HTTPS
<a name="example-bucket-policies-use-case-HTTP-HTTPS-1"></a>

Si quiere evitar que los posibles atacantes manipulen el tráfico de la red, puede usar HTTPS (TLS) para permitir solo conexiones cifradas y, al mismo tiempo, restringir el acceso de las solicitudes HTTP al bucket. Para determinar si la solicitud es HTTP o HTTPS, utilice la clave de condición global [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) en la política de bucket de S3. La clave de condición `aws:SecureTransport` comprueba si una solicitud se envió mediante HTTP.

Si una solicitud devuelve `true`, significa que la solicitud se envió a través de HTTPS. Si la solicitud devuelve `false`, significa que la solicitud se envió a través de HTTP. A continuación, puede permitir o denegar el acceso al bucket en función del esquema de solicitud deseado.

En el ejemplo siguiente, la política de bucket deniega explícitamente las solicitudes HTTP. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "RestrictToTLSRequestsOnly",
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket",
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }]
}
```

------

### Restringir el acceso a un HTTP referer específico
<a name="example-bucket-policies-HTTP-HTTPS-2"></a>

Suponga que tiene un sitio web con el nombre de dominio *`www.example.com`* o *`example.com`* con enlaces a fotografías y vídeos almacenados en el bucket denominado `amzn-s3-demo-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 el sitio web, puede agregar una política de bucket que conceda el permiso `s3:GetObject` con una condición de la solicitud `GET` que debe proceder de páginas web específicas. La política siguiente restringe las solicitudes mediante la condición `StringLike` con la clave de condición `aws:Referer`.

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 HTTP 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 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer) en la *Guía del usuario de IAM*.

## Administración del acceso de los usuarios a carpetas específicas
<a name="example-bucket-policies-folders"></a>

### Conceder acceso a los usuarios a carpetas específicas
<a name="example-bucket-policies-folders-1"></a>

Suponga que está intentando conceder a los usuarios acceso a una carpeta específica. Si el usuario de IAM y el bucket de S3 pertenecen a la misma Cuenta de AWS, puede utilizar una política de IAM para conceder al usuario acceso a una carpeta de bucket específica. Con este enfoque, no es necesario actualizar la política de bucket para conceder el acceso. Puede agregar la política de IAM a un rol de IAM al que puedan cambiarse varios usuarios. 

Si la identidad de IAM y el bucket de S3 pertenecen a Cuentas de AWS diferentes, debe conceder acceso entre cuentas tanto en la política de IAM como en la política de bucket. Para obtener más información sobre cómo conceder acceso entre cuentas, consulte [Propietario del bucket que concede permisos de bucket entre cuentas](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html).

La política de bucket de ejemplo siguiente concede a `JohnDoe` acceso completo a la consola solo a su carpeta (`home/JohnDoe/`). Al crear una carpeta `home` y conceder los permisos adecuados a los usuarios, puede hacer que varios usuarios compartan un solo bucket. Esta política consta de tres instrucciones `Allow`:
+ `AllowRootAndHomeListingOfCompanyBucket`: permite al usuario (`JohnDoe`) mostrar los objetos en el nivel raíz del bucket `amzn-s3-demo-bucket` y en la carpeta `home`. Esta instrucción también permite al usuario buscar el prefijo `home/` mediante la consola.
+ `AllowListingOfUserFolder`: permite al usuario (`JohnDoe`) mostrar todos los objetos de la carpeta `home/JohnDoe/` y cualquier subcarpeta.
+ `AllowAllS3ActionsInUserFolder`: permite al usuario realizar todas las acciones de Amazon S3 mediante la concesión de los permisos `Read`, `Write` y `Delete`. Los permisos están limitados a la carpeta principal del propietario del bucket.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRootAndHomeListingOfCompanyBucket",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": ["", "home/", "home/JohnDoe"],
                    "s3:delimiter": ["/"]
                }
            }
        },
        {
            "Sid": "AllowListingOfUserFolder",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Action": ["s3:ListBucket"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["home/JohnDoe/*"]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInUserFolder",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Action": ["s3:*"],
            "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/home/JohnDoe/*"]
        }
    ]
}
```

------

## Administración del acceso para los registros de acceso
<a name="example-bucket-policies-access-logs"></a>

### Conceder acceso al equilibrador de carga de aplicación para habilitar los registros de acceso
<a name="example-bucket-policies-access-logs-1"></a>

Al habilitar los registros de acceso del equilibrador de carga de aplicación, debe especificar el nombre del bucket de S3 donde el equilibrador de carga [almacenará los registros](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#access-log-create-bucket). El bucket debe tener una [política asociada](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#attach-bucket-policy) que conceda permiso a Elastic Load Balancing para escribir en el bucket.

En el siguiente ejemplo, la política de bucket concede permiso a Elastic Load Balancing (ELB) para escribir los registros de acceso en el bucket:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/111122223333/*"
        }
    ]
}
```

------

**nota**  
Asegúrese de sustituir `elb-account-id` por el ID de Cuenta de AWS para Elastic Load Balancing para la Región de AWS. Para ver la lista de regiones de Elastic Load Balancing, consulte [Adjuntar una política al bucket de Amazon S3](https://docs.aws.amazon.com//elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy) en la *Guía del usuario de Elastic Load Balancing*.

Si la Región de AWS no aparece en la lista de regiones de Elastic Load Balancing compatibles, utilice la siguiente política, que concede permisos al servicio de entrega de registros especificado.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
       "Principal": {
         "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
          },
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/111122223333/*"
    }
  ]
}
```

------

A continuación, asegúrese de configurar los [registros de acceso de Elastic Load Balancing](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#enable-access-logs) habilitándolos. Puede [verificar los permisos del bucket](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#verify-bucket-permissions) creando un archivo de prueba.

## Administración del acceso a una OAI de Amazon CloudFront
<a name="example-bucket-policies-cloudfront"></a>

### Conceder permiso a una OAI de Amazon CloudFront
<a name="example-bucket-policies-cloudfront-1"></a>

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 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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) 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 bucket de S3 para conceder acceso a una OAI de CloudFront, consulte [Migración de la identidad de acceso de origen (OAI) al control de acceso de origen (OAC)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#migrate-from-oai-to-oac) en la *Guía para desarrolladores de Amazon CloudFront*.

Para usar este ejemplo:
+ Reemplace `EH1HDMB1FH2TC` por el ID de la OAI. Para buscar el ID de la OAI, consulte la [Origin Access Identity page](https://console.aws.amazon.com/cloudfront/home?region=us-east-1#oai:) (Página de identidad de acceso de origen) en la consola de CloudFront o utilice [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html) en la API de CloudFront.
+ Reemplace `amzn-s3-demo-bucket` con el nombre de su bucket.

------
#### [ JSON ]

****  

```
{
    "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:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

## Administración del acceso para la Lente de almacenamiento de Amazon S3
<a name="example-bucket-policies-lens"></a>

### Conceder permisos para Lente de almacenamiento de Amazon S3
<a name="example-bucket-policies-lens-1"></a>

Lente de almacenamiento de S3 agrega las métricas y muestra la información en la sección **Account snapshot** (Instantánea de la cuenta) en la página **Buckets** de la consola de Amazon S3. La Lente de almacenamiento de S3 también proporciona un panel interactivo que puede utilizar para visualizar información y tendencias, marcar valores atípicos y recibir recomendaciones para optimizar los costos de almacenamiento y aplicar las prácticas recomendadas de protección de datos. El panel tiene opciones de desglose para generar y visualizar información en el nivel de la organización, la cuenta, la Región de AWS, la clase de almacenamiento, el bucket, el prefijo o el grupo de Lente de almacenamiento. También puede enviar un informe de métricas diario en CSV o formato Parquet a un bucket de S3 de uso general o exportar las métricas directamente a un bucket de tablas de S3 administrado de AWS.

Lente de almacenamiento de S3 puede exportar las métricas de uso de almacenamiento agregado a 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*. Al configurar la exportación de métricas de S3 Storage Lens, debe tener una política de buckets para el bucket de destino. Para obtener más información, consulte [Supervisión de la actividad y el uso de almacenamiento con Lente de almacenamiento de Amazon S3](storage_lens.md).

En el siguiente ejemplo de política de bucket, se concede a Amazon S3 permiso para escribir objetos (solicitudes `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.

------
#### [ JSON ]

****  

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

------

Cuando configure una exportación de métricas a nivel de organización de Lente de almacenamiento de S3, utilice la siguiente modificación de la instrucción `Resource` de la política de buckets anterior.

```
1. "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/destination-prefix/StorageLens/your-organization-id/*",
```

## Administración de permisos para inventario de S3, análisis de S3 e informes de inventario de S3
<a name="example-bucket-policies-s3-inventory"></a>

### Concesión de permisos para el inventario de S3 y el análisis de S3
<a name="example-bucket-policies-s3-inventory-1"></a>

El inventario de S3 crea listas de los objetos en un bucket y la exportación de análisis de clase de almacenamiento de análisis de 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 se denomina *bucket de destino*. Al configurar un inventario o una exportación de análisis, debe crear una política de buckets para el bucket de destino. Para obtener más información, consulte [Catálogo y análisis de sus datos con Inventario de S3](storage-inventory.md) y [Análisis de Amazon S3: análisis de clases de almacenamiento](analytics-storage-class.md).

En el siguiente ejemplo de política de bucket, se concede a Amazon S3 permiso para escribir objetos (solicitudes `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 S3 y la exportación de análisis de S3.

------
#### [ JSON ]

****  

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

------

### Control de la creación de la configuración del informe de inventario de S3
<a name="example-bucket-policies-s3-inventory-2"></a>

[Catálogo y análisis de sus datos con Inventario de S3](storage-inventory.md) crea listas de los objetos de un bucket de S3 y los metadatos para cada objeto. El permiso `s3:PutInventoryConfiguration` permite a un usuario crear una configuración de inventario que incluya todos los campos de metadatos de objeto disponibles de manera predeterminada y especificar el bucket de destino para almacenar el inventario. Un usuario con acceso de lectura a los objetos del bucket de destino puede acceder a todos los campos de metadatos de objetos que están disponibles en el informe de inventario. Para obtener más información acerca de los campos de metadatos disponibles en el inventario de S3, consulte [Lista de Amazon S3 Inventory](storage-inventory.md#storage-inventory-contents).

Para impedir que un usuario configure un informe de Inventario de S3, retire el permiso `s3:PutInventoryConfiguration` al usuario.

Algunos campos de metadatos de objetos en las configuraciones de los informes de Inventario de S3 son opcionales, lo que significa que están disponibles de manera predeterminada pero pueden restringirse cuando se concede el permiso `s3:PutInventoryConfiguration` a un usuario. Puede controlar si los usuarios pueden incluir estos campos de metadatos opcionales en sus informes mediante la clave de condición `s3:InventoryAccessibleOptionalFields`. Para obtener una lista de los campos de metadatos opcionales disponibles en Inventario de S3, consulte [https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody) en la *Referencia de la API de Amazon Simple Storage Service*.

Para conceder a un usuario permiso para crear una configuración de inventario con campos de metadatos opcionales específicos, utilice la clave de condición `s3:InventoryAccessibleOptionalFields` para delimitar las condiciones de su política de buckets. 

En el siguiente ejemplo de política, se otorga a un usuario (`Ana`) permiso para crear una configuración de inventario de forma condicional. En la condición `ForAllValues:StringEquals` de la política, se usa la clave de condición `s3:InventoryAccessibleOptionalFields` para especificar los dos campos de metadatos opcionales permitidos, es decir, `Size` y `StorageClass`. Por lo tanto, cuando `Ana` crea una configuración de inventario, los únicos campos de metadatos opcionales que puede incluir son `Size` y `StorageClass`. 

------
#### [ JSON ]

****  

```
{
	"Id": "InventoryConfigPolicy",
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
			"Sid": "AllowInventoryCreationConditionally",
			"Effect": "Allow",			
			"Principal": {
				"AWS": "arn:aws:iam::111122223333:user/Ana"
			},			
			"Action": 
				"s3:PutInventoryConfiguration",
			"Resource": 
				"arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET",
			"Condition": {
				"ForAllValues:StringEquals": {
					"s3:InventoryAccessibleOptionalFields": [
					   "Size",
					   "StorageClass"
					   ]
				  }
				}
			}
	]
}
```

------

Para evitar que un usuario configure un informe de Inventario de S3 que incluya campos de metadatos opcionales específicos, añada una instrucción `Deny` explícita a la política de buckets para el bucket de origen. En el siguiente ejemplo de política de buckets, se impide al usuario `Ana` crear una configuración de inventario en el bucket de origen `amzn-s3-demo-source-bucket` que incluya los campos de metadatos opcionales `ObjectAccessControlList` o `ObjectOwner`. El usuario `Ana` aún puede crear una configuración de inventario con otros campos de metadatos opcionales.

```
 1. {
 2. 	"Id": "InventoryConfigSomeFields",
 3. 	"Version": "2012-10-17",		 	 	 
 4. 	"Statement": [{
 5. 			"Sid": "AllowInventoryCreation",
 6. 			"Effect": "Allow",
 7. 			"Principal": {
 8. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
 9. 			},
10. 			"Action": "s3:PutInventoryConfiguration",			
11. 			"Resource": 
12. 				"arn:aws:s3:::amzn-s3-demo-source-bucket",
13. 
14. 		},
15. 		{
16. 			"Sid": "DenyCertainInventoryFieldCreation",
17. 			"Effect": "Deny",
18. 			"Principal": {
19. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
20. 			},
21. 			"Action": "s3:PutInventoryConfiguration",	
22. 			"Resource": 
23. 			  "arn:aws:s3:::amzn-s3-demo-source-bucket",			
24. 			"Condition": {
25. 				"ForAnyValue:StringEquals": {
26. 					"s3:InventoryAccessibleOptionalFields": [
27. 					   "ObjectOwner",
28. 					   "ObjectAccessControlList"
29. 					   ]
30. 				  }
31. 				}
32. 			}
33. 	]
34. }
```

**nota**  
El uso de la clave de condición `s3:InventoryAccessibleOptionalFields` en las políticas de buckets no afecta a la entrega de informes de inventario basados en las configuraciones de inventario existentes. 

**importante**  
Recomendamos que use `ForAllValues` con un efecto `Allow` o `ForAnyValue` con un efecto `Deny`, tal y como se muestra en los ejemplos anteriores.  
No utilice `ForAllValues` con un efecto `Deny` ni `ForAnyValue` con un efecto `Allow`, ya que estas combinaciones pueden ser demasiado restrictivas y bloquear la eliminación de la configuración del inventario.  
Para obtener más información sobre los operadores de conjuntos de condiciones `ForAllValues` y `ForAnyValue`, consulte [Claves de contexto multivalor](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys) en la *Guía del usuario de IAM*.

## Exigir MFA
<a name="example-bucket-policies-MFA"></a>

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. MFA es 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](https://aws.amazon.com/mfa/). Puede solicitar MFA para cualquier solicitud de acceso a sus recursos de Amazon S3. 

Para implementar el requisito de MFA, utilice la clave de condición `aws:MultiFactorAuthAge` en una política de bucket. 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 de condición `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ó utilizando 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. 

Esta política de ejemplo deniega cualquier operación de Amazon S3 en la carpeta *`/taxdocuments`* del bucket `amzn-s3-demo-bucket` si la solicitud no se autentica utilizando MFA. Para obtener más información sobre MFA, consulte [Uso de autenticación multifactor (MFA) en AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html) en la *Guía del usuario de IAM*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-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 de condición `aws:MultiFactorAuthAge` es nulo, lo que indica que las credenciales de seguridad temporales en la solicitud se crearon sin un dispositivo de MFA. 

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

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "DenyInsecureConnections",
        "Effect": "Deny",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
      },
      {
        "Sid": "AllowGetObject",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": ["s3:GetObject"],
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
      }
    ]
 }
```

------

Puede utilizar de forma opcional una condición numérica para limitar la duración de la validez de la clave `aws:MultiFactorAuthAge`. La duración que especifique con la clave `aws:MultiFactorAuthAge` es independiente 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). 

------
#### [ JSON ]

****  

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

------

## Prevención de que los usuarios eliminen objetos
<a name="using-with-s3-actions-related-to-bucket-subresources"></a>

De forma predeterminada, los usuarios no tienen permisos. Sin embargo, a medida que crea políticas, puede conceder permisos a los usuarios que no quería conceder. Para evitar esas ambigüedades en los permisos, puede escribir una política de acceso más estricta y agregar una denegación explícita. 

Para impedir de forma explícita que los usuarios o las cuentas eliminen objetos, debe agregar las siguientes acciones a una política de bucket: permisos `s3:DeleteObject`, `s3:DeleteObjectVersion`, y `s3:PutLifecycleConfiguration`. Las tres acciones son necesarias porque puede eliminar objetos al llamar de forma explícita a las operaciones de la API `DELETE Object` o configurar su ciclo de vida (consulte [Administración del ciclo de vida de los objetos](object-lifecycle-mgmt.md)) para que Amazon S3 pueda eliminar los objetos cuando acabe su vida útil.

En el siguiente ejemplo de política, debe denegar explícitamente permisos `DELETE Object` al usuario `MaryMajor`. Una instrucción `Deny` explícita siempre sustituye a cualquier otro permiso concedido.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "statement1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/MaryMajor"
      },
      "Action": [
        "s3:GetObjectVersion",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
	 	"arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    },
    {
      "Sid": "statement2",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/MaryMajor"
      },
      "Action": [
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:PutLifecycleConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
	    "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    }
  ]
}
```

------

# Ejemplos de políticas de bucket que utilizan claves de condición
<a name="amazon-s3-policy-keys"></a>

Puede utilizar el lenguaje de la política de acceso para especificar condiciones al conceder permisos. Puede utilizar el elemento opcional `Condition` o el bloque de `Condition` para especificar condiciones para cuando una política está en vigor. 

Para obtener información sobre las políticas que utilizan claves de condición de Amazon S3 para operaciones de objetos y bucket, consulte los siguientes ejemplos. Para obtener más información acerca de las claves de condición, consulte [Claves de condición de políticas para Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). Para obtener una lista completa de las acciones, claves de condición y recursos de Amazon S3 que puede especificar en las políticas, consulte [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) en la *Referencia de autorización de servicios*.

Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).

## Ejemplos: claves de condición de Amazon S3 para operaciones con objetos
<a name="object-keys-in-amazon-s3-policies"></a>

Los siguientes ejemplos muestran cómo puede utilizar claves de condición específicas de Amazon S3 para operaciones con objetos. Para obtener una lista completa de las acciones, claves de condición y recursos de Amazon S3 que puede especificar en las políticas, consulte [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) en la *Referencia de autorización de servicios*.

Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).

Varias de las políticas de ejemplo muestran cómo se pueden utilizar las claves de condiciones con las operaciones [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html). La operación PUT Object permite encabezados específicos para la lista de control de acceso (ACL) que puede utilizar para conceder permisos basados en la ACL. Mediante el uso de estas claves de condición, puede configurar una condición para solicitar permisos de acceso específicos cuando el usuario carga un objeto. También puede conceder permisos basados en ACL con la operación PutObjectAcl. Para obtener más información, consulte [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) en la *referencia de la API de Amazon Simple Storage Service de Amazon S3*. Para obtener más información acerca de las ACL, consulte [Información general de las Listas de control de acceso (ACL)](acl-overview.md).

**Topics**
+ [Ejemplo 1: Concesión de permisos `s3:PutObject` que requieren que los objetos se almacenen con cifrado del servidor](#putobject-require-sse-2)
+ [Ejemplo 2: Concesión de permisos `s3:PutObject` para copiar objetos con una restricción en el origen de la copia](#putobject-limit-copy-source-3)
+ [Ejemplo 3: Concesión de acceso a una versión específica de un objeto](#getobjectversion-limit-access-to-specific-version-3)
+ [Ejemplo 4: Concesión de permisos basados en etiquetas de objeto](#example-object-tagging-access-control)
+ [Ejemplo 5: Restricción del acceso mediante el ID de Cuenta de AWS del propietario del bucket](#example-object-resource-account)
+ [Ejemplo 6: Necesidad de una versión mínima de TLS](#example-object-tls-version)
+ [Ejemplo 7: Exclusión de determinadas entidades principales de una instrucción `Deny`](#example-exclude-principal-from-deny-statement)
+ [Ejemplo 8: exigencia a los clientes para cargar objetos de forma condicional en función de los nombres de clave de objeto o ETag](#example-conditional-writes-enforce)

### Ejemplo 1: Concesión de permisos `s3:PutObject` que requieren que los objetos se almacenen con cifrado del servidor
<a name="putobject-require-sse-2"></a>

Supongamos que la cuenta A tiene un bucket. El administrador de la cuenta desea conceder permisos para cargar objetos a Jane, usuario en la cuenta A, con la condición de que Jane siempre solicite el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3). El administrador de la cuenta A puede especificar este requisito mediante la clave de condición `s3:x-amz-server-side-encryption`, tal como se muestra. El par clave-valor del siguiente bloque de `Condition` especifica la clave de condición `s3:x-amz-server-side-encryption` y SSE-S3 (`AES256`) como tipo de cifrado:

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }}
```

Al probar este permiso mediante la AWS CLI, debe agregar el cifrado necesario mediante el parámetro `--server-side-encryption`, como se muestra en el siguiente ejemplo. Para utilizar este comando de ejemplo, sustituya `user input placeholders` por su propia información. 

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin
```

### Ejemplo 2: Concesión de permisos `s3:PutObject` para copiar objetos con una restricción en el origen de la copia
<a name="putobject-limit-copy-source-3"></a>

En una solicitud de objetos `PUT`, cuando especifica un objeto de origen, la solicitud es una operación de copia (consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)). Por lo tanto, el propietario del bucket puede conceder un permiso al usuario para copiar objetos con restricciones en el origen, por ejemplo:
+ Permita copiar objetos solo desde el bucket de origen especificado (por ejemplo, `amzn-s3-demo-source-bucket`).
+ Permita copiar objetos del bucket de origen especificado y solo los objetos cuyo prefijo de nombre de clave comienza como prefijo específico, como *`public/`* (por ejemplo, `amzn-s3-demo-source-bucket/public/*`).
+ Permita copiar solo un objeto específico desde el bucket de origen (por ejemplo, `amzn-s3-demo-source-bucket/example.jpg`).

La siguiente política de bucket concede a un usuario (`Dave`) el permiso `s3:PutObject`. Esta política le permite copiar solo los objetos con la condición de que la solicitud incluya el encabezado `s3:x-amz-copy-source` y el valor del encabezado especifique el prefijo de nombre de clave `/amzn-s3-demo-source-bucket/public/*`. Para utilizar esta política de ejemplo, sustituya `user input placeholders` por su propia información.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Sid": "cross-account permission to user in your own account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
        },
        {
            "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/*"
                }
            }
        }
    ]
}
```

------

**Prueba de la política con la AWS CLI**  
Puede usar el comando AWS CLI de la `copy-object` para probar el permiso. Para especificar el origen, debe añadir el parámetro `--copy-source` y el prefijo de nombre de clave debe coincidir con el prefijo permitido en la política. Tiene que proporcionar las credenciales al usuario Dave utilizando el parámetro `--profile`. Para obtener más información sobre la configuración de la AWS CLI, consulte [Developing with Amazon S3 using the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) en la *Amazon S3 API Reference*.

```
aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg 
--copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
```

**Conceder permiso para copiar solo un objeto específico**  
La política anterior utiliza la condición `StringNotLike`. Para conceder el permiso para copiar solo un objeto específico, debe cambiar la condición de `StringNotLike` a `StringNotEquals` y, a continuación, especificar la clave exacta del objeto, como se muestra en el ejemplo siguiente. Para utilizar este comando de ejemplo, sustituya `user input placeholders` por su propia información.

```
"Condition": {
       "StringNotEquals": {
           "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg"
       }
}
```

### Ejemplo 3: Concesión de acceso a una versión específica de un objeto
<a name="getobjectversion-limit-access-to-specific-version-3"></a>

Supongamos que la cuenta A tiene un bucket con control de versiones habilitado. El bucket tiene varias versiones del objeto `HappyFace.jpg`. El administrador de la cuenta A desea ahora conceder al usuario `Dave` permiso para obtener solo una versión específica del objeto. Para ello, el administrador de la cuenta debe conceder al usuario `Dave` el permiso `s3:GetObjectVersion` de forma condicional, como se muestra en el siguiente ejemplo. El par clave-valor en el bloque `Condition` especifica la clave de condición `s3:VersionId`. En este caso, para recuperar el objeto del bucket habilitado para el control de versiones especificado, `Dave` tiene que saber el ID de versión exacta del objeto. Para utilizar esta política de ejemplo, sustituya `user input placeholders` por su propia información.

Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) en la *Referencia de la API de Amazon Simple Storage Service*. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg"
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg",
            "Condition": {
                "StringNotEquals": {
                    "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e"
                }
            }
        }
    ]
}
```

------

**Prueba de la política con la AWS CLI**  
Puede probar los permisos en esta política con el comando `get-object` de la AWS CLI con el parámetro `--version-id` para identificar la versión específica del objeto a recuperar. El comando recupera la versión especificada del objeto y lo guarda en el archivo `OutputFile.jpg`.

```
aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave
```

### Ejemplo 4: Concesión de permisos basados en etiquetas de objeto
<a name="example-object-tagging-access-control"></a>

Para obtener ejemplos de cómo utilizar claves de condición de etiquetado de objetos con operaciones de Amazon S3, consulte [Etiquetado y políticas de control de acceso](tagging-and-policies.md).

### Ejemplo 5: Restricción del acceso mediante el ID de Cuenta de AWS del propietario del bucket
<a name="example-object-resource-account"></a>

Puede utilizar la clave de condición `aws:ResourceAccount` o `s3:ResourceAccount` para escribir políticas de punto de conexión de IAM o nube privada virtual (VPC) que restrinjan el acceso de usuarios, roles o aplicaciones a los buckets de Amazon S3 que pertenecen a un ID de Cuenta de AWS específico. Puede usar estas claves de condición para restringir que los clientes dentro de la VPC accedan a los buckets que no posee.

Sin embargo, debe tener en cuenta que algunos servicios de AWS dependen del acceso a buckets administrados de AWS. Por lo tanto, es posible que el uso de la clave `aws:ResourceAccount` o `s3:ResourceAccount` de la política de IAM también afecte al acceso a estos recursos. Para obtener más información, consulte los siguientes recursos:
+ [Restringir el acceso a los buckets de una Cuenta de AWS específica](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3) en la *Guía de AWS PrivateLink*
+ [Restringir el acceso a los buckets que utiliza Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-minimum-s3-perms) en la *Guía de Amazon ECR*
+ [Proporcionar el acceso necesario a Systems Manager para buckets de Amazon S3 administrados por AWS](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-minimum-s3-permissions.html) en la *Guía de AWS Systems Manager*

Para obtener más información sobre las claves de condición `aws:ResourceAccount` y `s3:ResourceAccount` y los ejemplos que muestran cómo usarlas, consulte [Limitar el acceso a los buckets de Amazon S3 propiedad de unas Cuentas de AWS específicas](https://aws.amazon.com/blogs/storage/limit-access-to-amazon-s3-buckets-owned-by-specific-aws-accounts/) en el *blog sobre almacenamiento de AWS*.

### Ejemplo 6: Necesidad de una versión mínima de TLS
<a name="example-object-tls-version"></a>

Puede utilizar la clave de condición `s3:TlsVersion` para escribir políticas de bucket, de punto de conexión de nube privada virtual (VPCE) o de IAM que restrinjan el acceso de aplicaciones o usuarios a buckets de Amazon S3 en función de la versión de TLS que utilice el cliente. Puede utilizar esta clave de condición para escribir políticas que requieran una versión mínima de TLS. 

**nota**  
Cuando los servicios de AWS realizan llamadas a otros servicios de AWS en su nombre (llamadas de servicio a servicio), se suprime cierto contexto de autorización específico de la red, incluidos `s3:TlsVersion`, `aws:SecureTransport`, `aws:SourceIp` y `aws:VpcSourceIp`. Si la política utiliza estas claves de condición con instrucciones `Deny`, las entidades principales de servicio de AWS podrían bloquearse involuntariamente. Para permitir que los servicios de AWS funcionen correctamente a la vez que mantiene los requisitos de seguridad, excluya las entidades principales de servicio de las instrucciones `Deny`; para ello, agregue la clave de condición `aws:PrincipalIsAWSService` con un valor de `false`. Por ejemplo:  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
Esta política deniega el acceso a las operaciones de S3 cuando no se utiliza HTTPS (`aws:SecureTransport` es false), pero solo para entidades principales de servicio que no son de AWS. Esto asegura que las restricciones condicionales se aplican a todas las entidades principales excepto a las entidades principales de servicio de AWS.

**Example**  
La política de bucket de ejemplo siguiente *deniega* las solicitudes de `PutObject` de clientes que tienen una versión TLS inferior a 1.2, por ejemplo, 1.1 o 1.0. Para utilizar esta política de ejemplo, sustituya `user input placeholders` por su propia información.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericLessThan": {
                    "s3:TlsVersion": 1.2
                }
            }
        }
    ]
}
```

**Example**  
La política de bucket de ejemplo siguiente *permite* las solicitudes de `PutObject` de clientes que tienen una versión TLS posterior a 1.1, por ejemplo, 1.2, 1.3 o posteriores:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericGreaterThan": {
                    "s3:TlsVersion": 1.1
                }
            }
        }
    ]
}
```

### Ejemplo 7: Exclusión de determinadas entidades principales de una instrucción `Deny`
<a name="example-exclude-principal-from-deny-statement"></a>

La siguiente política de bucket deniega el acceso `s3:GetObject` a `amzn-s3-demo-bucket`, excepto a las entidades principales con el número de cuenta *`123456789012`*. Para utilizar esta política de ejemplo, sustituya `user input placeholders` por su propia información.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

### Ejemplo 8: exigencia a los clientes para cargar objetos de forma condicional en función de los nombres de clave de objeto o ETag
<a name="example-conditional-writes-enforce"></a>

Con las escrituras condicionales, puede agregar un encabezado adicional a las solicitudes `WRITE` para especificar condiciones previas a la operación de S3. Este encabezado especifica una condición que, si no se cumple, provocará un error en la operación de S3. Por ejemplo, puede evitar que se sobrescriban datos existentes al validar que no haya ningún objeto con el mismo nombre de clave en el bucket durante la carga de objetos. De forma alternativa, puede comprobar la etiqueta de entidad (ETag) de un objeto en Amazon S3 antes de escribir un objeto.

Para ver ejemplos de políticas de bucket que utilizan condiciones en una política de bucket para aplicar escrituras condicionales, consulte [Aplicación de escrituras condicionales en buckets de Amazon S3](conditional-writes-enforce.md).

## Ejemplos: claves de condición de Amazon S3 para operaciones de buckets
<a name="bucket-keys-in-amazon-s3-policies"></a>

Las políticas de ejemplo siguientes muestran cómo puede utilizar claves de condición específicas de Amazon S3 para operaciones de buckets.

**Topics**
+ [Ejemplo 1: Concesión de permiso `s3:GetObject` con una condición en una dirección IP](#AvailableKeys-iamV2)
+ [Ejemplo 2: obtener una lista de objetos en un bucket con un prefijo específico](#condition-key-bucket-ops-2)
+ [Ejemplo 3: establecer el número máximo de claves](#example-numeric-condition-operators)

### Ejemplo 1: Concesión de permiso `s3:GetObject` con una condición en una dirección IP
<a name="AvailableKeys-iamV2"></a>

Puede conceder permiso a los usuarios autenticados para usar la acción `s3:GetObject` si la solicitud se genera a partir de un intervalo específico de direcciones IP (por ejemplo, `192.0.2.*`), a menos que la dirección IP sea una que desee excluir (por ejemplo, `192.0.2.188`). En el bloque de `Condition`, `IpAddress` y `NotIpAddress` son condiciones y cada una recibe un par clave-valor para evaluación. En este ejemplo, los pares de clave-valor usan la clave general `aws:SourceIp` de AWS. Para utilizar esta política de ejemplo, sustituya `user input placeholders` por su propia información.

**nota**  
Los valores de clave `IPAddress` y `NotIpAddress` especificados en el bloque `Condition` usan la notación CIDR, como se describe en RFC 4632. Para obtener más información, consulte [http://www.rfc-editor.org/rfc/rfc4632.txt](http://www.rfc-editor.org/rfc/rfc4632.txt).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":"s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.0.2.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.0.2.188/32" 
                } 
            } 
        } 
    ]
}
```

------

También puede utilizar otras claves de condición generales de AWS en las políticas de Amazon S3. Por ejemplo, puede especificar las claves de condición `aws:SourceVpce` y `aws:SourceVpc` en las políticas de bucket para los puntos de enlace de la VPC. Para ver ejemplos específicos, consulte [Control del acceso desde puntos de enlace de la VPC con políticas de bucket](example-bucket-policies-vpc-endpoint.md).

**nota**  
Para alguna claves de condición globales de AWS, solo se admiten determinados tipos de recursos. Por lo tanto, compruebe si Amazon S3 admite la clave de condición global y el tipo de recurso que desea usar o si necesitará usar una clave de condición específica de Amazon S3 en su lugar. Para obtener una lista completa de los tipos de recursos y claves de condición admitidos para Amazon S3, consulte [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) en la *Referencia de autorización de servicios*.  
Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md).

### Ejemplo 2: obtener una lista de objetos en un bucket con un prefijo específico
<a name="condition-key-bucket-ops-2"></a>

Puede utilizar la clave de condición `s3:prefix` para limitar la respuesta de la operación de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) a nombres de clave con un prefijo específico. Si es el propietario del bucket, puede usar esta clave de condición para restringir que un usuario pueda mostrar el contenido de un prefijo específico en el bucket. Esta clave de condición `s3:prefix` resulta útil si los objetos en el bucket están organizados por prefijos de nombre de clave. 

La consola de Amazon S3 utiliza prefijos de nombre de clave para mostrar un concepto de carpeta. Solo la consola admite el concepto de carpetas; la API de Amazon S3 solo admite buckets y objetos. Por ejemplo, si tiene dos objetos con nombres de clave *`public/object1.jpg`* y *`public/object2.jpg`*, la consola muestra los objetos en la carpeta *`public`*. En la API de Amazon S3, estos son objetos con prefijos, no objetos en carpetas. Para obtener más información sobre el uso de prefijos y delimitadores para filtrar permisos de acceso, consulte [Controlar el acceso a un bucket con las políticas de usuario](walkthrough1.md). 

En el siguiente escenario, la cuenta del propietario del bucket y la cuenta principal, a la que pertenece el usuario, son las mismas. Por lo tanto, el propietario del bucket puede usar una política de bucket o una política de usuario para conceder acceso. Para obtener más información sobre otras claves de condición que puede utilizar con la operación de la API `ListObjectsV2`, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html).

**nota**  
Si el bucket tiene el control de versiones habilitado, para mostrar los objetos en el bucket, debe conceder el permiso `s3:ListBucketVersions` en las siguientes políticas, en lugar del permiso `s3:ListBucket`. El permiso `s3:ListBucketVersions` también admite la clave de condición `s3:prefix`. 

**Política de usuario**  
La siguiente política de usuario concede el permiso `s3:ListBucket` (consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)) con una instrucción `Condition` que exige que el usuario especifique un prefijo en la solicitud con un valor de `projects`. Para utilizar esta política de ejemplo, sustituya `user input placeholders` por su propia información.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:ListBucket",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       }         
    ]
}
```

------

La instrucción `Condition` restringe al usuario a mostrar solo las claves de objeto que tengan el prefijo `projects`. La instrucción `Deny` explícita agregada impide que el usuario muestre las claves con cualquier otro prefijo, independientemente de los demás permisos que tenga el usuario. Por ejemplo, es posible que el usuario pueda obtener el permiso para crear una lista de claves de objetos sin ninguna restricción mediante actualizaciones de políticas de usuario anteriores o mediante una política de bucket. Como las instrucciones `Deny` explícitas siempre invalidan las instrucciones `Allow`, si el usuario intenta mostrar claves distintas de las que tienen el prefijo `projects`, se deniega la solicitud. 

**Política de bucket**  
Si agrega el elemento `Principal` a la política de usuario anterior, que identifica al usuario, tendrá una política de bucket, como se muestra en el siguiente ejemplo. Para utilizar esta política de ejemplo, sustituya `user input placeholders` por su propia información.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action":  "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects"  
             }
          } 
       }         
    ]
}
```

------

**Prueba de la política con la AWS CLI**  
Puede usar el siguiente comando `list-object` de la AWS CLI para probar la política. En el comando, usa el parámetro `--profile` para proporcionar las credenciales de usuario. Para obtener más información sobre la configuración y el uso de la AWS CLI, consulte [Developing with Amazon S3 using the AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) en la *Amazon S3 API Reference*.

```
aws s3api list-objects --bucket amzn-s3-demo-bucket --prefix projects --profile AccountA
```

### Ejemplo 3: establecer el número máximo de claves
<a name="example-numeric-condition-operators"></a>

Puede usar la clave de condición `s3:max-keys` para establecer el número máximo de claves que un solicitante puede devolver en una solicitud de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) o [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html). De forma predeterminada, estas operaciones de la API devuelven hasta 1000 claves. Para obtener una lista de los operadores de condición numéricos que se pueden utilizar con `s3:max-keys` y los ejemplos adjuntos, consulte [Operadores de condición numérica](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Numeric) en la *guía del usuario de IAM*.