¿Cómo utilizo mi distribución de CloudFront para restringir el acceso a un bucket de Amazon S3?

4 minutos de lectura
0

Quiero restringir el acceso a mi bucket de Amazon Simple Storage Service (Amazon S3) para que los usuarios accedan a los objetos únicamente a través de mi distribución de Amazon CloudFront.

Resolución

Importante: Antes de empezar, asegúrese de que el origen de Amazon S3 de su distribución de CloudFront esté configurado como un punto de conexión de la API de REST. Por ejemplo, AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com. Esta resolución no se aplica a los orígenes de S3 que estén configurados como punto de conexión de un sitio web. Por ejemplo, AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com. Para obtener más información, consulte ¿Cómo utilizo CloudFront para publicar un sitio web estático alojado en Amazon S3?

Opción 1 (recomendada): Cree un control de acceso de origen (OAC) de CloudFront

  1. Abra la consola de CloudFront.
  2. En la lista de distribuciones, elija la distribución que suministra el contenido del bucket de S3 al que desea restringir el acceso.
  3. Elija la pestaña Orígenes.
  4. Seleccione el origen de S3 y, a continuación, elija Editar.
  5. En Acceso de origen, seleccione la configuración del control de acceso de origen (recomendada).
  6. En Control de acceso de origen, seleccione un OAC existente o elija la configuración Crear control.
  7. En el cuadro de diálogo, asigne un nombre a la configuración de control. Se recomienda mantener la configuración predeterminada como Firmar solicitudes (recomendado). A continuación, elija Crear.
  8. En S3 bucket Access, aplique la política de bucket en el bucket de S3. Elija Copiar política y, a continuación, seleccione Guardar.
  9. Elija Ir a los permisos de bucket de S3 para acceder a la consola de bucket de S3.
  10. Seleccione Guardar cambios.
  11. En la lista de buckets de la consola de Amazon S3, elija el bucket que sea el origen de la distribución de CloudFront.
  12. Seleccione la pestaña Permisos.
  13. En Política del bucket, confirme que ve una declaración similar a la siguiente:
{
    "Version": "2012-10-17",
    "Statement": {
        "Sid": "AllowCloudFrontServicePrincipalReadOnly",
        "Effect": "Allow",
        "Principal": {
            "Service": "cloudfront.amazonaws.com"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
        "Condition": {
            "StringEquals": {
                "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE"
            }
        }
    }
}

Debe añadir la declaración anterior para permitir que el OAC de CloudFront lea los objetos de su bucket.

Nota: Tras restringir el acceso a su bucket mediante el OAC de CloudFront, puede añadir otro nivel de seguridad integrando AWS WAF.

Opción 2: Cree una identidad de acceso de origen (OAI) antigua de CloudFront

  1. Abra la consola de CloudFront.
  2. En la lista de distribuciones, elija la distribución que suministra el contenido del bucket de S3 al que desea restringir el acceso.
  3. Elija la pestaña Orígenes.
  4. Seleccione el origen de S3 y, a continuación, elija Editar.
  5. En Acceso de origen, elija Identidades de acceso antiguas.
  6. En la lista desplegable de identidades de acceso de origen, seleccione el nombre de la identidad de acceso de origen o elija Crear nueva OAI.
  7. En el cuadro de diálogo, asigne un nombre a la nueva identidad de acceso de origen y elija Crear.
  8. En Política del bucket, seleccione Sí, actualizar la política de bucket.
  9. Elija Guardar cambios.
  10. En la lista de buckets de la consola de Amazon S3, elija el bucket que sea el origen de la distribución de CloudFront.
  11. Seleccione la pestaña Permisos.
  12. En Política del bucket, confirme que ve una declaración similar a la siguiente:
{{

"Sid": "1",

"Effect": "Allow",

"Principal": {

"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"

},

"Action": "s3:GetObject",

"Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"

}

Nota: Revise su política de bucket para ver si hay declaraciones con las palabras «Efecto»: «Denegar» que impidan el acceso al bucket desde la OAI de CloudFront. Modifique esas declaraciones para que la OAI de CloudFront pueda acceder a los objetos del bucket.

Además, revise su política de bucket para ver si hay alguna afirmación con las palabras «Efecto»: «Permitir» que permiten el acceso al bucket desde cualquier fuente que no sea la OAI de CloudFront. Modifique esas declaraciones según sus necesidades de uso.


Información relacionada

Creación de una distribución

Identity and Access Management en Amazon S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año