¿Cómo utilizo mi distribución de CloudFront para restringir el acceso a un bucket de Amazon S3?
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.
Solució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 enlace de la API de REST, por ejemplo, AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com. Esta solución no se aplica a los orígenes de S3 que estén configurados como punto de enlace 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 puedo utilizar CloudFront para ofrecer un sitio web estático alojado en Amazon S3?
Opción 1 (recomendada): Creación de un OAC de CloudFront
Para crear un control de acceso de origen (OAC) de CloudFront, siga estos pasos:
- Abra la consola de CloudFront.
- En la lista de distribuciones, elija la distribución que suministra el contenido del bucket de S3 al que desea restringir el acceso.
- Elija la pestaña Orígenes.
- Seleccione el origen de S3 y, a continuación, elija Editar.
- En Acceso de origen, seleccione la configuración del control de acceso de origen (recomendada).
- En Control de acceso de origen, seleccione un OAC existente o elija la configuración Crear control.
- 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).
- Elija Crear.
- En Acceso al bucket de S3, elija Copiar política y, a continuación, seleccione Guardar para aplicar la política de bucket en el bucket de S3.
- Elija Ir a los permisos de bucket de S3 para acceder a la consola de bucket de S3.
- Seleccione Guardar cambios.
- En la lista de buckets de la consola de Amazon S3, elija el bucket que sea el origen de la distribución de CloudFront.
- Seleccione la pestaña Permisos.
- En Política del bucket, confirme que ve una instrucció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 instrucción anterior para permitir que el OAC de CloudFront lea los objetos de su bucket.
Nota: Tras restringir el acceso a su bucket, puede añadir otro nivel de seguridad integrando AWS WAF.
Opción 2: Creación de una OAI de CloudFront heredada
Para crear una identidad de acceso de origen (OAI) de CloudFront heredada, siga estos pasos:
- Abra la consola de CloudFront.
- En la lista de distribuciones, elija la distribución que suministra el contenido del bucket de S3 al que desea restringir el acceso.
- Elija la pestaña Orígenes.
- Seleccione el origen de S3 y, a continuación, elija Editar.
- En Acceso de origen, elija Identidades de acceso heredadas.
- En la lista desplegable Identidades de acceso de origen, seleccione el nombre de la identidad de acceso de origen. A continuación, elija Crear nueva OAI.
- En el cuadro de diálogo, asigne un nombre a la nueva identidad de acceso de origen y elija Crear.
- En Política del bucket, seleccione Sí, actualizar la política de bucket.
- Seleccione Guardar cambios.
- En la lista de buckets de la consola de Amazon S3, elija el bucket que sea el origen de la distribución de CloudFront.
- Seleccione la pestaña Permisos.
- En Política del bucket, confirme que ve una instrucció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»: "Allow" que permiten el acceso al bucket desde cualquier fuente que no sea la OAI de CloudFront. Modifique esas instrucciones para su caso de uso.
Información relacionada
Vídeos relacionados
Contenido relevante
- OFICIAL DE AWSActualizada hace 3 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 meses