Quero restringir o acesso ao conteúdo na minha distribuição do Amazon CloudFront.
Breve descrição
Para restringir o acesso ao conteúdo privado em sua distribuição do CloudFront, use URLs ou cookies assinados.
Se você precisar apenas de autenticação básica com nome de usuário e senha, use o Lambda@Edge ou o CloudFront Functions para configurar a autenticação básica.
Para restringir o acesso com base no endereço IP ou na localização geográfica, configure o CloudFront para permitir ou bloquear solicitações.
Para configurar a autenticação segura do usuário com um provedor de identidade, use o Lambda@Edge para integrar o CloudFront com o OpenID Connect (OIDC).
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Usar URLs ou cookies assinados
URLs assinadas incorporam assinaturas criptografadas em URLs para fornecer acesso temporário a arquivos individuais. Use URLs assinadas para proteger o acesso a recursos específicos.
O CloudFront emite cookies assinados aos clientes para permitir o acesso a vários arquivos em um caminho. Use cookies assinados para ter um controle de acesso mais amplo.
Observação: URLs e cookies assinados usam pares de chaves criptográficas que você cria e associa à sua distribuição.
Para usar URLs ou cookies assinados, conclua as seguintes etapas:
Criar um par de chaves
Crie um par de chaves e faça o upload do par de chaves no CloudFront.
Criar um grupo de chaves confiável
- Abra o console do CloudFront.
- No painel de navegação, em Gerenciamento de chaves, escolha Grupos de chaves.
- Escolha Criar grupo de chaves.
- Em Nome, insira um nome para seu grupo de chaves.
- Em Chaves públicas, escolha uma chave.
- Escolha Criar grupo de chaves.
Configurar a distribuição
Atualize sua distribuição para usar seu grupo de chaves confiável para URLs ou cookies assinados. Para mais informações sobre como configurar a distribuição, consulte Configurações de comportamento de cache.
Gerar URLs ou cookies assinados
Para gerar URLs assinadas, execute o seguinte comando sign da AWS CLI:
aws cloudfront sign \
--url "https://your-distribution-domain.cloudfront.net/path/to/file.pdf" \
--key-pair-id "YOUR_KEY_PAIR_ID" \
--private-key file://path/to/your/private-key.pem \
--date-less-than "2024-12-31T23:59:59"
Para obter mais opções, como restrições de IP, consulte Opções em Referência de comandos da AWS CLI.
Observação: também é possível criar URLs assinadas para ferramentas de terceiros.
Para gerar cookies assinados, use um AWS SDK para sua linguagem. Para obter exemplos de código, consulte Criar cookies assinados usando PHP e Criar URLs e cookies assinados usando um AWS SDK.
Usar URLs ou cookies assinados
Inclua as URLs ou os cookies assinados nas solicitações para o CloudFront.
Usar o Lambda@Edge para configurar a autenticação básica
Observação: é preciso criar um código personalizado para usar o Lambda@Edge para implementar sua lógica de autenticação.
Conclua as etapas a seguir:
- Crie uma função do AWS Lambda para lidar com a autenticação de solicitações de visualizadores.
- No código da função, inspecione os cabeçalhos da solicitação, valide as credenciais e permita ou negue a solicitação. Para ver um exemplo de função, consulte Exemplo: Redirecionar usuários não autenticados para uma página de login.
- Use gatilhos para associar a função ao comportamento da sua distribuição.
Usar o CloudFront Functions para configurar a autenticação básica
Observação: é preciso criar um código personalizado para usar o CloudFront Functions para implementar sua lógica de autenticação.
Conclua as etapas a seguir:
- Crie uma CloudFront Function para autenticar as solicitações do visualizador.
- No código da função, inspecione os cabeçalhos, valide as credenciais e permita ou negue solicitações. Para ver um exemplo de função, consulte Validar um token simples em uma solicitação do visualizador do CloudFront Functions.
- Associe a função ao comportamento da sua distribuição.
Configurar o CloudFront para permitir ou bloquear solicitações com base no endereço IP do cliente ou na localização geográfica
Execute uma das ações a seguir:
- Para criar restrições com base no controle de acesso IP, use o AWS WAF para definir listas de permissões e listas de negação de endereços IP para sua distribuição.
- Para criar restrições com base na localização geográfica, restrinja o acesso ao seu conteúdo com base no país de origem das solicitações.
Observação: o AWS WAF e a restrição geográfica se aplicam somente ao nível de distribuição e não ao comportamento do cache.
Usar o Lambda@Edge para integrar o CloudFront ao OIDC
Observação: para a integração, é preciso implementar o fluxo de autenticação do OIDC na aplicação e obter um token de ID para incluir nas solicitações ao CloudFront.
Conclua as etapas a seguir:
- Crie uma função do Lambda para validar o token de ID do OIDC nas solicitações do visualizador.
- No código da função, inspecione o cabeçalho de autorização, valide o token de ID e permita ou negue a solicitação.
- Associe a função ao comportamento da sua distribuição.
Informações relacionadas
Authorization@Edge – Como usar Lambda@Edge e tokens Web JSON para maior segurança do aplicativo web
Autorização de servidor externo com Lambda@Edge
Proteger as distribuições do CloudFront usando o OpenID Connect e o AWS Secrets Manager