¿Cómo permito el acceso a mis buckets de Amazon S3 a los clientes que no utilizan TLS 1.2 (o superior)?

9 minutos de lectura
0

Mis clientes no usan la versión 1.2 (o superior) de TLS, por lo que no pueden acceder al contenido almacenado en mis buckets de Amazon Simple Storage Service (Amazon S3). Quiero permitir que estos clientes accedan al contenido de mis buckets de Amazon S3 mediante TLS 1.0 o 1.1.

Breve descripción

AWS exige el uso de TLS 1.2 (o superior) en todos los puntos de conexión de la API de AWS. Para seguir conectándose a los servicios de AWS, actualice todo el software que utilice TLS 1.0 o 1.1.

Resolución

Amazon CloudFront permite el uso de versiones antiguas de TLS al abstraer a los clientes del protocolo TLS que se utiliza entre la distribución de CloudFront y Amazon S3.

Creación de una distribución de CloudFront con el control de acceso de origen (OAC)

CloudFront le permite admitir solicitudes anónimas y públicas en los buckets de S3. O bien, puede hacer que sus buckets de S3 sean privados y accesibles solo a través de CloudFront exigiendo solicitudes firmadas para acceder a los buckets de S3.

Admisión de solicitudes anónimas y públicas en los buckets de S3

Nota: En el siguiente ejemplo, se supone que ya tiene un bucket de S3 en uso. Si no tiene un bucket de S3, cree uno.

Para crear la distribución de CloudFront, siga estos pasos:

  1. Abra la consola de CloudFront.
  2. Elija Crear distribución.
  3. En Origen, enDominio del origen, elija el punto de conexión de la API de REST de su bucket de S3 en la lista desplegable.
  4. En Política de protocolo de lector, elija Redirigir HTTP a HTTPS.
  5. En puntos de conexión HTTP permitidos, elija CONSEGUIR, ENCABEZADO y OPCIONES para admitir las solicitudes de lectura.
  6. En Acceso de origen, elija configuración del control de acceso de origen (recomendada).
  7. Seleccione Crear configuración de control y utilice el nombre predeterminado. Para ver el comportamiento de firma, seleccione Firmar solicitudes (recomendado) y seleccione Crear. La configuración recomendada por el OAC autentica automáticamente la solicitud del lector.
  8. Seleccione la identidad en la lista desplegable. Una vez creada la distribución, actualice la política del bucket para restringir el acceso al OAC.
  9. En Comportamiento de caché, Lector, seleccione Redirigir HTTP a HTTPS para la Política de protocolo de lector y deje el resto de ajustes como predeterminados.
  10. En Solicitudes de clave de caché y origen, seleccione Política de caché y política de solicitudes de origen (recomendada). A continuación, use CachingOptimized para la política de caché, y CORS-S3Origin para la política de solicitudes de origen.
  11. Seleccione Crear distribución y, a continuación, espere a que su estado se actualice a Habilitado.

Exigir solicitudes firmadas para acceder a los buckets de S3

Añada seguridad a sus buckets de S3 admitiendo únicamente las solicitudes firmadas. Con las solicitudes firmadas, el OAC sigue sus parámetros de autenticación y los reenvía al origen de S3, que luego rechaza las solicitudes anónimas.

Para crear una distribución de CloudFront que requiera solicitudes firmadas para acceder a sus buckets de S3, siga estos pasos:

  1. Abra la consola de CloudFront.
  2. Elija Crear distribución.
  3. En Origen, enDominio del origen, elija el punto de conexión de la API de REST de su bucket de S3 en la lista desplegable.
  4. En Política de protocolo de lector, elija Redirigir HTTP a HTTPS.
  5. En puntos de conexión HTTP permitidos, elija CONSEGUIR, ENCABEZADO y OPCIONES para admitir las solicitudes de lectura.
  6. En Acceso de origen, elija configuración del control de acceso de origen (recomendada).
  7. Bloquee todas las solicitudes sin firmar marcando la opción No firmar solicitudes.
    Nota: El bloqueo de las solicitudes sin firmar requiere que todos los clientes firmen sus solicitudes para que el origen de S3 pueda evaluar los permisos.
  8. Cree una política de caché personalizada para reenviar el encabezado de autorización del cliente al origen.
  9. En Solicitudes de clave de caché y origen, seleccione Política de caché y política de solicitudes de origen (recomendada).
  10. Seleccione Crear política.
  11. Introduzca un nombre para la política de caché en la sección Nombre.
  12. En Configuración de la clave de caché, vaya a Encabezados y seleccione Incluir los siguientes encabezados.
  13. En Agregar encabezado, seleccione Autorización.
  14. Seleccione Crear.

Control de la política de seguridad del cliente

Para controlar una política de seguridad en CloudFront, debe tener un dominio personalizado. Se recomienda especificar un nombre de dominio alternativo para la distribución. También se recomienda utilizar un certificado SSL personalizado que esté configurado en AWS Certificate Manager (ACM). De este modo, tendrá más control sobre la política de seguridad y permitirá a los clientes seguir utilizando TLS 1.0. Para obtener más información, consulte Protocolos y cifrados admitidos entre lectores y CloudFront.

Si usa el nombre de dominio *.cloudfront.net predeterminado, CloudFront aprovisiona automáticamente un certificado y establece la política de seguridad para permitir el uso de TLS 1.0 y 1.1. Para obtener más información, consulte Ajuste de la distribución.

