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
Para restringir o acesso a um bucket do S3, você cria um controle de acesso de origem (origin access control, OAC) ou cria uma identidade do acesso de origem (OAI) de legado. É uma prática recomendada criar um OAC em vez do OAI de legado.
Importante: Antes de começar, confirme que você configurou a origem do Amazon S3 da sua distribuição do CloudFront como um endpoint da API REST, como AWSDOC-EXAMPLE-BUCKET.s3.amazonaws.com. Essa resolução não se aplica às origens do Amazon S3 que você configurou 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?
Crie um OAC do CloudFront
Conclua as etapas a seguir:
- Abra o console do CloudFront.
- No painel de navegação, selecione Distribuições e, em seguida, escolha a distribuição que fornece conteúdo do bucket do S3 ao qual você deseja restringir o acesso.
- Selecione a guia Origens.
- Selecione a origem do Amazon 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 Criar novo OAC.
- Na caixa de diálogo, insira um nome para 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 ao bucket do S3, escolha Copiar política.
- Escolha Salvar alterações.
- Abra o console do Amazon S3.
- No painel de navegação, escolha Buckets de uso geral e selecione o bucket que é a origem da distribuição do CloudFront.
- Selecione a guia Permissões.
- Em Política de bucket, confirme se você vê uma instrução semelhante ao exemplo a seguir:
{
"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"
}
}
}
}
Observação: Substitua DOC-EXAMPLE-BUCKET pelo nome do seu bucket e arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE pelo Nome do recurso da Amazon (ARN) da sua distribuição do CloudFront. Para permitir que o OAC do CloudFront leia objetos do seu bucket, você deve adicionar a instrução anterior à sua política de bucket. Depois de restringir o acesso ao seu bucket, é possível integrar o AWS WAF para outra camada de segurança.
Criar um OAI de legado do CloudFront
Conclua as etapas a seguir:
- Abra o console do CloudFront.
- No painel de navegação, selecione Distribuições e, em seguida, escolha a distribuição que fornece conteúdo do bucket do S3 ao qual você deseja restringir o acesso.
- Selecione a guia Origens.
- Selecione a origem do Amazon S3 e, em seguida, escolha Editar.
- Para o Acesso de origem, escolha Identidades de acesso de legado.
- Na lista suspensa Identidade do acesso de origem, selecione o nome do OAI. Ou escolha Criar novo OAI.
- Na caixa de diálogo, insira um nome para seu novo OAI e escolha Criar.
- Em Política de bucket, selecione Sim, atualizar a política de bucket.
- Escolha Salvar alterações.
- Abra o console do Amazon S3.
- No painel de navegação, escolha Buckets de uso geral e selecione o bucket que é a origem da distribuição do CloudFront.
- Selecione a guia Permissões.
- Em Política de bucket, confirme se você vê uma instrução semelhante ao exemplo a seguir:
{
"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: Substitua arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX pelo seu ARN de distribuição do CloudFront e AWS****DOC-EXAMPLE-BUCKET pelo nome do seu bucket. Revise sua política de bucket para obter instruções com "Effect": "Deny" que bloqueiam o acesso ao bucket a partir do OAI do CloudFront. Altere a ação para Permitir para que o OAI do CloudFront possa acessar objetos no bucket. Além disso, revise sua política de bucket para obter instruções com **"Effect": **"Allow" que permitam acesso ao bucket de qualquer origem que não seja o OAI do CloudFront. Modifique essas instruções para seu caso de uso.
Informações relacionadas
Criar uma distribuição
Gerenciamento de identidade e acesso para o Amazon S3