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

Restringir a distribuição geográfica de seu 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 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 as restriçõ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:

  • Permitir que os usuários acessem seu conteúdo somente se estiverem em um dos países aprovados em sua lista de permissões.

  • Impedir que os usuários acessem seu conteúdo somente se estiverem em um dos países proibidos em sua 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ê atualiza sua distribuição do CloudFront e adiciona uma lista de permissões que contenha somente Liechtenstein. (Ou você pode 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 de 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 outra restrição diferente (ou nenhuma) a outra parte dele, precisará 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/v3/home.

  2. Escolha a distribuição que você deseja atualizar.

  3. Escolha Geographic restrictions (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

O recurso de restrições geográficas do CloudFront permite controlar a distribuição de seu conteúdo em nível do país para todos os arquivos que estão sendo distribuídos com uma distribuição na Web. 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 pode permitir que você controle o acesso ao conteúdo com base não apenas no país, mas também na cidade, CEP ou código postal, ou até mesmo latitude e longitude.

Se estiver usando um serviço de geolocalização de terceiros, recomendamos que use URLs assinados do CloudFront, que permitem que você especifique uma data e hora de expiração após as quais o URL não será mais válido. Além disso, recomendamos que você use um bucket do Amazon S3 como sua origem. Isso possibilita usar uma identidade de acesso de origem do CloudFront para impedir que os usuários acessem seu conteúdo diretamente da origem. Para obter mais informações sobre signed URLs e identidades de acesso de origem, consulte Veicular conteúdo privado com signed URLs e cookies.

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 signed URLs e cookies.

  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.