Para configurar un nombre de dominio alternativo para su distribución de CloudFront, siga estos pasos:

  1. Inicie sesión en la consola de administración de AWS y, a continuación, abra la consola de CloudFront.
  2. Elija el Identificador de la distribución que desee actualizar.
  3. En la pestaña General, elija Editar.
  4. Para nombres de dominio alternativos (CNAMES), elija Agregar elemento e introduzca su nombre de dominio.
    Nota: Se recomienda usar un registro de nombre canónico (CNAME) personalizado para acceder a los recursos. El uso de un CNAME le brinda un mayor control sobre el enrutamiento y permite una mejor transición para sus clientes.
  5. Para el certificado SSL personalizado, elija el certificado SSL personalizado de la lista desplegable que incluye su CNAME para asignarlo a la distribución.
    Nota: Para obtener más información sobre la instalación de un certificado, consulte ¿Cómo puedo configurar la distribución de CloudFront para utilizar un certificado SSL/TLS?
  6. Seleccione Crear distribución y espere a que su estado se actualice a Habilitado.

Después de crear la distribución, debe permitir que el OAC acceda a su bucket. Siga estos pasos:

  1. Vaya a la página de la consola de CloudFront y abra su distribución de CloudFront.
  2. Seleccione la pestaña Orígenes, seleccione su origen y, a continuación, haga clic en Editar.
  3. Elija Copiar política, abra el permiso del bucket y actualice su política de buckets.
  4. Abra la página Ir a permisos para buckets de S3.
  5. En Política de bucket, elija Editar. Pegue la política que copió anteriormente y, a continuación, seleccione Guardar. Si su política del bucket requiere algo más que la lectura de S3, puede añadir las API necesarias.

Si usa un nombre de dominio personalizado, cambie las entradas de DNS para usar la nueva URL de la distribución de CloudFront. Si no usa un nombre de dominio personalizado, debe proporcionar la nueva URL de la distribución de CloudFront a sus usuarios. Además, debe actualizar cualquier software de cliente o dispositivo que utilice la URL anterior.

Si utiliza un AWS SDK para acceder a los objetos de Amazon S3, debe cambiar el código para utilizar puntos de conexión HTTPS normales. Además, asegúrese de utilizar la nueva URL de CloudFront. Si los objetos no son públicos y requieren un mejor control, puede publicar contenido privado con URL y cookies firmadas.

Utilización de las URL prefirmadas de S3 para acceder a los objetos

Si su flujo de trabajo se basa en URL prefirmadas de S3, utilice una distribución de CloudFront para transmitir la consulta al origen de S3. Primero, genere una URL prefirmada para el objeto que desee. A continuación, sustituya el host de la URL por el punto de conexión de CloudFront para hacer llegar la llamada a través de CloudFront y actualice automáticamente el protocolo de cifrado. Para probar y generar una URL prefirmada, ejecute el siguiente comando de CLI:

aws s3 presign s3://BUCKET_NAME/test.jpg

El resultado es similar al siguiente:

https://bucket_name.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%5b...%5d%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=%5b...%5d&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature">https://BUCKET_NAME.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature    =[...]

Ahora cambie la URL de S3 al nuevo punto de conexión de CloudFront. Por ejemplo, sustituya esta URL de S3:

BUCKET_NAME.s3.eu-west-1.amazonaws.com

por este punto de conexión:

https://DISTRIBUTION_ID.cloudfront.net.

El resultado es similar al siguiente:

https://<DISTRIBUTION_ID>.cloudfront.net /test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=[...]

Para usar las URL prefirmadas, aplique la siguiente configuración de CloudFront:

  1. Defina el comportamiento de firma del OAC en No firmar solicitudes.
  2. Configure la política de solicitudes de origen de la distribución de CloudFront como Configuración de solicitudes de origen: Encabezados: ninguno; cookies: ninguna; cadenas de consulta: todas.
  3. Defina la política de caché como Encabezados: ninguno; cookies: ninguna; cadenas de consulta: ninguna.

En AWS CloudTrail, la solicitud Conseguir para descargar desde una URL prefirmada de S3 se muestra como la identidad que generó la URL prefirmada.

Si utiliza un AWS SDK para acceder a los objetos de S3, debe cambiar el código para utilizar la URL prefirmada. En su lugar, utilice una solicitud HTTPS normal y utilice la nueva URL de CloudFront.

Confirmación del uso de protocolos de cifrado modernos para Amazon S3

Para probar la nueva política, utilice el siguiente comando de ejemplo curl para realizar solicitudes HTTPS mediante un protocolo heredado específico:

curl https://${CloudFront_Domain}/image.png -v --tlsv1.0 --tls-max 1.0

El comando de ejemplo curl realiza una solicitud a CloudFront mediante TLS 1.0. Esta se conecta al origen de S3 mediante TLS 1.2 y descarga correctamente el archivo.

Se recomienda utilizar AWS CloudTrail Lake para identificar las conexiones TLS más antiguas a los puntos de conexión del servicio de AWS. Puede configurar el almacenamiento de datos del evento de CloudTrail Lake para capturar eventos de administración o eventos de datos. El evento de CloudTrail correspondiente en CloudTrail Lake muestra la versión 1.2 de TLS, lo que confirma que sus clientes utilizan una política de seguridad moderna para conectarse a Amazon S3.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año