Restringir o acesso a uma origem de ponto de acesso multirregional do Amazon S3
É possível usar o controle de acesso à origem (OAC) para restringir o acesso a uma origem de ponto de acesso multirregional do Amazon S3. Os pontos de acesso multirregionais do S3 fornecem um endpoint global que roteia solicitações para o bucket do S3 mais próximo, com base na latência de rede.
nota
O OAC com Pontos de acesso multirregionais do S3 não é compatível com endpoints do MRAP respaldados por buckets em regiões que exigem ativação. As solicitações roteadas para um bucket em uma região que exige ativação falharão. Todos os buckets associados ao Ponto de acesso multirregional devem estar em regiões habilitadas por padrão.
Consulte informações sobre o uso do OAC com uma origem de bucket do Amazon S3 padrão em Restringir o acesso a uma origem do Amazon S3.
Pré-requisitos
Antes de criar e configurar o OAC, você deve ter uma distribuição do CloudFront com uma origem de ponto de acesso multirregional do Amazon S3. O nome de domínio de origem deve usar o formato de nome de host do ponto de acesso multirregional do S3:
multi-region-access-point-alias.accesspoint.s3-global.amazonaws.com
Consulte mais informações sobre como criar pontos de acesso multirregionais do S3, em Criação de pontos de acesso multirregionais no Guia do usuário do Amazon Simple Storage Service.
Conceder permissão ao CloudFront para acessar o ponto de acesso multirregional do S3
Atualize a política de ponto de acesso multirregional para permitir que a entidade principal de serviço do CloudFront (cloudfront.amazonaws.com) acesse o ponto de acesso multirregional. Use um elemento Condition na política para permitir que o CloudFront acesse o ponto de acesso multirregional somente quando a solicitação for em nome da distribuição do CloudFront que contém a origem.
Consulte mais informações sobre como adicionar ou modificar uma política de ponto de acesso multirregional em Exemplos de políticas de pontos de acesso multirregionais no Guia do usuário do Amazon Simple Storage Service.
exemplo Política de ponto de acesso multirregional para OAC do CloudFront
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontOACAccess", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3::111122223333:accesspoint/Multi-Region-Access-Point-Alias.mrap/object/*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront distribution ID" } } } ] }
Conceder permissão ao CloudFront para acessar buckets subjacentes do S3
Além da política de ponto de acesso multirregional, você também deve conceder permissão ao CloudFront para acessar cada um dos buckets subjacentes do S3 associados ao ponto de acesso multirregional. É possível fazer isso de duas formas:
Importante
Você deve adicionar essa política de bucket a cada bucket do S3 associado ao ponto de acesso multirregional. Se algum bucket não tiver a política, as solicitações do CloudFront roteadas para esse bucket serão negadas.
Opção 1: conceder acesso somente ao CloudFront
Adicione uma política de bucket a cada bucket do S3 para permitir que a entidade principal do serviço do CloudFront acesse o bucket. Use essa opção quando você também precisar permitir o acesso direto ao bucket de outras origens.
exemplo Política de bucket do S3 para um bucket subjacente
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontOACAccessViaMRAP", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-us-east-1/*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront distribution ID" } } } ] }
Opção 2: delegar acesso total ao bucket para o ponto de acesso multirregional
Conceda ao ponto de acesso multirregional acesso total a cada bucket subjacente. Com essa abordagem, todo acesso ao bucket é controlado pela política de ponto de acesso multirregional, o que simplifica o gerenciamento de acesso. Recomendamos essa opção para casos de uso que não exigem acesso direto ao bucket.
exemplo Política de bucket do S3 que delega acesso ao ponto de acesso multirregional
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateAccessToMRAP", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket-us-east-1", "arn:aws:s3:::amzn-s3-demo-bucket-us-east-1/*" ], "Condition": { "StringEquals": { "s3:DataAccessPointArn": "arn:aws:s3::111122223333:accesspoint/Multi-Region-Access-Point-Alias.mrap" } } } ] }
Consulte mais informações em Exemplos de políticas de pontos de acesso multirregionais no Guia do usuário do Amazon Simple Storage Service.
SSE-KMS
Se os objetos nos buckets subjacentes do S3 estiverem criptografados usando a criptografia do lado do servidor com o AWS KMS (SSE-KMS), você deve garantir que a distribuição do CloudFront tenha permissão para usar a chave do AWS KMS. Como os pontos de acesso multirregionais do S3 podem rotear solicitações para buckets em várias regiões, você deve adicionar uma declaração à política de chave do KMS em cada região onde um bucket subjacente use SSE-KMS. Para obter informações sobre como modificar uma política de chaves, consulte Alterar uma política de chaves no Guia do desenvolvedor do AWS Key Management Service.
exemplo Declaração de política de chaves do KMS
O exemplo a seguir mostra uma instrução de política de chave do KMS que permite que a distribuição do CloudFront com OAC acesse uma chave do KMS para SSE-KMS.
{ "Sid": "AllowCloudFrontServicePrincipalSSE-KMS", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudfront::111122223333:distribution/CloudFront distribution ID" } } }
Importante
Você deve adicionar essa declaração de política de chave à chave do KMS em todas as regiões onde um bucket subjacente do S3 use a criptografia SSE-KMS.
Criar o controle de acesso à origem
Para criar um controle de acesso à origem (OAC), você pode usar o Console de gerenciamento da AWS, o CloudFormation, a AWS CLI ou a API do CloudFront.
nota
Os gatilhos de solicitação de origem do Lambda@Edge são incompatíveis com origens que usam um OAC com assinatura SigV4a, independentemente de a origem ser acessada diretamente ou por meio de um grupo de origens.
Comportamento de assinatura
As opções de comportamento de assinatura para origens de ponto de acesso multirregional do S3 são as mesmas das origens de bucket padrão do Amazon S3. Consulte mais informações no tópico Configurações avançadas para controle de acesso à origem de Restringir o acesso a uma origem do Amazon S3.