

# 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/*"
      ]
    }
  ]
}
```

------