Cómo restringir la distribución geográfica de su contenido - Amazon CloudFront

Cómo restringir la distribución geográfica de su contenido

Puede utilizar restricciones geográficas, a veces conocidas como bloqueo geográfico, para evitar que los usuarios de ubicaciones geográficas específicas accedan al contenido que distribuye a través de una distribución de Amazon CloudFront. Para utilizar las restricciones geográficas, tiene dos opciones:

  • Use la característica de restricciones geográficas de CloudFront. Utilice esta opción para restringir el acceso a todos los archivos asociados a una distribución y según el país.

  • Utilice un servicio de geolocalización de terceros. Utilice esta opción para restringir el acceso a un subconjunto de los archivos asociados a una distribución o para restringirlo a un nivel más detallado que por país.

Uso de las restricciones geográficas de CloudFront

Cuando un usuario solicita el contenido, CloudFront normalmente lo ofrece independientemente de dónde se encuentra el usuario. Si necesita impedir que usuarios de países específicos accedan al contenido, puede usar la característica de restricciones geográficas de CloudFront para realizar una de las siguientes acciones:

  • Conceda permiso a sus usuarios para que accedan a su contenido solo si se encuentran en uno de los países aprobados en la lista de permitidos.

  • Evite que los usuarios accedan al contenido si se encuentran en uno de los países prohibidos de la lista de denegación.

Por ejemplo, si una solicitud proviene de un país donde no tiene autorización para distribuir su contenido, puede utilizar las restricciones geográficas de CloudFront para bloquear la solicitud.

nota

CloudFront determina la ubicación de los usuarios mediante una base de datos de terceros. La precisión del mapeo entre direcciones IP y países varía en función de la región. Según pruebas recientes, la precisión global es del 99,8 %. Si CloudFront no puede determinar la ubicación de un usuario, CloudFront ofrece el contenido que el usuario ha solicitado.

Así es como funcionan las restricciones geográficas:

  1. Supongamos que tiene derechos para distribuir su contenido únicamente en Liechtenstein. Se actualiza la distribución de CloudFront para agregar una lista de permitidos que contiene solo Liechtenstein. (También puede agregar una lista de denegación que contenga todos los países excepto Liechtenstein).

  2. Un usuario en Mónaco solicita el contenido y DNS dirige la solicitud a una ubicación periférica de CloudFront en Milán, Italia.

  3. La ubicación periférica en Milán revisa su distribución y determina que el usuario en Mónaco no tiene permiso para descargar su contenido.

  4. CloudFront devuelve un código de estado HTTP 403 (Forbidden) al usuario.

Si lo desea, puede configurar CloudFront para devolver un mensaje de error personalizado al usuario y puede especificar el tiempo durante el cual desea que CloudFront almacene en caché la respuesta de error del archivo solicitado. El valor de predeterminado es de 10 segundos. Para obtener más información, consulte Creación de una página de error personalizada para códigos de estado HTTP específicos.

Las restricciones geográficas se aplican a la totalidad de la distribución. Si necesita aplicar una restricción a parte del contenido y una restricción diferente (o ningún tipo de restricción) a otra parte del contenido, debe crear distribuciones de CloudFront independientes o utilizar un servicio de geolocalización de terceros.

Si habilita los registros estándar (registros de acceso) de CloudFront, puede identificar las solicitudes que CloudFront rechazó al buscar las entradas de registro cuyo valor de sc-status (el código de estado HTTP) sea 403. Sin embargo, si solo utiliza los registros estándar, no puede distinguir entre una solicitud que CloudFront rechazó en función de la ubicación del usuario y las que CloudFront rechazó porque el usuario no tenía permiso de acceso al archivo debido a otro motivo. Si tiene un servicio de geolocalización de terceros como Digital Element o MaxMind, puede identificar la ubicación de las solicitudes en función de la dirección IP en la columna c-ip (IP del cliente) de los registros de acceso. Para obtener más información sobre los registros estándar de CloudFront, consulte Configuración y uso de registros estándar (registros de acceso).

En el siguiente procedimiento se explica cómo utilizar la consola de CloudFront para agregar restricciones geográficas a una distribución existente. Para obtener más información acerca de cómo crear una distribución, consulte Creación de una distribución.

