Como uso minha distribuição do CloudFront para restringir o acesso a um bucket do Amazon S3?

4 minuto de leitura
0

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

  1. Abra o console do CloudFront.
  2. Na lista de distribuições, escolha a distribuição que serve conteúdo do bucket do S3 ao qual você deseja restringir o acesso.
  3. Escolha a guia Origens.
  4. Selecione a origem do S3 e, em seguida, escolha Editar.
  5. Para o Acesso Origem, selecione as configurações de controle de acesso de Origem (recomendado).
  6. Para o controle de acesso Origem, selecione um OAC existente ou escolha a configuração Criar controle.
  7. 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.
  8. 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.
  9. Selecione Ir para as permissões do bucket do S3 para levá-lo ao console do bucket do S3.
  10. Selecione Salvar alterações.
  11. No console do Amazon S3, na sua lista de buckets, escolha o bucket que é a origem da distribuição do CloudFront.
  12. Escolha a guia Permissões.
  13. 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

  1. Abra o console do CloudFront.
  2. Na lista de distribuições, escolha a distribuição que serve conteúdo do bucket do S3 ao qual você deseja restringir o acesso.
  3. Escolha a guia Origens.
  4. Selecione a origem do S3 e, em seguida, escolha Editar.
  5. Para o Acesso de Origem, selecione Identidades de acesso legadas.
  6. Na lista suspensa de identidade de acesso à Origem, selecione o nome da identidade de acesso de origem ou escolha Criar novo OAI.
  7. Na caixa de diálogo, nomeie sua nova identidade de acesso de origem e escolha Criar.
  8. Em Política de Bucket, selecione Sim, atualize a política de bucket.
  9. Escolha Salvar alterações.
  10. No console do Amazon S3, na sua lista de buckets, Escolha o bucket que é a origem da distribuição do CloudFront.
  11. Escolha a guia Permissões.
  12. 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

Criando uma distribuição

Gerenciamento de identidade e acesso no Amazon S3

AWS OFICIAL
AWS OFICIALAtualizada há um ano