Ir para o conteúdo

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

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:

  1. Abra o console do CloudFront.
  2. 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.
  3. Selecione a guia Origens.
  4. Selecione a origem do Amazon S3 e, em seguida, escolha Editar.
  5. Para o Acesso de origem, selecione as Configurações de controle de acesso de origem (recomendado).
  6. Para o controle de acesso de origem, selecione um OAC existente. Ou escolha Criar novo OAC.
  7. 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).
  8. Escolha Criar.
  9. Para acesso ao bucket do S3, escolha Copiar política.
  10. Escolha Salvar alterações.
  11. Abra o console do Amazon S3.
  12. No painel de navegação, escolha Buckets de uso geral e selecione o bucket que é a origem da distribuição do CloudFront.
  13. Selecione a guia Permissões.
  14. 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:

  1. Abra o console do CloudFront.
  2. 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.
  3. Selecione a guia Origens.
  4. Selecione a origem do Amazon S3 e, em seguida, escolha Editar.
  5. Para o Acesso de origem, escolha Identidades de acesso de legado.
  6. Na lista suspensa Identidade do acesso de origem, selecione o nome do OAI. Ou escolha Criar novo OAI.
  7. Na caixa de diálogo, insira um nome para seu novo OAI e escolha Criar.
  8. Em Política de bucket, selecione Sim, atualizar a política de bucket.
  9. Escolha Salvar alterações.
  10. Abra o console do Amazon S3.
  11. No painel de navegação, escolha Buckets de uso geral e selecione o bucket que é a origem da distribuição do CloudFront.
  12. Selecione a guia Permissões.
  13. 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