Restringir a distribuição geográfica do conteúdo - Amazon CloudFront

Restringir a distribuição geográfica do conteúdo

É possível usar restrições geográficas, também conhecidas como bloqueios geográficos, para impedir que usuários em localizações geográficas específicas acessem o conteúdo que você está distribuindo por meio de uma distribuição do Amazon CloudFront. Para usar restrições geográficas, você tem duas opções:

  • Use o recurso de restrições geográficas do CloudFront. Use essa opção para restringir o acesso a todos os arquivos associados a uma distribuição e restringir o acesso no nível do país.

  • Usar um serviço de geolocalização de terceiros. Use essa opção para restringir o acesso a um subconjunto de arquivos associados a uma distribuição ou restringir o acesso a uma granularidade mais específica no nível do país.

Usar estrições geográficas do CloudFront

Quando um usuário solicita seu conteúdo, o CloudFront normalmente o fornece, independentemente de onde o usuário está localizado. Se precisar impedir que usuários de alguns países acessem seu conteúdo, você poderá usar o recurso de restrições geográficas do CloudFront para executar uma das seguintes ações:

  • Conceder aos usuários acesso ao conteúdo somente se estiverem em um dos países aprovados na lista de permissões.

  • Impedir que os usuários acessem o conteúdo se estiverem em um dos países proibidos na lista de bloqueio.

Por exemplo, se a solicitação for proveniente de um país em que você não estiver autorizado a distribuir o conteúdo, poderá usar as restrições geográficas do CloudFront para bloquear a solicitação.

nota

O CloudFront determina 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. Com base em testes recentes, a precisão geral é de 99,8%. Se o CloudFront não conseguir determinar a localização de um usuário, ele fornecerá o conteúdo solicitado pelo usuário.

Veja como as restrições geográficas funcionam:

  1. Imagine que você tenha direitos para distribuir o conteúdo apenas em Liechtenstein. Você deve atualizar a distribuição do CloudFront e adicionar uma lista de permissões que contenha somente Liechtenstein. (Ou é possível adicionar uma lista de bloqueio com todos os países, exceto Liechtenstein.)

  2. Um usuário em Mônaco solicita seu conteúdo, e o DNS encaminha a solicitação ao local de borda do CloudFront em Milão, na Itália.

  3. O local da borda em Milão procura sua distribuição e determina que o usuário em Mônaco não pode baixar seu conteúdo.

  4. O CloudFront retorna um código de status HTTP 403 (Forbidden) ao usuário.

Opcionalmente, você pode configurar o CloudFront para retornar uma mensagem de erro personalizada para o usuário e especificar por quanto tempo o CloudFront deve armazenar a resposta de erro em cache para o arquivo solicitado. O valor de padrão é de 10 segundos. Para obter mais informações, consulte Criar uma página de erro personalizada para códigos de status HTTP específicos.

As restrições geográficas se aplicam a toda uma distribuição. Se precisar aplicar uma restrição a parte de seu conteúdo e uma restrição diferente (ou nenhuma) a outra parte, você deverá criar distribuições distintas do CloudFront ou usar um serviço de geolocalização de terceiros.

Se você habilitar logs padrão (logs de acesso) do CloudFront, poderá identificar as solicitações recusadas pelo CloudFront procurando as entradas de log nas quais o valor de sc-status (o código de status HTTP) for 403. No entanto, se usar somente os logs padrão, não será possível distinguir uma solicitação recusada pelo CloudFront com base na localização do usuário de uma solicitação recusada pelo CloudFront porque o usuário não tem permissão para acessar o arquivo por outro motivo. Se você tiver um serviço de geolocalização de terceiros, como Digital Element ou MaxMind, poderá identificar a localização das solicitações com base no endereço IP da coluna c-ip (IP do cliente) nos logs de acesso. Para obter mais informações sobre os logs padrão do CloudFront, consulte Configurar e usar logs padrão (logs de acesso).

O procedimento a seguir explica como usar o console do CloudFront para adicionar restrições geográficas a uma distribuição existente. Para obter informações sobre como usar o console para criar uma distribuição, consulte Criar uma distribuição.

