Como faço para permitir o acesso aos meus buckets do Amazon S3 para clientes que não usam TLS 1.2 ou posterior?

8 minuto de leitura
0

Meus clientes não usam TLS versões 1.2 ou posteriores, então não podem acessar o conteúdo armazenado em meus buckets do Amazon Simple Storage Service (Amazon S3). Quero permitir que esses clientes acessem o conteúdo em meus buckets do Amazon S3 usando TLS 1.0 ou 1.1.

Breve descrição

A AWS impõe o uso de TLS 1.2 ou superior em todos os endpoints de AWS API. Para continuar se conectando aos serviços da AWS, atualize todos os softwares que usam TLS 1.0 ou 1.1.

Resolução

O Amazon CloudFront permite o uso de versões mais antigas do TLS abstraindo os clientes do protocolo TLS usado entre sua distribuição do CloudFront e o Amazon S3.

Criar uma distribuição do CloudFront com OAC

Com o CloudFront, você pode oferecer suporte a solicitações anônimas e públicas para seus buckets do S3. Ou você pode tornar seus buckets do S3 privados e acessíveis somente por meio do CloudFront, exigindo solicitações assinadas para acessar seus buckets do S3.

Oferecer suporte a solicitações anônimas e públicas para seus buckets do S3

Observação: O exemplo a seguir pressupõe que você já tenha um bucket do S3 em uso. Se você não tiver um bucket do S3, crie um.

Para criar a distribuição do CloudFront, siga estas etapas:

  1. Abra o console do CloudFront.
  2. Escolha Criar distribuição.
  3. Em Origem, para Domínio de origem, escolha o endpoint da API REST do seu bucket do S3 na lista suspensa.
  4. Na política do protocolo Viewer, selecione Redirecionar HTTP para HTTPS.
  5. Em Endpoints HTTP permitidos, selecione GET, HEAD, OPTIONS para suporte a solicitações de leitura.
  6. Em Acesso de origem, selecione as Configurações de controle de acesso de origem (recomendado).
  7. Selecione Criar configuração de controle e use o nome padrão. Para o comportamento de assinatura, selecione Assinar solicitações (recomendado) e selecione Criar. As configurações recomendadas pelo OAC autenticam automaticamente a solicitação de visualização.
  8. Selecione a identidade na lista suspensa. Depois que a distribuição for criada, atualize a política de bucket para restringir o acesso ao OAC.
  9. Em Comportamento de cache padrão, Visualizador, selecione Redirecionar HTTP para HTTPS para a Política de protocolo do visualizador e deixe as outras configurações como padrão.
  10. Em Chave de cache e solicitações de origem, selecione Política de cache e política de solicitação de origem (recomendada). Em seguida, use CachingOptimized para a política de cache e CORS-S3Origin para a Política de solicitação de origem.
  11. Selecione Criar distribuição e aguarde até que seu status seja atualizado para Ativado.

Exigir solicitações assinadas para acessar seus buckets do S3

Adicione segurança aos seus buckets do S3 ao aceitar somente solicitações assinadas. Com solicitações assinadas, o OAC segue seus parâmetros de autenticação e os encaminha para a origem do S3, que então nega solicitações anônimas.

Para criar uma distribuição do CloudFront que exija solicitações assinadas para acessar seus buckets do S3, siga estas etapas:

  1. Abra o console do CloudFront.
  2. Escolha Criar distribuição.
  3. Em Origem, para Domínio de origem, escolha o endpoint da API REST do seu bucket do S3 na lista suspensa.
  4. Na política do protocolo Viewer, selecione Redirecionar HTTP para HTTPS.
  5. Em Endpoints HTTP permitidos, selecione GET, HEAD, OPTIONS para suporte a solicitações de leitura.
  6. Em Acesso de origem, selecione as Configurações de controle de acesso de origem (recomendado).
  7. Bloqueie todas as solicitações não assinadas marcando a opção Não assinar solicitações.
    Observação: o bloqueio de solicitações não assinadas exige que cada cliente assine suas solicitações para que a origem do S3 possa avaliar as permissões.
  8. Crie uma política de cache personalizada para encaminhar o cabeçalho de autorização do cliente para a origem.
  9. Em Chave de cache e solicitações de origem, selecione Política de cache e política de solicitação de origem (recomendada).
  10. Selecione Criar política.
  11. Insira um nome para a política de cache na seção Nome.
  12. Em Configurações da chave de cache, acesse Cabeçalhos e selecione Incluir os seguintes cabeçalhos.
  13. Em Adicionar cabeçalho, selecione Autorização.
  14. Selecione Criar.

Controlar a política de segurança do cliente

Para controlar uma política de segurança no CloudFront, você deve ter um domínio personalizado. É uma prática recomendada especificar um nome de domínio alternativo para sua distribuição. Também é uma prática recomendada usar um certificado SSL personalizado configurado no AWS Certificate Manager (ACM). Isso dá mais controle sobre a política de segurança e permite que os clientes continuem usando o TLS 1.0. Para obter mais informações, consulte Protocolos e cifras compatíveis entre visualizadores e o CloudFront.

Se você usar o nome de domínio *.cloudfront.net padrão, o CloudFront provisionará automaticamente um certificado e definirá a política de segurança para permitir TLS 1.0 e 1.1. Para obter mais informações, consulte Configurações de distribuição.

