Como uso minha distribuição do CloudFront para restringir o acesso a um bucket do Amazon S3?
Quero restringir o acesso ao meu bucket do Amazon Simple Storage Service (Amazon S3) para que os usuários acessem objetos somente por meio da minha distribuição Amazon CloudFront.
Resolução
Importante: antes de começar, certifique-se de que a origem do Amazon S3 da sua distribuição do CloudFront esteja configurada como um endpoint da API REST. Por exemplo, AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com. Essa resolução não se aplica às origens do S3 que estão configuradas como um endpoint de site. Por exemplo, AWSDOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com. Para mais informações, consulte Como uso o CloudFront para servir um site estático hospedado no Amazon S3?
Opção 1 (melhores práticas): Crie um controle de acesso de origem (OAC) do CloudFront
- Abra o console do CloudFront.
- Na lista de distribuições, escolha a distribuição que serve conteúdo do bucket do S3 ao qual você deseja restringir o acesso.
- Escolha a guia Origens.
- Selecione a origem do S3 e, em seguida, escolha Editar.
- Para o Acesso Origem, selecione as configurações de controle de acesso de Origem (recomendado).
- Para o controle de acesso Origem, selecione um OAC existente ou escolha a configuração Criar controle.
- Na caixa de diálogo, nomeie sua configuração de controle. É uma prática recomendada manter a configuração padrão como solicitações de assinatura (recomendado). Em seguida, escolha Criar.
- Para o Acesso de bucket do S3, aplique a política de bucket no bucket do S3. Selecione Copiar política e, em seguida, selecione Salvar.
- Selecione Ir para as permissões do bucket do S3 para levá-lo ao console do bucket do S3.
- Selecione Salvar alterações.
- No console do Amazon S3, na sua lista de buckets, escolha o bucket que é a origem da distribuição do CloudFront.
- Escolha a guia Permissões.
- Em Política de Bucket, confirme se você vê uma declaração semelhante à seguinte:
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE" } } } }
Você deve adicionar a instrução anterior para permitir que o CloudFront OAC leia objetos do seu bucket.
**Observação:**Depois de restringir o acesso ao seu bucket usando o CloudFront OAC, você tem a opção de adicionar outra camada de segurança integrando o AWS WAF.
Opção 2: Crie uma identidade de acesso de origem (OAI) antiga do CloudFront
- Abra o console do CloudFront.
- Na lista de distribuições, escolha a distribuição que serve conteúdo do bucket do S3 ao qual você deseja restringir o acesso.
- Escolha a guia Origens.
- Selecione a origem do S3 e, em seguida, escolha Editar.
- Para o Acesso de Origem, selecione Identidades de acesso legadas.
- Na lista suspensa de identidade de acesso à Origem, selecione o nome da identidade de acesso de origem ou escolha Criar novo OAI.
- Na caixa de diálogo, nomeie sua nova identidade de acesso de origem e escolha Criar.
- Em Política de Bucket, selecione Sim, atualize a política de bucket.
- Escolha Salvar alterações.
- No console do Amazon S3, na sua lista de buckets, Escolha o bucket que é a origem da distribuição do CloudFront.
- Escolha a guia Permissões.
- Em Política de Bucket, confirme se você vê uma declaração semelhante à seguinte:
{{ "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*" }
Observação: Revise sua política de bucket para ver todas as declarações com “Efeito”: “Negar” que impede o acesso ao bucket a partir do CloudFront OAI. Modifique essas instruções para que o OAI do CloudFront possa acessar objetos no bucket.
Além disso, revise sua política de bucket para ver se há declarações com “Efeito”: “Permitir” que permite o acesso ao bucket de qualquer fonte que não seja o CloudFront OAI. Modifique essas declarações conforme exigido pelo seu caso de uso.
Informações relacionadas
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos