Quiero restringir el acceso al contenido de mi distribución de Amazon CloudFront.
Descripción corta
Para restringir el acceso al contenido privado de tu distribución de CloudFront, utiliza URL firmadas o cookies firmadas.
Si solo necesitas una autenticación básica con un nombre de usuario y una contraseña, utiliza Lambda@Edge o CloudFront Functions para configurar la autenticación básica.
Para restringir el acceso en función de la dirección IP o la ubicación geográfica, configura CloudFront para permitir o bloquear las solicitudes.
Para configurar la autenticación segura de usuarios con un proveedor de identidades, utiliza Lambda@Edge para integrar CloudFront con OpenID Connect (OIDC).
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Usa URL firmadas o cookies firmadas
Las URL firmadas incorporan firmas cifradas en las URL para proporcionar acceso temporal a archivos individuales. Usa URL firmadas para proteger el acceso a recursos específicos.
CloudFront envía cookies firmadas a los clientes para permitir el acceso a varios archivos en una ruta. Utiliza cookies firmadas para un control de acceso más amplio.
Nota: Las URL firmadas y las cookies firmadas utilizan pares de claves criptográficas que creas y asocias a tu distribución.
Para usar URL firmadas o cookies firmadas, sigue estos pasos:
Creación de un par de claves
Crea un par de claves y cárgalo en CloudFront.
Creación de un grupo de claves de confianza
- Abre la consola de CloudFront.
- En el panel de navegación, en Administración de claves, elige Grupos de claves.
- Elige Crear grupo de claves.
- En Nombre, introduce un nombre para tu grupo de claves.
- En Claves públicas, elige una clave.
- Elige Crear grupo de claves.
Configuración de la distribución
Actualiza tu distribución para usar tu grupo de claves de confianza para las URL firmadas o las cookies firmadas. Para obtener más información sobre cómo configurar la distribución, consulta Configuración del comportamiento de la caché.
Generación de URL firmadas o cookies firmadas
Para generar URL firmadas, ejecuta el siguiente comando sign de la AWS CLI:
aws cloudfront sign \
--url "https://your-distribution-domain.cloudfront.net/path/to/file.pdf" \
--key-pair-id "YOUR_KEY_PAIR_ID" \
--private-key file://path/to/your/private-key.pem \
--date-less-than "2024-12-31T23:59:59"
Para ver opciones adicionales, como las restricciones de IP, consulta Opciones en la referencia de comandos de la AWS CLI.
Nota: También puedes crear URL firmadas para herramientas de terceros.
Para generar cookies firmadas, utiliza un AWS SDK para tu idioma. Para ver ejemplos de código, consulta Create signed cookies using PHP (Creación de cookies firmadas con PHP) y Crear URL y cookies firmadas usando con AWS SDK.
Uso de las URL firmadas o las cookies firmadas
Incluye las URL firmadas o las cookies firmadas en las solicitudes a CloudFront.
Uso de Lambda@Edge para configurar la autenticación básica
Nota: Debes crear un código personalizado para usar Lambda@Edge e implementar la lógica de autenticación.
Sigue estos pasos:
- Crea una función de AWS Lambda para gestionar la autenticación de las solicitudes de los espectadores.
- En el código de la función, inspecciona los encabezados de las solicitudes, valida las credenciales y permite o rechaza la solicitud. Para ver un ejemplo de función, consulta Ejemplo: Redireccionamiento de los usuarios no autenticados a una página de inicio de sesión.
- Usa desencadenadores para asociar la función con el comportamiento de tu distribución.
Uso de CloudFront Functions para configurar la autenticación básica
Nota: Debes crear un código personalizado para usar CloudFront Functions para implementar la lógica de autenticación.
Sigue estos pasos:
- Crea una función de CloudFront para autenticar las solicitudes de los espectadores.
- En el código de la función, inspecciona los encabezados, valida las credenciales y permite o rechaza las solicitudes. Para ver un ejemplo de función, consulta Validar un token simple en una solicitud de espectador de CloudFront Functions.
- Asocia la función con el comportamiento de tu distribución.
Configuración de CloudFront para permitir o bloquear las solicitudes en función de la dirección IP o la ubicación geográfica del cliente
Realiza una de las siguientes acciones:
- Para crear restricciones basadas en el control de acceso IP, utiliza AWS WAF para definir las listas de direcciones IP permitidas y denegadas para tu distribución.
- Para crear restricciones basadas en la ubicación geográfica, restringe el acceso a tu contenido según el país de origen de las solicitudes.
Nota: AWS WAF y las restricciones geográficas se aplican solo al nivel de distribución y no al comportamiento de la caché.
Uso de Lambda@Edge para integrar CloudFront con OIDC
Nota: Para la integración, debes implementar el flujo de autenticación OIDC en tu aplicación y obtener un token de ID para incluirlo en las solicitudes a CloudFront.
Sigue estos pasos:
- Crea una función de Lambda para validar el token de ID de OIDC en las solicitudes de los espectadores.
- En el código de la función, inspecciona el encabezado de autorización, valida el token de identificación y permite o deniega la solicitud.
- Asocia la función con el comportamiento de tu distribución.
Información relacionada
Authorization@Edge – How to Use Lambda@Edge and JSON Web Tokens to Enhance Web Application Security (Authorization@Edge: cómo usar los tokens web de Lambda@Edge y JSON para mejorar la seguridad de las aplicaciones web)
External Server Authorization with Lambda@Edge (Autorización de servidores externos con Lambda@Edge)
Securing CloudFront distributions using OpenID Connect and AWS Secrets Manager (Protección de las distribuciones de CloudFront mediante OpenID Connect y AWS Secrets Manager)