Bloqueio geográfico
Visão geral
As políticas de bloqueio geográfico são implementadas em aplicações Web por diferentes motivos, como para cumprir as regulamentações relacionadas a países embargados ou para bloquear o streaming de vídeo em países onde a aplicação Web não tem direitos de streaming.
Casos de uso comuns
O bloqueio geográfico pode ser implementado usando as restrições geográficas nativas do CloudFront, usando funções de borda ou usando o AWS WAF. Cada método fornece diferentes granularidades de correspondência, lógica personalizável e nível de preço. Os métodos também podem ser combinados, sabendo que o CloudFront avalia primeiro sua regra de restrições geográficas, depois o AWS WAF avalia suas regras de correspondência geográfica e, finalmente, as funções de borda são executadas para avaliar a lógica de bloqueio geográfico no seu código. Observe que o CloudFront e o AWS WAF determinam a localização de seus usuários usando um banco de dados de terceiros. A precisão do mapeamento entre os endereços IP e os países varia de acordo com a região.
Restrições geográficas simples e globais no CloudFront
Use as restrições geográficas do CloudFront para restringir países no nível de distribuição, sem cobranças adicionais. Você pode permitir ou bloquear um conjunto específico de países, aplicado a todas as solicitações recebidas pela sua distribuição do CloudFront. Os espectadores restritos pelas restrições geográficas configuradas receberão uma resposta 403 Proibido do CloudFront. Você pode usar as páginas de erro personalizadas do CloudFront para exibir uma página de erro amigável.
Lógica avançada de bloqueio geográfico usando o CloudFront Functions
Use o CloudFront Functions, configurado no evento de solicitação do espectador, para implementar a lógica avançada de bloqueio geográfico usando javascript. O CloudFront Functions pode ser usado granularmente com um comportamento específico de cache do CloudFront (por exemplo, caminhos /api/*), e a lógica pode ser mais granular no código e pode ser combinada com outras lógicas de controle de acesso, como autorização. Para implementar a lógica baseada em geografia em funções do CloudFront Functions, você precisa permitir a lista dos cabeçalhos necessários do CloudFront (por exemplo, CloudFront-Viewer-Country ou CloudFront-Viewer-Country-Region) em uma política de solicitação de origem anexada ao mesmo comportamento de cache do CloudFront ao qual essa função está associada.
O exemplo abaixo de função do CloudFront bloqueia espectadores das regiões de Donetsk (14) ou Luhansk (9) da Ucrânia.
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;
}