Para agregar restricciones geográficas a la distribución web (consola) de CloudFront
  1. Inicie sesión en la AWS Management Console y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/v4/home.

  2. En el panel de navegación, elija Distribuciones y, a continuación, elija la distribución que desea actualizar.

  3. Elija la pestaña Seguridad y, a continuación, Restricciones geográficas.

  4. Elija Editar.

  5. Seleccione Allow list (Lista de permitidos) para crear una lista de países permitidos o Block list (Lista de bloqueados) para crear una lista de países bloqueados.

  6. Agregue los países deseados a la lista y, a continuación, elija Save changes (Guardar cambios).

Uso de un servicio de geolocalización de terceros

La característica de restricciones geográficas de CloudFront le permite controlar la distribución de su contenido en el nivel de país para todos los archivos que esté distribuyendo con una determinada distribución web. Si tiene un caso de uso de restricciones geográficas en el que las restricciones no se ajustan a los límites del país o si quiere restringir el acceso solo a algunos de los archivos que está sirviendo por una distribución determinada, puede combinar CloudFront con un servicio de geolocalización de terceros. Esto le proporciona control sobre su contenido en función no solo del país, sino también de la ciudad, código postal o incluso la latitud y la longitud.

Cuando utiliza un servicio de geolocalización de terceros, le recomendamos utilizar direcciones URL firmadas de CloudFront, que le permiten especificar una fecha y hora de vencimiento a partir de la cual la URL deja de ser válida. Además, le recomendamos utilizar un bucket de Amazon S3 como origen porque eso le permite utilizar un control de acceso de origen de CloudFront para evitar que los usuarios obtengan acceso al contenido directamente desde el origen. Para obtener más información acerca de las URL firmadas y controles de acceso de origen, consulte Distribución de contenido privado con URL firmadas y cookies firmadas.

Los siguientes pasos explican cómo controlar el acceso a sus archivos mediante un servicio de geolocalización de terceros.

Para utilizar un servicio de geolocalización de terceros para restringir el acceso a los archivos de una distribución de CloudFront
  1. Obtenga una cuenta con un servicio de geolocalización.

  2. Cargue su contenido a un bucket de Amazon S3.

  3. Configure Amazon CloudFront y Amazon S3 para que sirvan contenido privado. Para obtener más información, consulte Distribución de contenido privado con URL firmadas y cookies firmadas.

  4. Escriba su aplicación web para que haga lo siguiente:

    • Enviar la dirección IP de cada solicitud de usuario al servicio de geolocalización.

    • Evalúe el valor de devolución del servicio de geolocalización para determinar si el usuario se encuentra en una ubicación donde desea que CloudFront distribuya el contenido.

    • Si desea distribuir el contenido a la ubicación del usuario, genere una URL firmada para el contenido de CloudFront. Si no desea distribuir contenido a esa ubicación, devuelva el código de estado HTTP 403 (Forbidden) al usuario. Otra opción es configurar CloudFront para que devuelva un mensaje de error personalizado. Para obtener más información, consulte Creación de una página de error personalizada para códigos de estado HTTP específicos.

    Para obtener más información, consulte la documentación del servicio de geolocalización que está utilizando.

Puede utilizar una variable de servidor web para obtener las direcciones IP de los usuarios que visitan su sitio web. Sin embargo, tenga en cuenta lo siguiente:

  • Si su servidor web no está conectado a Internet a través de un equilibrador de carga, puede utilizar una variable de servidor web para obtener la dirección IP remota. Sin embargo, esta dirección IP no siempre es la del usuario. También puede ser la dirección IP de un servidor proxy, dependiendo de cómo esté el usuario conectado a Internet.

  • Si su servidor web está conectado a Internet a través de un balanceador de carga, una variable de servidor web podría contener la dirección IP del balanceador de carga en lugar de la dirección IP del usuario. En esta configuración, le recomendamos utilizar la última dirección IP del encabezado HTTP X-Forwarded-For. Este encabezado normalmente contiene más de una dirección IP, la mayoría de los cuales son de proxis o balanceadores de carga. La última dirección IP de la lista tiene más posibilidades de asociarse a la ubicación geográfica del usuario.

Si su servidor web no está conectado a un equilibrador de carga, le recomendamos que utilice variables de servidor web en lugar del encabezado X-Forwarded-For para evitar la suplantación de direcciones IP.