As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Restringir o acesso ao conteúdo do Amazon S3
CloudFront fornece duas maneiras de enviar solicitações autenticadas para uma origem do Amazon S3: controle de acesso de origem (OAC) e identidade de acesso de origem (OAI). Recomendamos o uso do OAC porque ele é compatível com:
-
Todos os buckets do Amazon S3 em todas as Regiões da AWS; por exemplo, regiões opcionais lançadas após dezembro de 2022.
-
Criptografia do lado do servidor com o AWS KMS (SSE-KMS) do Amazon S3
-
Solicitações dinâmicas (
PUT
eDELETE
) para o Amazon S3
A identidade do acesso de origem (OAI) não funciona para cenários na lista anterior, ou exige outras soluções alternativas nesses casos. Os tópicos a seguir descrevem como usar o controle de acesso de origem (OAC) com uma origem do Amazon S3. Para obter informações sobre como migrar da identidade do acesso de origem (OAI) para o controle de acesso de origem (OAC), consulte Migrar da identidade do acesso de origem (OAI) para o controle de acesso à origem (OAC).
Observações
-
Ao usar o CloudFront OAC com origens de bucket do Amazon S3, você deve definir a propriedade de objeto do Amazon S3 como Bucket Owner Enforced, o padrão para novos buckets do Amazon S3. Se você precisar de ACLs, use a configuração preferida do proprietário do Bucket para manter o controle sobre os objetos enviados via CloudFront.
-
Se sua origem for um bucket do Amazon S3 configurado como um endpoint de site, você deverá configurá-lo CloudFront como uma origem personalizada. Isso significa que você não pode usar o OAC (nem a OAI). O OAC não oferece suporte ao redirecionamento de origem usando o Lambda @Edge.
Tópicos
Criar um controle de acesso à origem
Conclua as etapas descritas nos tópicos a seguir para configurar um novo controle de acesso de origem em CloudFront.
Tópicos
Pré-requisitos
Antes de criar e configurar o controle de acesso de origem (OAC), você deve ter uma CloudFront distribuição com uma origem de bucket do Amazon S3. Essa origem deve ser um bucket normal do S3, não um bucket configurado como endpoint de site. Para obter mais informações sobre como configurar uma CloudFront distribuição com uma origem de bucket do S3, consulteComeçando com uma CloudFront distribuição simples.
nota
Quando você usa o OAC para proteger a origem do seu bucket do S3, a comunicação entre o Amazon S3 CloudFront e o Amazon S3 é sempre por meio de HTTPS, independentemente de suas configurações específicas.
Conceder permissão ao controle de acesso à origem para acessar o bucket do S3
Antes de criar um controle de acesso de origem (OAC) ou configurá-lo em uma CloudFront distribuição, certifique-se de que o OAC tenha permissão para acessar a origem do bucket do S3. Faça isso depois de criar uma CloudFront distribuição, mas antes de adicionar o OAC à origem do S3 na configuração de distribuição.
Para dar permissão ao OAC para acessar o bucket do S3, use uma política de bucket do S3 para permitir que o CloudFront service principal (cloudfront.amazonaws.com
) acesse o bucket. Use um Condition
elemento na política para permitir o acesso CloudFront ao bucket somente quando a solicitação for em nome da CloudFront distribuição que contém a origem do S3.
Para obter informações sobre como adicionar ou modificar uma política de bucket, consulte Adicionar uma política de bucket usando o console do Amazon S3 no Guia do usuário do Amazon S3.
Veja a seguir exemplos de políticas de bucket do S3 que permitem que um CloudFront OAC acesse uma origem do S3.
exemplo Política de bucket do S3 que permite acesso somente de leitura a um OAC CloudFront
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::<Conta da AWS ID>
:distribution/<CloudFront distribution ID>
" } } } }
exemplo Política de bucket do S3 que permite acesso de leitura e gravação a um CloudFront OAC
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowCloudFrontServicePrincipalReadWrite", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::<Conta da AWS ID>
:distribution/<CloudFront distribution ID>
" } } } }
SSE-KMS
Se os objetos na origem do bucket do S3 forem criptografados usando criptografia do lado do servidor com o AWS Key Management Service (SSE-KMS), o OAC deverá ter permissão para usar a chave do AWS KMS. Para conceder permissão ao OAC para usar a chave do KMS, adicione uma instrução à política de chaves do 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.
O exemplo a seguir mostra uma declaração de política de chaves do KMS que permite ao OAC usar a chave do KMS.
exemplo Declaração de política de chaves KMS que permite que um CloudFront OAC acesse uma chave KMS para SSE-KMS
{ "Sid": "AllowCloudFrontServicePrincipalSSE-KMS", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
:root", "Service": "cloudfront.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::
<Conta da AWS ID>
<Conta da AWS ID>
:distribution/<CloudFront distribution ID>
" } } }
Criar um controle de acesso à origem
Para criar um controle de acesso de origem (OAC), você pode usar oAWS Management Console, AWS CloudFormationAWS CLI, the ou a CloudFront API.
Migrar da identidade do acesso de origem (OAI) para o controle de acesso à origem (OAC)
Para migrar de uma identidade do acesso de origem (OAI) herdada para um controle de acesso à origem (OAC), primeiro atualize a origem do bucket do S3 para permitir que a OAI e o OAC acessem o conteúdo do bucket. Isso garante que CloudFront nunca perca o acesso ao bucket durante a transição. Para permitir que a OAI e o OAC acessem um bucket do S3, atualize a política de bucket para incluir duas declarações, uma para cada tipo de entidade principal.
O exemplo de política de bucket do S3 a seguir permite que uma OAI e um OAC acessem uma origem do S3.
exemplo Política de bucket do S3 que permite acesso somente leitura a uma OAI e um OAC
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
<S3 bucket name>
/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::<Conta da AWS ID>
:distribution/<CloudFront distribution ID>
" } } }, { "Sid": "AllowLegacyOAIReadOnly", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Depois de atualizar a política de bucket da origem do S3 para permitir o acesso à OAI e ao OAC, você pode atualizar a configuração de distribuição para usar o OAC em vez da OAI. Para ter mais informações, consulte Criar um controle de acesso à origem.
Depois que a distribuição estiver totalmente implantada, você poderá remover a declaração na política de bucket que permite o acesso à OAI. Para ter mais informações, consulte Conceder permissão ao controle de acesso à origem para acessar o bucket do S3.
Configurações avançadas para controle de acesso à origem
O recurso de controle de acesso de CloudFront origem inclui configurações avançadas destinadas apenas a casos de uso específicos. Use as configurações recomendadas, a menos que você precise usar as configurações avançadas para uma necessidade específica.
O controle de acesso à origem contém uma configuração chamada Signing behavior (Comportamento de assinatura) (no console) ou SigningBehavior
(na API, na CLI e no AWS CloudFormation). Essa configuração fornece as seguintes opções:
- Always sign origin requests (recommended setting) [Sempre assinar solicitações de origem (configuração recomendada)]
-
Recomendamos usar essa configuração, chamada Sign requests (recommended) [Assinar solicitações (recomendado)] no console, ou
always
na API, na CLI e no AWS CloudFormation. Com essa configuração, CloudFront sempre assina todas as solicitações enviadas para a origem do bucket do S3. - Never sign origin requests (Nunca assinar solicitações de origem)
-
Essa configuração é chamada Do not sign requests (Não assinar solicitações) no console ou
never
na API, na CLI e no AWS CloudFormation. Use essa configuração para desativar o controle de acesso à origem para todas as origens em todas as distribuições que usam esse controle. Isso pode economizar tempo e esforço em comparação com a remoção individual de um controle de acesso à origem de todas as origens e distribuições que o usam. Com essa configuração, CloudFront não assina nenhuma solicitação enviada para a origem do bucket do S3.Atenção
Para usar essa configuração, a origem do bucket do S3 deve estar acessível ao público. Se você usar essa configuração com uma origem de bucket do S3 que não esteja acessível publicamente, CloudFront não poderá acessar a origem. A origem do bucket do S3 retorna erros CloudFront e os CloudFront transmite aos visualizadores.
- Não substituir o cabeçalho
Authorization
do visualizador (cliente) -
Essa configuração é chamada Do not override authorization header (Não substituir o cabeçalho de autorização) no console ou
no-override
na API, na CLI e no AWS CloudFormation. Use essa configuração quando quiser CloudFront assinar solicitações de origem somente quando a solicitação correspondente do visualizador não incluir umAuthorization
cabeçalho. Com essa configuração, CloudFront transmite oAuthorization
cabeçalho da solicitação do visualizador quando há uma, mas assina a solicitação de origem (adicionando seu próprioAuthorization
cabeçalho) quando a solicitação do visualizador não inclui umAuthorization
cabeçalho.Atenção
Para transmitir o cabeçalho
Authorization
da solicitação do visualizador, você deve adicionar o cabeçalhoAuthorization
a uma política de cache para todos os comportamentos de cache que usam origens de bucket do S3 associadas a esse controle de acesso à origem.
Usar uma identidade do acesso de origem (herdada, não recomendada)
CloudFront a identidade de acesso de origem (OAI) fornece funcionalidade semelhante ao controle de acesso de origem (OAC), mas não funciona em todos os cenários. É por isso que recomendamos usar o OAC em vez da OAI. O OAI não é compatível especificamente com:
-
Buckets do Amazon S3 em todas as Regiões da AWS, inclusive regiões opcionais.
-
Criptografia do lado do servidor com o AWS KMS (SSE-KMS) do Amazon S3
-
Solicitações dinâmicas (
PUT
,POST
ouDELETE
) para o Amazon S3 -
Novas Regiões da AWS lançadas após dezembro de 2022
Para obter informações sobre como migrar de OAI para OAC, consulte Migrar da identidade do acesso de origem (OAI) para o controle de acesso à origem (OAC).
Ao criar um OAI ou adicionar um a uma distribuição com o CloudFront console, você pode atualizar automaticamente a política de bucket do Amazon S3 para dar permissão ao OAI para acessar seu bucket. Você também pode optar por criar ou atualizar manualmente a política do bucket. Seja qual for o método usado, você ainda deverá revisar as permissões para se certificar de que:
-
Seu CloudFront OAI pode acessar arquivos no bucket em nome dos espectadores que os estão solicitando. CloudFront
-
Os espectadores não podem usar URLs do Amazon S3 para acessar seus arquivos fora do. CloudFront
Importante
Se você configurar CloudFront para aceitar e encaminhar todos os métodos HTTP CloudFront compatíveis, certifique-se de dar ao CloudFront OAI as permissões desejadas. Por exemplo, se você configurar CloudFront para aceitar e encaminhar solicitações que usam o DELETE
método, configure sua política de bucket para lidar com as DELETE
solicitações de forma adequada, para que os visualizadores possam excluir somente os arquivos que você deseja.
Usar políticas de bucket do Amazon S3
Você pode conceder a um CloudFront OAI acesso aos arquivos em um bucket do Amazon S3 criando ou atualizando a política do bucket das seguintes formas:
-
Usando a guia Permissions (Permissões) do bucket do Amazon S3 no console do Amazon S3
. -
Usando PutBucketPolicyna API do Amazon S3.
-
Usar o console do CloudFront
. Ao adicionar um OAI às suas configurações de origem no CloudFront console, você pode escolher Sim, atualizar a política do bucket para solicitar a atualização CloudFront da política do bucket em seu nome.
Se você atualizar a política de bucket manualmente, certifique-se de:
-
Especificar a OAI correta como
Principal
na política. -
Conceder à OAI as permissões necessárias para acessar objetos em nome dos visualizadores.
Para obter mais informações, consulte as seções a seguir.
Especificar uma OAI como Principal
em uma política de bucket
Para especificar uma OAI como Principal
em uma política de bucket do Amazon S3, use o nome do recurso da Amazon (ARN) da OAI, que inclui o respectivo ID. Por exemplo: .
"Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }
Encontre o ID do OAI no CloudFront console em Segurança, Acesso ao Origin, Identidades (legado). Como alternativa, use ListCloudFrontOriginAccessIdentitiesna CloudFront API.
Conceder permissões a uma OAI
Para conceder permissões à OAI para acessar objetos em seu bucket do Amazon S3, use ações na política que se relacionem a operações de API específicas do Amazon S3. Por exemplo, a ação s3:GetObject
possibilita que a OAI leia objetos no bucket. Para obter mais informações, consulte os exemplos na seção a seguir, ou consulte Ações do Amazon S3 no Guia do usuário do Amazon Simple Storage Service.
Exemplos de política de bucket do Amazon S3
Os exemplos a seguir mostram as políticas de bucket do Amazon S3 que permitem que a CloudFront OAI acesse um bucket do S3.
Encontre o ID do OAI no CloudFront console em Segurança, Acesso ao Origin, Identidades (legado). Como alternativa, use ListCloudFrontOriginAccessIdentitiesna CloudFront API.
exemplo Política de bucket do Amazon S3 que concede à OAI acesso de leitura
O exemplo a seguir permite que a OAI leia objetos no bucket especificado (s3:GetObject
).
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
exemplo Política de bucket do Amazon S3 que concede à OAI acesso de leitura e gravação
O exemplo a seguir permite que a OAI leia e grave objetos no bucket especificado (s3:GetObject
e s3:PutObject
). Isso permite que os visualizadores façam upload de arquivos para seu bucket do Amazon S3 por meio de. CloudFront
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
<origin access identity ID>
" }, "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::<S3 bucket name>
/*" } ] }
Uso de ACLs de objeto do Amazon S3 (não recomendado)
Importante
Recomendamos o uso de políticas de bucket do Amazon S3 para conceder a uma OAI acesso a um bucket do S3. Você pode usar listas de controle de acesso (ACLs) conforme descrito nesta seção, mas não recomendamos fazê-lo.
O Amazon S3 recomenda a configuração de S3 Object Ownership (Propriedade do objeto do S3) como bucket owner enforced (aplicado pelo proprietário do bucket), o que significa que as ACLs estão desabilitadas para o bucket e os objetos nele contidos. Ao aplicar essa configuração para Object Ownership (Propriedade de objeto), você deve usar políticas de bucket para conceder acesso à OAI (consulte a seção anterior).
Esta seção a seguir é apenas para casos de uso herdados que exigem ACLs.
Você pode conceder a um CloudFront OAI acesso aos arquivos em um bucket do Amazon S3 criando ou atualizando a ACL do arquivo das seguintes formas:
-
Usando a guia Permissions (Permissões) do objeto do Amazon S3 no console do Amazon S3
. -
Usando PutObjectAclna API do Amazon S3.
Ao conceder acesso a uma OAI usando uma ACL, é necessário especificar a OAI por meio de seu ID de usuário canônico do Amazon S3. No CloudFront console, você pode encontrar esse ID em Segurança, Acesso ao Origin, Identidades (legado). Se você estiver usando a CloudFront API, use o valor do S3CanonicalUserId
elemento que foi retornado quando você criou a OAI ou chame ListCloudFrontOriginAccessIdentitiesa CloudFront API.
As regiões mais recentes do Amazon S3 exigem o uso do Signature Version 4 para solicitações autenticadas. (Para ver as versões de assinatura com suporte em cada região do Amazon S3, consulte Endpoints e cotas do Amazon Simple Storage Service na Referência geral da AWS). Se estiver usando uma identidade de acesso de origem e seu bucket estiver em uma das regiões que exijam o Signature versão 4, observe o seguinte:
-
As solicitações
DELETE
,GET
,HEAD
,OPTIONS
ePATCH
são compatíveis sem qualificações. -
As solicitações
POST
não são compatíveis.