Bloqueo geográfico
Información general
Las políticas de bloqueo geográfico se implementan en las aplicaciones web por diferentes motivos, como, por ejemplo, para cumplir con las regulaciones que involucran a países embargados o para bloquear la transmisión de video en países donde la aplicación web no tiene derechos de transmisión.
Casos de uso comunes
El bloqueo geográfico se puede implementar mediante las restricciones geográficas nativas de CloudFront, mediante funciones de periferia o mediante AWS WAF. Cada método proporciona una granularidad de coincidencia, una lógica personalizable y un nivel de precios diferentes. Los métodos también se pueden combinar, ya que CloudFront evalúa primero su regla de restricciones geográficas, luego AWS WAF evalúa sus reglas de coincidencia geográfica y, por último, las funciones de periferia se ejecutan para evaluar la lógica de bloqueo geográfico en su código. Tenga en cuenta que CloudFront y AWS WAF determinan la ubicación de sus usuarios mediante una base de datos de terceros. La precisión de la asignación entre las direcciones IP y los países varía según la región.
Restricciones geográficas simples y globales en CloudFront
Use las restricciones geográficas de CloudFront para restringir los países en cuanto a distribución, sin cargos adicionales. Puede permitir o bloquear un conjunto específico de países, que se aplica a todas las solicitudes recibidas por su distribución de CloudFront. Los lectores afectados por las restricciones geográficas configuradas recibirán una respuesta 403 Forbidden de CloudFront. Puede usar las páginas de error personalizadas de CloudFront para mostrar una página de error fácil de usar.
Lógica avanzada de bloqueo geográfico mediante CloudFront Functions
Use CloudFront Functions, que se configura en el evento de solicitud del lector, para implementar la lógica avanzada de bloqueo geográfico mediante JavaScript. CloudFront Functions se puede usar de forma granular con un comportamiento de caché de CloudFront específico (por ejemplo, /api/* paths), y la lógica puede ser más granular en el código y combinarse con otra lógica de control de acceso, como la autorización. Para implementar la lógica basada en la ubicación geográfica en CloudFront Functions, debe permitir incluir los encabezados de CloudFront necesarios (por ejemplo, CloudFront-Viewer-Country o CloudFront-Viewer-Country-Region) en una política de solicitud de origen adjunta al mismo comportamiento de caché de CloudFront al que está asociada la función.
El siguiente ejemplo de función de CloudFront bloquea a los lectores de las regiones ucranianas de Donetsk (14) o Lugansk (9).
function handler(event) {
var request = event.request;
var country = request.headers['cloudfront-viewer-country'];
var region = request.headers['cloudfront-viewer-country-region'];
if (country && country.value === 'UA' && region && (region.value === '9' || region.value === '14')) {
return {
statusCode: 403,
statusDescription: 'Forbidden',
};
}
return request;
}