Para configurar um nome de domínio alternativo para sua distribuição do CloudFront, siga estas etapas:

  1. Faça login no Console de Gerenciamento da AWS e, em seguida, abra o console do CloudFront.
  2. Escolha a ID da distribuição que você deseja atualizar.
  3. Na guia Geral, escolha Editar.
  4. Em Nomes de domínio alternativos (CNAMEs), escolha Adicionar item e insira seu nome de domínio.
    Observação: é uma prática recomendada usar um registro de nome canônico personalizado (CNAME) para acessar seus recursos. O uso de um CNAME oferece maior controle sobre o roteamento e permite uma melhor transição para seus clientes.
  5. Em Certificado SSL personalizado, escolha o certificado SSL personalizado na lista suspensa que cobre seu CNAME para atribuí-lo à distribuição.
    Observação: para obter mais informações sobre a instalação de um certificado, consulte Como configuro minha distribuição do CloudFront para usar um certificado SSL/TLS?
  6. Escolha Criar distribuição e aguarde até que seu status seja atualizado para Ativado.

Depois de criar a distribuição, você deve permitir que o OAC acesse seu bucket. Conclua as seguintes etapas:

  1. Navegue até a página do console do CloudFront e abra sua distribuição do CloudFront.
  2. Selecione a guia Origens, selecione sua origem e clique em Editar.
  3. Escolha Copiar política, abra a permissão do bucket e atualize sua política de bucket.
  4. Abra a página Acessar permissões do S3.
  5. Em Política de bucket, escolha Editar. Cole a política que você copiou anteriormente e escolha Salvar. Se sua política de bucket exigir mais do que ler do S3, você poderá adicionar as APIs necessárias.

Se você usa um nome de domínio personalizado, altere suas entradas de DNS para usar o novo URL de distribuição do CloudFront. Se você não usar um nome de domínio personalizado, deverá fornecer o novo URL de distribuição do CloudFront aos seus usuários. Além disso, você deve atualizar qualquer software cliente ou dispositivo que use o URL antigo.

Se você estiver usando um SDK da AWS para acessar objetos do Amazon S3, deverá alterar seu código para usar endpoints HTTPS regulares. Além disso, certifique-se de usar o novo URL do CloudFront. Se os objetos não forem públicos e precisarem de melhor controle, você poderá veicular conteúdo privado com URLs assinados e cookies assinados.

Usar URLs pré-assinados do S3 para acessar objetos

Se seu fluxo de trabalho depende de URLs pré-assinados do S3, use uma distribuição do CloudFront para retransmitir sua consulta para a origem do S3. Primeiro, gere um URL predefinido para o objeto que você deseja. Em seguida, substitua o host no URL pelo endpoint do CloudFront para fazer a chamada por meio do CloudFront e atualizar automaticamente o protocolo de criptografia. Para testar e gerar um URL pré-assinado, execute o seguinte comando da CLI:

aws s3 presign s3://BUCKET_NAME/test.jpg

Exemplo de saída:

https://bucket_name.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%5b...%5d%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=%5b...%5d&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature">https://BUCKET_NAME.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature    =[...]

Agora, altere o URL do S3 para o novo endpoint do CloudFront. Por exemplo, substitua este URL do S3:

BUCKET_NAME.s3.eu-west-1.amazonaws.com

por este endpoint:

https://DISTRIBUTION_ID.cloudfront.net.

Exemplo de saída:

https://<DISTRIBUTION_ID>.cloudfront.net /test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=[...]

Para usar URLs pré-assinados, aplique as seguintes configurações do CloudFront:

  1. Defina o comportamento de assinatura do OAC como Não assinar solicitações.
  2. Defina a política de solicitação de origem de distribuição do CloudFront para as Configurações de solicitação de origem: Cabeçalhos — Nenhum; Cookies — Nenhum; Strings de consulta — Todas.
  3. Defina a política de cache como Cabeçalhos — Nenhum; Cookies — Nenhum; Strings de consulta — Nenhuma.

No AWS CloudTrail, a solicitação GET para download de um URL pré-assinado do S3 aparece como a identidade que gerou o URL pré-assinado.

Se você estiver usando um SDK da AWS para acessar objetos do S3, deverá alterar seu código para usar o URL pré-assinado. Em vez disso, use uma solicitação HTTPS regular e use o novo URL do CloudFront.

Confirme se está usando protocolos de criptografia modernos para o Amazon S3

Para testar sua nova política, use o seguinte exemplo de comando curl para fazer solicitações HTTPS usando um protocolo legado específico:

curl https://${CloudFront_Domain}/image.png -v --tlsv1.0 --tls-max 1.0

O exemplo de comando curl faz uma solicitação ao CloudFront usando o TLS 1.0. Isso se conecta à origem do S3 usando o TLS 1.2 e baixa o arquivo com sucesso.

É uma prática recomendada usar o AWS CloudTrail Lake para identificar conexões TLS mais antigas com endpoints de serviço da AWS. Você pode configurar o armazenamento de dados de eventos do CloudTrail Lake para capturar eventos de gerenciamento ou eventos de dados. O evento correspondente do CloudTrail no CloudTrail Lake mostra a versão 1.2 do TLS, confirmando que seus clientes usam uma política de segurança moderna para se conectar ao Amazon S3.

AWS OFICIAL
AWS OFICIALAtualizada há um ano