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 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 que é hospedado no Amazon S3?
Opção 1 (melhores práticas): Criar um OAC do CloudFront
Para criar um controle de acesso de origem (OAC) do CloudFront, conclua as seguintes etapas:
- 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 as Configurações de controle de acesso de origem (recomendado).
- Para o Controle de acesso de 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).
- Escolha Criar.
- Para Acesso do bucket do S3, escolha Copiar política e, em seguida, selecione Salvar para aplicar a política do bucket no bucket do S3.
- Escolha Ir para as permissões do bucket do S3 para levá-lo ao console do bucket do S3.
- Escolha Salvar alterações.
- No Console do Amazon S3, na sua lista de buckets, selecione 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"
}
}
}
}
Permitir que o CloudFront OAC leia objetos do seu bucket, você deve adicionar a declaração anterior.
Observação: depois de restringir o acesso ao seu bucket, você pode integrar o AWS WAF para outra camada de segurança.
Opção 2: Criar um OAI legado do CloudFront
Para criar uma identidade do acesso de origem (OAI) legada do CloudFront, conclua as seguintes etapas:
- 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, escolha Identidades de acesso legadas.
- Na lista suspensa Identidade de acesso de 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, então, 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 para seu caso de uso.
Informações relacionadas
Criando uma distribuição
Gerenciamento de identidade e acesso no Amazon S3