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ção geográfica, também conhecida como bloqueio geográfico, 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 a restrição geográfica, você tem duas opções:

  • Use o recurso de restrição geográfica 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 a restrição geográfica 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ção geográfica 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 de uma lista de permissões.

  • Impedir que os usuários acessem seu conteúdo somente se estiverem em um dos países proibidos de uma lista negra.

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

nota

O CloudFront determina a localização de seus usuários usando um banco de dados GeoIP 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 funciona a restrição geográfica:

  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. (Como alternativa, você pode adicionar uma lista negra com todos os países, exceto Liechtenstein.)

  2. Um usuário em Mônaco solicita seu conteúdo, e o DNS roteia a solicitação para o ponto de presença do CloudFront em Milão, na Itália.

  3. O ponto de presença em Milão procura sua distribuição e determina que o usuário em Mônaco não pode fazer download do 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.

A restrição geográfica se aplica a toda uma distribuição. Se precisar aplicar uma restrição a parte do seu conteúdo e outra restrição diferente (ou nenhuma) a outra parte dele, é necessário criar distribuições distintas do CloudFront ou usar um serviço de geolocalização de terceiros.

Se permitir o registro de acesso do CloudFront, você 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) seja 403. No entanto, usando somente os logs de acesso, não é 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 mais informações sobre os logs de acesso 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ção geográfica a uma distribuição existente. Para informações sobre como usar o console para criar uma distribuição, consulte Criar uma distribuição.

Como adicionar restrição geográfica à 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. Selecione a distribuição que você deseja atualizar.

  3. No painel Distribution Settings, escolha a guia Restrictions.

  4. Selecione Edit.

  5. Insira os valores aplicáveis. Para obter mais informações, consulte Restrictions.

  6. Escolha Yes, Edit.

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

O recurso de restrição geográfica do CloudFront permite controlar a distribuição do seu conteúdo no nível do país para todos os arquivos sendo distribuídos com uma distribuição na web. Se houver restrições geográficas em locais nos quais seu conteúdo pode ser distribuído e as restrições não seguirem os limites do país ou se quiser restringir o acesso a apenas alguns arquivos distribuídos pelo CloudFront , 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 você usar um serviço de geolocalização de terceiros, recomendamos que use signed URLs do CloudFront, as quais permitem especificar uma data e hora de expiração do URL. 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 a localização geográfica para restringir o acesso a arquivos em uma distribuição do CloudFront

  1. Obtenha uma conta com um serviço de geolocalização.

  2. Carregue seu conteúdo em um bucket do Amazon Simple Storage Service (S3). Para mais informações, consulte a documentação 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:

    1. Enviar o endereço IP de cada solicitação de usuário para o serviço de geolocalização.

    2. 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.

    3. Se você quiser distribuir o conteúdo para a localização do usuário, gere um signed URL 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. Como alternativa, é 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 load balancer, 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 load balancers. 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 load balancer, 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.