

# Restricción del acceso a un origen de Amazon S3
<a name="private-content-restricting-access-to-s3"></a>

CloudFront proporciona dos formas de enviar solicitudes autenticadas a un origen de Amazon S3: *control de acceso de origen (OAC)* e *identidad de acceso de origen (OAI)*. OAC lo ayuda a proteger los orígenes, como en el caso de Amazon S3. 

*Le recomendamos* que utilice OAC en su lugar porque es compatible con las siguientes características:
+ Todos los buckets de Amazon S3 en todas las Regiones de AWS, incluidas las regiones opcionales lanzadas después de diciembre de 2022
+ [Cifrado del servidor con AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) de Amazon S3 (SSE-KMS)
+ Solicitudes dinámicas (`PUT` y `DELETE`) en Amazon S3

OAI no es compatible con estas características o requiere soluciones alternativas adicionales en esos escenarios. Si ya utiliza OAI y desea migrar, consulte [Migración de la identidad de acceso de origen (OAI) al control de acceso de origen (OAC)](#migrate-from-oai-to-oac).

**Notas**  
Si utiliza CloudFront OAC con orígenes de buckets de Amazon S3, debe establecer **Propiedad de objetos de Amazon S3** como **Aplicada al propietario del bucket**, que es el valor predeterminado para los nuevos buckets de Amazon S3. Si necesita ACL, utilice la configuración **Preferida del propietario del bucket** para mantener el control de los objetos cargados mediante CloudFront.
Si su origen es un bucket de Amazon S3 configurado como [punto de conexión de sitio web](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html), debe configurarlo con CloudFront como un origen personalizado. Esto significa que no puede utilizar OAC (nila OAI). OAC no admite el redireccionamiento de origen mediante Lambda@Edge.

En los temas siguientes se describe cómo utilizar la OAC con un origen de Amazon S3. 

**Temas**
+ [Creación de un nuevo control de acceso de origen](#create-oac-overview-s3)
+ [Eliminación de una distribución con un OAC adjunto a un bucket de S3](#delete-oac-distribution-s3)
+ [Migración de la identidad de acceso de origen (OAI) al control de acceso de origen (OAC)](#migrate-from-oai-to-oac)
+ [Configuración avanzada para el control de acceso de origen](#oac-advanced-settings-s3)

## Creación de un nuevo control de acceso de origen
<a name="create-oac-overview-s3"></a>

Complete los pasos que se describen en los siguientes temas para configurar un nuevo control de acceso de origen en CloudFront.

**Topics**
+ [Requisitos previos](#oac-prerequisites-s3)
+ [Concesión de permiso de CloudFront para acceder al bucket de S3](#oac-permission-to-access-s3)
+ [Creación del control de acceso de origen](#create-oac-s3)

### Requisitos previos
<a name="oac-prerequisites-s3"></a>

Antes de crear y configurar el control de acceso de origen (OAC), debe tener una distribución de CloudFront con un bucket de origen de Amazon S3. Este origen debe ser un bucket S3 normal, no un bucket configurado como [punto de conexión de sitio web](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html). Para obtener más información sobre la configuración de una distribución de CloudFront con un origen de bucket de S3, consulte [Introducción a una distribución estándar de CloudFront](GettingStarted.SimpleDistribution.md).

**importante**  
Cuando utiliza OAC para proteger el origen de Amazon S3, la comunicación entre CloudFront y Amazon S3 es *siempre* a través de HTTPS, pero solo cuando elige *firmar siempre las solicitudes*. Debe elegir **Firmar solicitudes (recomendado)** en la consola o especificar `always` en la API de CloudFront, AWS CLI o CloudFormation.   
Si, en su lugar, elige la opción **No firmar solicitudes** o **No invalidar el encabezado de autorización**, CloudFront utiliza el protocolo de conexión que especificó en las siguientes políticas:  
[Política de protocolo para lectores](using-https-viewers-to-cloudfront.md) 
[Política de protocolo de origen](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) (solo orígenes personalizados)
Por ejemplo, si elige **No invalidar el encabezado de autorización** y desea utilizar HTTPS entre CloudFront y el origen de Amazon S3, utilice **Redirigir HTTP a HTTPS** o **Solo HTTPS** para la [política de protocolo del lector](using-https-viewers-to-cloudfront.md).

### Concesión de permiso de CloudFront para acceder al bucket de S3
<a name="oac-permission-to-access-s3"></a>

Antes de crear un control de acceso de origen (OAC) o configurarlo en una distribución de CloudFront, asegúrese de que CloudFront tiene permiso para acceder al origen del bucket de S3. Realice esta acción después de crear una distribución de CloudFront, pero antes de agregar el OAC al origen de S3 en la configuración de distribución.

Utilice una [política de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) de S3 para permitir a la entidad principal de servicio de CloudFront (`cloudfront.amazonaws.com`) acceder al bucket. Utilice un elemento `Condition` en la política para permitir que CloudFront acceda al bucket solo cuando la solicitud sea en nombre de la distribución de CloudFront que contiene el origen de S3. Esta es la distribución con el origen de S3 al que desea agregar OAC.

Para obtener información sobre cómo agregar o modificar una política de bucket, consulte [Agregar una política de bucket mediante la consola de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) en la *Guía del usuario de Amazon S3*.

A continuación, se muestran ejemplos de políticas de bucket de S3 que permiten a una distribución de CloudFront con OAC habilitado el acceso a un origen de S3.

**Example Política de bucket de S3 que permite el acceso de solo lectura a una distribución de CloudFront con OAC habilitado**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCloudFrontServicePrincipalReadOnly",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/{{<CloudFront distribution ID>}}"
        }
      }
    }
  ]
}
```

**Example Política de bucket de S3 que permite el acceso de lectura y escritura a una distribución de CloudFront con OAC habilitado**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCloudFrontServicePrincipalReadWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/{{CloudFront-distribution-ID>}}"
        }
      }
    }
  ]
}
```

#### SSE-KMS
<a name="oac-permissions-sse-kms"></a>

Si los objetos del origen de bucket de S3 están cifrados mediante el [cifrado del servidor con AWS Key Management Service (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html), debe asegurarse de que la distribución de CloudFront tiene permiso para utilizar la clave de AWS KMS. Para conceder permiso de distribución de CloudFront para utilizar la clave de KMS, agregue una declaración a la [política de claves de KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html). Para obtener información sobre cómo modificar una política de claves, consulte [Modificación de una política de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html) en la *Guía del desarrollador de AWS Key Management Service*.

**Example Instrucción de política de claves de KMS**  
El siguiente ejemplo muestra una declaración de política de AWS KMS que permite a la distribución de CloudFront con OAC acceder a una clave de KMS para SSE-KMS.  

```
{
    "Sid": "AllowCloudFrontServicePrincipalSSE-KMS",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "cloudfront.amazonaws.com"
        ]
     },
    "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*",
    "Condition": {
            "StringEquals": {
                "AWS:SourceArn": "arn:aws:cloudfront::{{111122223333}}:distribution/{{<CloudFront distribution ID>}}"
            }
        }
}
```

### Creación del control de acceso de origen
<a name="create-oac-s3"></a>

Para crear un control de acceso de origen (OAC), puede utilizar la Consola de administración de AWS, CloudFormation, la AWS CLI o la API de CloudFront.

------
#### [ Console ]

**Para crear un control de acceso de origen**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. En el panel de navegación, elija **Origin access** (Acceso de origen).

1. Elija **Create control setting** (Crear configuración de control).

1. En el formulario **Create control setting** (Crear configuración de control), haga lo siguiente:

   1. En el panel **Details** (Detalles), ingrese un valor para **Name** (Nombre) y (opcionalmente) para **Description** (Descripción) para el control de acceso de origen.

   1. En el panel **Settings** (Configuración), le recomendamos que deje la configuración predeterminada **Sign requests (recommended)** (Firmar solicitudes [recomendado]). Para obtener más información, consulte [Configuración avanzada para el control de acceso de origen](#oac-advanced-settings-s3).

1. Elija S3 en el menú desplegable de **Origin type** (Tipo de origen).

1. Seleccione **Crear**.

   Una vez creado el OAC, anote el valor de **Name** (Nombre). Lo necesita en el siguiente procedimiento.

**Para agregar un control de acceso de origen a un origen de S3 en una distribución**

1. Abra la consola de CloudFront en [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Elija una distribución con un origen de S3 a la que desee agregar el OAC y, a continuación, elija la pestaña **Origins** (Orígenes).

1. Seleccione el origen de S3 al que desea agregar el OAC y, a continuación, elija **Edit** (Editar).

1. En la sección **Acceso de origen**, elija **(Configuración del control de acceso de origen (recomendado)**.

1. En el menú desplegable **Origin access control** (Control de acceso de origen), elija el OAC que desee utilizar.

1. Seleccione **Save changes (Guardar cambios)**.

La distribución comienza a implementarse en todas las ubicaciones periféricas de CloudFront. Cuando una ubicación periférica recibe la nueva configuración, firma todas las solicitudes que envía al origen de bucket de S3.

------
#### [ CloudFormation ]

Para crear un control de acceso de origen (OAC) con CloudFormation, utilice el tipo de recurso `AWS::CloudFront::OriginAccessControl`. El siguiente ejemplo se muestra la sintaxis de plantilla de CloudFormation, en formato YAML, para crear un control de acceso de origen.

```
Type: AWS::CloudFront::OriginAccessControl
Properties: 
  OriginAccessControlConfig: 
      Description: An optional description for the origin access control
      Name: ExampleOAC
      OriginAccessControlOriginType: s3
      SigningBehavior: always
      SigningProtocol: sigv4
```

Para obtener más información, consulte [AWS::CloudFront::OriginAccessControl](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-originaccesscontrol.html) en la *Guía del usuario de AWS CloudFormation*.

------
#### [ CLI ]

Para crear un control de acceso de origen con la AWS Command Line Interface (AWS CLI), utilice el comando **aws cloudfront create-origin-access-control**. Puede utilizar un archivo de entrada para proporcionar los parámetros de entrada del comando, en lugar de especificar cada parámetro individual como entrada de la línea de comandos.

**Para crear un control de acceso de origen (CLI con archivo de entrada)**

1. Utilice el siguiente comando para crear un archivo llamado `origin-access-control.yaml`. Este archivo contiene todos los parámetros de entrada para el comando **create-origin-access-control**.

   ```
   aws cloudfront create-origin-access-control --generate-cli-skeleton yaml-input > origin-access-control.yaml
   ```

1. Abra el archivo `origin-access-control.yaml` que acaba de crear. Edite el archivo para agregar un nombre para el OAC, una descripción (opcional) y cambie `SigningBehavior` por `always`. A continuación, guarde el archivo.

   Para obtener información sobre otras configuraciones de OAC, consulte [Configuración avanzada para el control de acceso de origen](#oac-advanced-settings-s3).

1. Utilice el siguiente comando para crear el control de acceso de origen mediante los parámetros de entrada del archivo `origin-access-control.yaml`.

   ```
   aws cloudfront create-origin-access-control --cli-input-yaml file://origin-access-control.yaml
   ```

   Anote el valor de `Id` en la salida del comando. Lo necesita para agregar el OAC a un origen de bucket de S3 en una distribución de CloudFront.

**Para adjuntar un OAC a un origen de bucket de S3 en una distribución existente (CLI con archivo de entrada)**

1. Utilice el comando siguiente para guardar la configuración de distribución de la distribución de CloudFront a la que desea agregar el OAC. La distribución debe tener un origen de bucket de S3.

   ```
   aws cloudfront get-distribution-config --id {{<CloudFront distribution ID>}} --output yaml > dist-config.yaml
   ```

1. Abra el archivo llamado `dist-config.yaml` que acaba de crear. Edite el archivo y realice los siguientes cambios:
   + En el objeto `Origins`, agregue el ID de OAC al campo que se llama `OriginAccessControlId`.
   + Elimine el valor del campo que se llama `OriginAccessIdentity`, si existe.
   + Cambie el nombre del campo `ETag` a `IfMatch`, pero no cambie el valor del campo.

   Guarde el archivo cuando haya terminado.

1. Utilice el siguiente comando para actualizar la distribución y utilizar el control de acceso de origen.

   ```
   aws cloudfront update-distribution --id {{<CloudFront distribution ID>}} --cli-input-yaml file://dist-config.yaml
   ```

La distribución comienza a implementarse en todas las ubicaciones periféricas de CloudFront. Cuando una ubicación periférica recibe la nueva configuración, firma todas las solicitudes que envía al origen de bucket de S3.

------
#### [ API ]

Para crear un control de acceso de origen con la API de CloudFront, utilice [CreateOriginAccessControl](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateOriginAccessControl.html). Para obtener más información sobre los campos que especifique en esta llamada a la API, consulte la documentación de referencia de la API para el SDK de AWS u otro cliente de la API.

Después de crear un control de acceso de origen, puede adjuntarlo a un origen de bucket de S3 en una distribución, mediante una de las siguientes llamadas a la API:
+ Para asociarlo a una distribución existente, utilice [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Para asociarlo a una nueva distribución, utilice [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Para estas dos llamadas a la API, proporcione el ID de control de acceso de origen en el campo `OriginAccessControlId`, dentro de un origen. Para obtener más información sobre los otros campos que especifique en estas llamadas a la API, consulte [Referencia de toda la configuración de distribución](distribution-web-values-specify.md) y la documentación de referencia de la API para el SDK de AWS u otro cliente de la API.

------

## Eliminación de una distribución con un OAC adjunto a un bucket de S3
<a name="delete-oac-distribution-s3"></a>

Si necesita eliminar una distribución con un OAC adjunto a un bucket de S3, debe eliminarla antes de eliminar el origen del bucket de S3. También puede incluir la región en el nombre de dominio de origen. Si no es posible, puede eliminar el OAC de la distribución mediante el cambio a público antes de la eliminación. Para obtener más información, consulte [Eliminar una distribución](HowToDeleteDistribution.md).

## Migración de la identidad de acceso de origen (OAI) al control de acceso de origen (OAC)
<a name="migrate-from-oai-to-oac"></a>

Para migrar de una identidad de acceso de origen (OAI) heredada a un control de acceso de origen (OAC), actualice primero el origen del bucket de S3 para permitir que OAI y la distribución con OAC habilitado accedan al contenido del bucket. De este modo se garantiza que CloudFront nunca pierda el acceso al bucket durante la transición. Para permitir que OAI y la distribución con OAC habilitado accedan a un bucket de S3, actualice la [política de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) para incluir dos declaraciones, una para cada tipo de entidad principal.

El siguiente ejemplo de política de bucket de S3 permite que una OAI y una distribución con OAC habilitado accedan a un origen de S3.

**Example Política de bucket de S3 que permite el acceso de solo lectura para una OAI y una distribución de CloudFront con OAC habilitado**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipalReadOnly",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::{{111122223333}}:distribution/{{<CloudFront distribution ID>}}"
                }
            }
        },
        {
            "Sid": "AllowLegacyOAIReadOnly",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*"
        }
    ]
}
```

Después de actualizar la política de buckets del origen de S3 para permitir el acceso tanto a OAI como a OAC, puede actualizar la configuración de la distribución para utilizar OAC en lugar de OAI. Para obtener más información, consulte [Creación de un nuevo control de acceso de origen](#create-oac-overview-s3).

Una vez implementada por completo la distribución, puede eliminar la declaración de la política de buckets que permite el acceso a la OAI. Para obtener más información, consulte [Concesión de permiso de CloudFront para acceder al bucket de S3](#oac-permission-to-access-s3).

## Configuración avanzada para el control de acceso de origen
<a name="oac-advanced-settings-s3"></a>

La característica de control de acceso de origen de CloudFront incluye configuraciones avanzadas que están pensadas solo para casos de uso específicos. Utilice la configuración recomendada a menos que tenga una necesidad específica de la configuración avanzada.

El control de acceso de origen contiene una configuración denominada **Signing behavior** (Comportamiento de firma) (en la consola) o `SigningBehavior` (en la API, CLI y CloudFormation). Esta configuración proporciona las siguientes opciones:

**Firmar siempre las solicitudes de origen (configuración recomendada)**  
Recomendamos utilizar esta configuración, denominada **Sign requests (recommended)** (Firmar solicitudes [recomendado]) en la consola o `always` en la API, la CLI y CloudFormation. Con esta configuración, CloudFront siempre firma todas las solicitudes que envía al origen de bucket de S3.

**Nunca firmar solicitudes de origen**  
Esta configuración se denomina **Do not sign requests** (No firmar solicitudes) en la consola o `never` en la API, la CLI y CloudFormation. Utilice esta configuración para desactivar el control de acceso de origen para todos los orígenes en todas las distribuciones que utilizan este control de acceso de origen. Esto puede ahorrar tiempo y esfuerzo en comparación con la eliminación de un control de acceso de origen de todos los orígenes y distribuciones que lo utilizan, uno por uno. Con esta configuración, CloudFront no firma las solicitudes que envía al origen de bucket de S3.  
Para utilizar esta configuración, el origen de bucket de S3 debe ser de acceso público. Si utiliza esta configuración con un origen de bucket de S3 que no es de acceso público, CloudFront no podrá acceder al origen. El origen de bucket de S3 devuelve errores a CloudFront y CloudFront pasa esos errores a los lectores.

**No anular el encabezado `Authorization` del lector (cliente)**  
Esta configuración se denomina **Do not override authorization header** (No anular el encabezado authorization en la consola o `no-override` en la API, la CLI y CloudFormation. Utilice esta configuración cuando desee que CloudFront firme las solicitudes de origen solo cuando la solicitud del lector correspondiente no incluya un encabezado `Authorization`. Con esta configuración, CloudFront pasa el encabezado `Authorization` de la solicitud del lector cuando hay uno, pero firma la solicitud de origen (agrega su propio encabezado `Authorization`) cuando la solicitud del lector no incluye un encabezado `Authorization`.  
Para pasar el encabezado `Authorization` de la solicitud del lector, *debe* agregar el encabezado `Authorization` a una [política de caché](controlling-the-cache-key.md) para todos los comportamientos de caché que utilizan los orígenes de buckets de S3 asociados con este control de acceso de origen.

## Uso de una identidad de acceso de origen (heredado, no recomendado)
<a name="private-content-restricting-access-to-s3-oai"></a>

### Descripción de la identidad de acceso de origen
<a name="private-content-restricting-access-to-s3-overview"></a>

La *identidad de acceso de origen* (OAI) de CloudFront proporciona una funcionalidad similar a la del *control de acceso de origen* (OAC), pero no funciona en todos los escenarios. En concreto, OAI no admite:
+ Buckets de Amazon S3 en todas las Regiones de AWS, incluidas las regiones opcionales
+ [Cifrado del servidor con AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html) de Amazon S3 (SSE-KMS)
+ Solicitudes dinámicas (`PUT`, `POST` o `DELETE`) en Amazon S3
+ Regiones de AWS nuevas lanzadas después de enero de 2023

**sugerencia**  
Le recomendamos que utilice OAC en su lugar. Para configurar OAC, consulte [Creación de un nuevo control de acceso de origen](#create-oac-overview-s3). Para obtener información acerca de cómo migrar de OAI a OAC, consulte [Migración de la identidad de acceso de origen (OAI) al control de acceso de origen (OAC)](#migrate-from-oai-to-oac).

### Concesión de un permiso de identidad de acceso de origen para leer archivos en el bucket de Amazon S3
<a name="private-content-granting-permissions-to-oai"></a>

Cuando crea una OAI o agrega una a una distribución con la consola de CloudFront, puede actualizar automáticamente la política de bucket de Amazon S3 para conceder a la OAI permiso de acceso al bucket. Como alternativa, puede elegir crear o actualizar manualmente la política del bucket. Sea cual sea el método que utilice, debe revisar los permisos para asegurarse de que:
+ La OAI de CloudFront puede acceder a los archivos del bucket en nombre de los lectores que los soliciten a través de CloudFront.
+ Los lectores no pueden utilizar las URL de Amazon S3 para acceder a los archivos fuera de CloudFront.

**importante**  
Si configura CloudFront para que acepte y reenvíe todos los métodos HTTP compatibles con CloudFront, asegúrese de conceder a la OAI de CloudFront los permisos deseados. Por ejemplo, si configura CloudFront para aceptar y reenviar solicitudes que utilizan el método `DELETE`, configure la política de bucket para que gestionen las solicitudes `DELETE` de forma adecuada para que los lectores solo puedan eliminar archivos que desee que eliminen.

#### Uso de políticas de buckets de Amazon S3
<a name="private-content-updating-s3-bucket-policies"></a>

Puede conceder a la OAI de CloudFront acceso a los archivos de un bucket de Amazon S3 mediante la creación o actualización de la política de bucket de las siguientes maneras:
+ Mediante la pestaña **Permissions** (Permisos) del bucket de Amazon S3 en la [consola de Amazon S3](https://console.aws.amazon.com/s3/home).
+ Mediante [PutBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html) en la API de Amazon S3.
+ Mediante la [consola de CloudFront](https://console.aws.amazon.com/cloudfront/v4/home). Cuando agrega una OAI a la configuración de origen en la consola de CloudFront, puede elegir **Yes, update the bucket policy** (Sí, actualizar política de bucket) para indicar a CloudFront que actualice la política del bucket en su nombre.

Si actualiza la política del bucket manualmente, asegúrese de:
+ Especificar la OAI correcta como `Principal` en la política.
+ Conceder a la OAI los permisos que necesita para obtener acceso a los objetos en nombre de los lectores.

Para obtener más información, consulte las siguientes secciones.

##### Cómo especificar una OAI como `Principal` en una política de bucket
<a name="private-content-updating-s3-bucket-policies-principal"></a>

Para especificar una OAI como `Principal` en una política de bucket de Amazon S3, utilice el nombre de recurso de Amazon (ARN) de la OAI, que incluye el ID de la OAI. Por ejemplo:

```
"Principal": {
    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
}
```

Busque el ID de OAI en la consola de CloudFront, en **Seguridad**, **Acceso de origen**, **Identidades (heredado)**. Como alternativa, utilice [ListCloudFrontOriginAccessIdentities](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html) en la API de CloudFront.

##### Conceda permisos a una OAI
<a name="private-content-updating-s3-bucket-policies-permissions"></a>

Para conceder a la OAI permisos para acceder a los objetos del bucket de Amazon S3, utilice acciones de la política relacionadas con operaciones específicas de la API de Amazon S3. Por ejemplo, la acción `s3:GetObject` permite a la OAI leer objetos del bucket. Para obtener más información, consulte los ejemplos de la siguiente sección o consulte [acciones de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) en la *Guía del usuario de Amazon Simple Storage Service*.

##### Ejemplos de políticas de bucket de Amazon S3
<a name="private-content-updating-s3-bucket-policies-examples"></a>

En los siguientes ejemplos se muestran las políticas de buckets de Amazon S3 que permiten a la OAI de CloudFront acceder a un bucket de S3.

Busque el ID de OAI en la consola de CloudFront, en **Seguridad**, **Acceso de origen**, **Identidades (heredado)**. Como alternativa, utilice [ListCloudFrontOriginAccessIdentities](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html) en la API de CloudFront.

**Example Política de bucket de Amazon S3 que concede acceso de lectura a la OAI**  
El siguiente ejemplo permite a la OAI leer objetos del bucket especificado (`s3:GetObject`).    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*"
        }
    ]
}
```

**Example Política de bucket de Amazon S3 que concede acceso de lectura y escritura a la OAI**  
El siguiente ejemplo permite a la OAI leer y escribir objetos en el bucket (`s3:GetObject` y `s3:PutObject`) especificado. Esto permite a los lectores cargar archivos en el bucket de Amazon S3 a través de CloudFront.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{<origin access identity ID>}}"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::{{<S3 bucket name>}}/*"
        }
    ]
}
```

#### Uso de ACL de objetos de Amazon S3 (no recomendado)
<a name="private-content-updating-s3-acls"></a>

**importante**  
Recomendamos el [uso de las políticas de bucket de Amazon S3](#private-content-updating-s3-bucket-policies) para conceder a una OAI acceso a un bucket de S3. Puede utilizar listas de control de acceso (ACL) como se describe en esta sección, pero no lo recomendamos.  
Amazon S3 recomienda configurar [Propiedad de objetos de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) como **propietario del bucket forzado**, lo que significa que las ACL están desactivadas para el bucket y los objetos que contiene. Al aplicar esta configuración para Propiedad de objetos, debe utilizar políticas de bucket para dar acceso a la OAI (consulte la sección anterior).  
La sección siguiente es solo para casos de uso heredados que requieren ACL.

Puede conceder a una OAI de CloudFront acceso a los archivos de un bucket de Amazon S3 creando o actualizando la ACL de archivos de las siguientes maneras:
+ Mediante la pestaña **Permissions** (Permisos) del objeto de Amazon S3 en la [consola de Amazon S3](https://console.aws.amazon.com/s3/home).
+ Mediante [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) en la API de Amazon S3.

Cuando concede acceso a una OAI mediante una ACL, debe especificar la OAI mediante el ID de usuario canónico de Amazon S3. En la consola de CloudFront, puede encontrar este ID en **Seguridad**, **Acceso de origen**, **Identidades (heredado)**. Si utiliza la API de CloudFront, use el valor del elemento `S3CanonicalUserId` devuelto al crear la OAI o llame a [ListCloudFrontOriginAccessIdentities](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html) en la API de CloudFront.

### Uso de una identidad de acceso de origen en las regiones de Amazon S3 que solo admiten la autenticación de Signature Version 4
<a name="private-content-origin-access-identity-signature-version-4"></a>

Las regiones de Amazon S3 más recientes requieren que utilice Signature Version 4 para solicitudes autenticadas. (Para ver las versiones de firma admitidas en cada región de Amazon S3, consulte [Puntos de conexión y cuotas de Amazon Simple Storage Service](https://docs.aws.amazon.com/general/latest/gr/s3.html) en la *Referencia general de AWS*). Si utiliza una identidad de acceso de origen y si su bucket se encuentra en una de las regiones que requiere firma versión 4, tenga en cuenta lo siguiente:
+ Las solicitudes `DELETE`, `GET`, `HEAD`, `OPTIONS` y `PATCH` se admiten sin cualificación.
+ `POST`Las solicitudes no están admitidas.