Como adicionar restrições geográficas à distribuição na Web do CloudFront (console)
  1. Faça login no AWS Management Console e abra o console do CloudFront em https://console.aws.amazon.com/cloudfront/v4/home.

  2. No painel de navegação, escolha Distribuições e selecione a distribuição que deseja atualizar.

  3. Escolha a guia Segurança e selecione Restrições geográficas.

  4. Escolha Edit (Editar).

  5. Selecione Allow list (Lista de permissões), para criar uma lista de países permitidos, ou Block list (Lista de bloqueio), para criar uma lista de países bloqueados.

  6. Adicione os países desejados à lista e escolha Save changes (Salvar as alterações).

Usar um serviço de geolocalização de terceiros

Com o recurso de restrições geográficas do CloudFront, é possível controlar a distribuição do conteúdo em nível de país para todos os arquivos que estão sendo distribuídos com uma distribuição da web específica. Se tiver um caso de uso para restrições geográficas em que as restrições não sigam limites de país, ou se quiser restringir o acesso a apenas alguns arquivos distribuídos por determinada distribuição, você poderá combinar o CloudFront com um serviço de geolocalização de terceiros. Isso confere a você controle do conteúdo com base não apenas no país, mas também na cidade, no CEP ou no código postal, ou até mesmo na latitude e na longitude.

Se você usar um serviço de geolocalização de terceiros, recomendamos usar URLs assinados do CloudFront, que permitem especificar uma data e hora de expiração do URL. Além disso, recomendamos que você use um bucket do Amazon S3 como origem. Isso possibilita usar um controle de acesso à origem do CloudFront para impedir que os usuários acessem seu conteúdo diretamente da origem. Para obter mais informações sobre URLs assinados e controle de acesso à origem, consulte Veicular conteúdo privado com URLs e cookies assinados.

As etapas a seguir explicam como controlar o acesso aos seus arquivos usando um serviço de geolocalização de terceiros.

Como usar um serviço de geolocalização de terceiros para restringir o acesso a arquivos em uma distribuição do CloudFront
  1. Obtenha uma conta com um serviço de geolocalização.

  2. Faça upload do conteúdo em um bucket do Amazon S3.

  3. Configure o Amazon CloudFront e o Amazon S3 para fornecer conteúdo privado. Para obter mais informações, consulte Veicular conteúdo privado com URLs e cookies assinados.

  4. Configure seu aplicativo web para:

    • Envie o endereço IP de cada solicitação de usuário para o serviço de geolocalização.

    • Avalie o valor de retorno do serviço de geolocalização para determinar se o usuário está em um local no qual você deseja que o CloudFront distribua seu conteúdo.

    • Se você quiser distribuir o conteúdo para a localização do usuário, gere um URL assinado para o conteúdo do CloudFront. Se não quiser distribuir o conteúdo para essa localização, retorne o código de status HTTP 403 (Forbidden) para o usuário. É também possível configurar o CloudFront para retornar uma mensagem de erro personalizada. Para obter mais informações, consulte Criar uma página de erro personalizada para códigos de status HTTP específicos.

    Para obter mais informações, consulte a documentação do serviço de geolocalização que você estiver usando.

Você pode usar uma variável do servidor da Web para obter os endereços IP dos usuários que estiverem acessando seu site. Observe as seguintes advertências:

  • Se o servidor da Web não estiver conectado à Internet por um balanceador de carga, você poderá usar uma variável de servidor da Web para obter o endereço IP remoto. No entanto, esse endereço IP nem sempre é o endereço IP do usuário. Ele pode ser o endereço IP de um servidor de proxy, dependendo de como o usuário está conectado à Internet.

  • Se o servidor da web estiver conectado à Internet por um load balancer, uma variável dele poderá conter o endereço IP do load balancer, não do usuário. Nessa configuração, recomendamos que você use o último endereço IP do cabeçalho HTTP X-Forwarded-For. Esse cabeçalho normalmente contém mais de um endereço IP, e a maioria deles são para proxies ou balanceadores de carga. O último endereço IP da lista é o que tem maior probabilidade de estar associado à localização geográfica do usuário.

Se o servidor da Web não estiver conectado a um balanceador de carga, recomendamos que você use variáveis de servidor da Web, em vez do cabeçalho X-Forwarded-For, para evitar a falsificação do endereço IP.