

# Restringir o acesso a arquivos
<a name="private-content-overview"></a>

É possível controlar o acesso do usuário ao seu conteúdo privado de duas maneiras:
+ [Restringir o acesso a arquivos em caches do CloudFront](#private-content-overview-edge-caches).
+ Restrinja o acesso a arquivos na sua origem de uma das seguintes maneiras:
  + [Configure um controle de acesso à origem (OAC) para seu bucket do Amazon S](private-content-restricting-access-to-s3.md).
  + [Configurar cabeçalhos personalizados para um servidor HTTP privado (uma origem personalizada)](#forward-custom-headers-restrict-access).

## Restringir o acesso a arquivos em caches do CloudFront
<a name="private-content-overview-edge-caches"></a>

É possível configurar o CloudFront para exigir que os usuários acessem seus arquivos usando *signed URLs* ou *signed cookies*. Depois, desenvolva sua aplicação para criar e distribuir signed URLs para usuários autenticados ou para enviar cabeçalhos `Set-Cookie` que definem signed cookies para usuários autenticados. (Para conceder a alguns usuários acesso de longo prazo a um pequeno número de arquivos, você também pode criar URLs assinados manualmente.) 

Ao criar signed URLs ou cookies para controlar o acesso a seus arquivos, você pode especificar as seguintes restrições:
+ Uma data e hora de expiração do URL. 
+ (Opcional) A data e a hora em que o URL se torna válido.
+ (Opcional) O endereço IP ou os endereços dos computadores que podem ser usados para acessar seu conteúdo. 

É adicionado hash ou assinatura a parte de um signed URL ou signed cookie usando a chave privada de um par de chaves públicas/privadas. Quando alguém usa um signed URL ou signed cookie para acessar um arquivo, o CloudFront compara as partes assinada e não assinada do URL ou cookie. Se elas não corresponderem, o CloudFront não fornecerá o arquivo.

É necessário usar chaves privadas RSA 2048 ou ECDSA 256 para assinar URLs ou cookies.

## Restringir o acesso a arquivos em buckets do Amazon S3
<a name="private-content-overview-s3"></a>

Também é possível proteger o conteúdo no bucket do Amazon S3 para que os usuários possam acessá-lo por meio da distribuição especificada do CloudFront, mas não possam acessá-lo diretamente usando URLs do Amazon S3. Isso impede que alguém ignore o CloudFront e use o URL do Amazon S3 para obter o conteúdo ao qual você deseja restringir o acesso. Essa etapa não exige o uso de signed URLs, mas recomendamos que você o faça.

Para solicitar que os usuários acessem seu conteúdo por URLs do CloudFront, siga estas etapas:
+ Conceda uma permissão de *controle de acesso à origem* do CloudFront para ler os arquivos no bucket do S3.
+ Crie o controle de acesso à origem e associe-o à sua distribuição do CloudFront.
+ Remova a permissão para usar URLs do Amazon S3 para ler os arquivos de todas as demais pessoas.

Para obter mais informações, consulte [Restringir o acesso a uma origem do Amazon S3](private-content-restricting-access-to-s3.md).

## Restringir o acesso a arquivos em origens personalizadas
<a name="forward-custom-headers-restrict-access"></a>

Se você usar uma origem personalizada, pode configurar os cabeçalhos personalizados para restringir o acesso. Para o CloudFront obter seus arquivos de uma origem personalizada, os arquivos devem estar acessíveis pelo CloudFront usando uma solicitação padrão HTTP (ou HTTPS). Mas, ao usar cabeçalhos personalizados, é possível restringir ainda mais o acesso ao conteúdo para que os usuários possam acessá-lo apenas por meio do CloudFront, e não diretamente. Essa etapa não exige o uso de signed URLs, mas recomendamos que você o faça.

Para exigir que os usuários acessem o conteúdo por meio do CloudFront, altere as seguintes configurações em suas distribuições do CloudFront:

**Cabeçalhos personalizados de origem**  
Configure o CloudFront para encaminhar cabeçalhos personalizados para sua origem. Consulte [Configurar o CloudFront para adicionar cabeçalhos personalizados às solicitações de origem](add-origin-custom-headers.md#add-origin-custom-headers-configure).

**Política de protocolo do visualizador**  
Configure a distribuição para exigir que os visualizadores usem HTTPS para acessar o CloudFront. Consulte [Política de protocolo do visualizador](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy). 

**Política de protocolo da origem**  
Configure sua distribuição para exigir que o CloudFront use o mesmo protocolo que os visualizadores para encaminhar solicitações para a origem. Consulte [Protocolo (somente origens personalizadas)](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy). 

Depois de fazer essas alterações, atualize sua aplicação na origem personalizada para aceitar somente solicitações que incluam os cabeçalhos personalizados que você configurou o CloudFront para enviar.

A combinação de **Viewer Protocol Policy (Política de protocolo do visualizador)** e **Origin Protocol Policy (Política de protocolo da origem)** garante que os cabeçalhos personalizados sejam criptografados em trânsito. No entanto, recomendamos que você execute periodicamente o seguinte, para alternar os cabeçalhos personalizados encaminhados pelo CloudFront para sua origem:

1. Atualize sua distribuição do CloudFront para começar a encaminhar um novo cabeçalho para sua origem personalizada.

1. Atualize sua aplicação para aceitar o novo cabeçalho como confirmação de que a solicitação é proveniente do CloudFront.

1. Quando as solicitações não incluírem mais o cabeçalho que você estiver substituindo, atualize a aplicação para não aceitar mais o cabeçalho antigo como confirmação de que a solicitação é proveniente do CloudFront.