Amazon CloudFront
Guía del desarrollador (Versión de API 2016-09-29)

Restringir la distribución geográfica de su contenido

Puede usar la función de restricción geográfica, denominada también bloqueo geográfico, para evitar que usuarios de ubicaciones geográficas específicas obtengan acceso a contenido que distribuye a través de una distribución web de CloudFront. Para utilizar la restricción geográfica, dispone de dos opciones:

  • Utilice la característica de restricción geográfica 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.

Usar la restricción geográfica de CloudFront

Cuando un usuario solicita contenido, por lo general, CloudFront lo ofrece independientemente de dónde se encuentra el usuario. Si necesita impedir que usuarios de países específicos accedan a su contenido, puede usar la característica de restricción geográfica de CloudFront para realizar una de las siguientes acciones:

  • Permita a los usuarios obtener acceso a su contenido solo si están en uno de los países aprobados e incluidos en una lista blanca.

  • Evite que los usuarios obtengan acceso a su contenido si están en uno de los países prohibidos e incluidos en una lista negra.

Por ejemplo, si una solicitud proviene de un país en el que, por motivos de derechos de autor, no está autorizado a distribuir su contenido, puede utilizar la restricción geográfica de CloudFront para bloquear la solicitud.

nota

CloudFront determina la ubicación de sus usuarios mediante una base de datos GeoIP 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 %. Tenga en cuenta que si CloudFront no puede determinar la ubicación de un usuario, CloudFront distribuirá el contenido que el usuario ha solicitado.

Así es como funciona la restricción geográfica:

  1. Supongamos que tiene derechos para distribuir su contenido únicamente en Liechtenstein. Actualice la distribución web de CloudFront y añada una lista blanca que contenga solo Liechtenstein. (También puede añadir una lista negra que contenga todos los países excepto Liechtenstein).

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

  3. La ubicación de borde en Milán revisa su distribución y determina que el usuario en Mónaco no está autorizado a descargar el contenido.

  4. CloudFront devuelve un código de estado HTTP 403 (Prohibido) 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 predeterminado es de cinco minutos). Para obtener más información, consulte Creación de una página de error personalizada para códigos de estado HTTP específicos.

La restricción geográfica se aplica a la totalidad de la distribución web. Si necesita aplicar una restricción a parte de su contenido y otra (o ningún tipo de restricción) a otra parte, cree distribuciones web de CloudFront independientes o use un servicio de geolocalización de terceros.

Si habilita el registro de acceso de CloudFront, podrá identificar las solicitudes que CloudFront rechazó buscando las entradas de registro cuyo valor de sc-status (el código de estado HTTP) sea 403. Sin embargo, si solo utiliza los registros de acceso, no podrá distinguir entre las solicitudes que CloudFront rechace a causa de la ubicación del usuario y las que rechace porque el usuario no tenga permiso de acceso al archivo debido a otro motivo.CloudFront 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 acerca de los registros de acceso de CloudFront, consulte Configuración y uso de registros de acceso.

El siguiente procedimiento explica cómo utilizar la consola de CloudFront para agregar la restricción geográfica a una distribución web existente. Para obtener más información acerca de cómo crear una distribución web, consulte Creación de una distribución.

Para añadir restricciones geográficas a la distribución web de CloudFront desde la consola de CloudFront

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFront en https://console.aws.amazon.com/cloudfront/.

  2. Seleccione la distribución que desea actualizar.

  3. En el panel Distribution Settings (Configuración de la distribución), elija la pestaña Restrictions (Restricciones).

  4. Elija Edit.

  5. Escriba los valores aplicables. Para obtener más información, consulte Restricciones.

  6. Elija Yes, Edit (Sí, editar).

Utilizar un servicio de geolocalización de terceros

La característica de restricción geográfica de CloudFront le permite controlar por país la distribución de todos los archivos que está ofreciendo con una distribución web determinada. Si tiene restricciones geográficas para distribuir su contenido y dichas restricciones no coinciden con límites formales de los países, o si desea limitar el acceso a solo algunos de los archivos que distribuye con CloudFront, puede combinar CloudFront un servicio de geolocalización de terceros. Esto puede ayudarle a controlar el acceso a su contenido en función no solo en el país sino también de la ciudad, código postal o incluso la latitud y la longitud.

Si utiliza un servicio de geolocalización de terceros, le recomendamos utilizar URL firmadas de CloudFront, que le permiten definir 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, ya que eso le permite utilizar una identidad de acceso de origen de CloudFront para evitar que los usuarios obtengan acceso a su contenido directamente desde el origen. Para obtener más información acerca de las URL firmadas e identidades de acceso de origen, consulte Distribución de contenido privado con URL firmadas y cookies firmadas.

La siguiente lista de tareas explica cómo controlar el acceso a sus archivos mediante un servicio de geolocalización de terceros.

Lista de tareas para restringir el acceso a archivos en una distribución de CloudFront en función de la ubicación geográfica

  1. Obtenga una cuenta con un servicio de geolocalización.

  2. Cargue su contenido a un bucket de Amazon Simple Storage Service (S3). Para obtener más información, consulte la documentación de Amazon S3.

  3. Configure Amazon CloudFront y Amazon S3 para ofrecer 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:

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

    2. Evaluar el valor de devolución del servicio de geolocalización para determinar si el usuario se encuentra en una ubicación a la que desea que CloudFront distribuya el contenido.

    3. En función de si desea distribuir o no el contenido según la ubicación del usuario, genere una URL firmada para dicho contenido de CloudFront o devuelva al usuario el código de estado HTTP 403 (Prohibido). 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 balanceador de carga, puede utilizar una variable de servidor web para obtener la dirección IP remota. Sin embargo, esta dirección IP no es siempre la dirección IP del usuario, sino que también puede ser la dirección IP de un servidor proxy. Esto dependerá de cómo el usuario esté 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 ser asociada a la ubicación geográfica del usuario.

Si su servidor web no está conectado a un balanceador 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.