Exemplos de políticas de bucket
Com as políticas de bucket do Amazon S3, você pode proteger o acesso a objetos em seus buckets, para que somente usuários com as permissões apropriadas possam acessá-los. Você pode até mesmo impedir que usuários autenticados sem as permissões apropriadas acessem seus recursos do Amazon S3.
Esta seção apresenta exemplos de casos de uso típicos de políticas de bucket. Essas políticas de exemplo usam
como valor do recurso. Para testar essas políticas, substitua DOC-EXAMPLE-BUCKET
por suas informações (como o nome do seu bucket). user input placeholders
Para conceder ou negar permissões para um conjunto de objetos, você pode usar caracteres curinga (*
) em nomes de recursos da Amazon (ARNs) e outros valores. Por exemplo, você pode controlar o acesso a grupos de objetos que começam com um prefixo ou termine com uma determinada extensão, como .html
.
Para obter informações sobre políticas de bucket, consulte Uso de políticas de bucket. Para obter mais informações sobre a linguagem de políticas do AWS Identity and Access Management (IAM), consulte Políticas e permissões no Amazon S3.
nota
Ao testar as permissões usando o console do Amazon S3, você deve conceder as permissões adicionais que o console exige: s3:ListAllMyBuckets
, s3:GetBucketLocation
e s3:ListBucket
. Para acessar um exemplo de demonstração que concede permissões aos usuários e testa essas permissões usando o console, consulte Controlar o acesso a um bucket com políticas de usuário.
Tópicos
- Exigir criptografia
- Gerenciar buckets usando ACLs predefinidas
- Gerenciar o acesso a objetos com marcação de objetos
- Gerenciar o acesso a objetos usando chaves de condição globais
- Gerenciar o acesso com base em endereços IP específicos
- Gerenciar o acesso com base em solicitações HTTP ou HTTPS
- Gerenciar o acesso de usuários a pastas específicas
- Gerenciar o acesso para logs de acesso
- Gerenciar o acesso para uma OAI do Amazon CloudFront
- Gerenciar o acesso para a Lente de Armazenamento do Amazon S3
- Gerenciar permissões para o Inventário do S3, análises do S3 e relatórios do Inventário do S3
- Exigir MFA
Exigir criptografia
Exigir SSE-KMS para todos os objetos gravados em um bucket
O exemplo de política a seguir exige que cada objeto gravado no bucket seja criptografado com criptografia do lado do servidor usando chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Se o objeto não estiver criptografado com SSE-KMS, a solicitação será negada.
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMS
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }
Exigir SSE-KMS com uma AWS KMS key específica para todos os objetos gravados em um bucket
O exemplo de política a seguir impede que objetos sejam gravados no bucket quando não estão criptografados com SSE-KMS usando um ID de chave do KMS específico. Mesmo que os objetos sejam criptografados com SSE-KMS usando um cabeçalho por solicitação ou criptografia padrão de bucket, os objetos não serão gravados no bucket se não tiverem sido criptografados com a chave do KMS especificada. Substitua o ARN da chave do KMS usado neste exemplo pelo ARN da sua chave do KMS.
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMSWithSpecificKey
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-2
:111122223333
:key/01234567-89ab-cdef-0123-456789abcdef
" } } }] }
Gerenciar buckets usando ACLs predefinidas
Conceder permissões a várias contas para fazer upload de objetos ou definir ACLs de objetos para acesso público
O exemplo de política a seguir concede as permissões s3:PutObject
e s3:PutObjectAcl
a várias Contas da AWS e exige que as solicitações para essas operações incluam a lista de controle de acesso (ACL) public-read
predefinida. Para obter mais informações, consulte Ações do Amazon S3 e Exemplos de chave de condição do Amazon S3.
Atenção
A ACL predefinida public-read
permite que qualquer pessoa no mundo veja os objetos em seu bucket. Tenha cautela ao conceder acesso anônimo ao seu bucket do Amazon S3 ou ao desabilitar as configurações de bloqueio de acesso público. Quando você concede acesso anônimo, qualquer pessoa no mundo pode acessar seu bucket. Recomendamos nunca conceder acesso anônimo ao seu bucket do Amazon S3, a menos que seja especificamente necessário, como com a hospedagem de site estático. Se você quiser habilitar configurações de bloqueio de acesso público para hospedagem de sites estáticos, consulte Tutorial: Configurar um site estático no Amazon S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPublicReadCannedAcl", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root", "arn:aws:iam::444455556666
:root" ] }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }
Conceder permissões entre contas para fazer upload de objetos garantindo que o proprietário do bucket tenha controle total
O exemplo a seguir mostra como permitir que outra Conta da AWS faça upload de objetos no bucket e, ao mesmo tempo, garantir controle total sobre os objetos carregados. Essa política concede a uma Conta da AWS específica (
) a capacidade de carregar objetos se essa conta incluir a ACL pré-configurada 111122223333
bucket-owner-full-control
no carregamento. A condição StringEquals
na política especifica a chave de condição s3:x-amz-acl
para expressar o requisito de ACL predefinida. Para obter mais informações, consulte Exemplos de chave de condição do Amazon S3.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"
111122223333
"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }
Gerenciar o acesso a objetos com marcação de objetos
Permitir que um usuário leia somente os objetos que têm a chave e o valor de uma etiqueta específica
A política de permissões a seguir limita a capacidade de leitura dos usuários para que leiam somente objetos que tenham a chave e o valor da tag environment: production
. Essa política usa a chave de condição s3:ExistingObjectTag
para especificar a chave e o valor da etiqueta.
{ "Version":"2012-10-17", "Statement":[ { "Principal":{ "AWS":"arn:aws:iam::111122223333:role/JohnDoe" }, "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/environment":"production" } } } ] }
Restringir quais chaves de etiqueta de objeto os usuários podem adicionar
O exemplo de política a seguir concede ao usuário permissão para executar a ação s3:PutObjectTagging
, que permite que o usuário adicione etiquetas a um objeto existente. A condição usa a chave de condição s3:RequestObjectTagKeys
para especificar as chaves de etiqueta permitidas, como Owner
ou CreationDate
. Para obter mais informações, consulte Criar uma condição que testa vários valores de chave no Guia do usuário do IAM.
A política garante que cada chave de etiqueta especificada na solicitação seja uma chave de etiqueta autorizada. O qualificador ForAnyValue
na condição garante que pelo menos uma das chaves especificadas esteja presente na solicitação.
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:role/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
Exigir a chave e o valor de uma etiqueta específica ao permitir que os usuários adicionem etiquetas de objeto
O exemplo de política a seguir concede ao usuário permissão para executar a ação s3:PutObjectTagging
, que permite que o usuário adicione etiquetas a um objeto existente. A condição requer que o usuário inclua uma chave de etiqueta específica (como
) com o valor definido como Project
.X
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/Project
": "X
" } } } ] }
Permitir que um usuário adicione somente objetos com a chave e o valor de uma etiqueta específica
O exemplo de política a seguir concede ao usuário permissão para realizar a ação s3:PutObject
para que possa adicionar objetos a um bucket. No entanto, a instrução Condition
restringe as chaves e os valores de etiqueta permitidos nos objetos enviados. Neste exemplo, o usuário só pode adicionar objetos que tenham a chave de etiqueta específica (
) com o valor definido como Department
no bucket.Finance
{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/Department
": "Finance
" } } }] }
Gerenciar o acesso a objetos usando chaves de condição globais
As chaves de condição globais são chaves de condição com um prefixo aws
. Os Serviços da AWS podem oferecer suporte a chaves de condição globais ou chaves específicas do serviço que incluem seu prefixo de serviço. É possível usar o elemento Condition
de uma política JSON para comparar chaves em uma solicitação com os valores de chave especificados em sua política.
Restringir o acesso somente às entregas de logs de acesso ao servidor do Amazon S3
No exemplo de política de bucket a seguir, a chave de condição global aws:SourceArn é usada para comparar o nome do recurso da Amazon (ARN), fazendo uma solicitação de serviço a serviço com o ARN especificado na política. A chave de condição global aws:SourceArn
é usada para impedir que o serviço Amazon S3 seja usado como um representante confuso durante transações entre os serviços. Somente o serviço Amazon S3 tem permissão para adicionar objetos ao bucket do Amazon S3.
Este exemplo de política de bucket concede permissões de s3:PutObject
somente à entidade principal do serviço de registro em log (logging.s3.amazonaws.com
).
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowPutObjectS3ServerAccessLogsPolicy
", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs
/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111111111111
" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET
" } } }, { "Sid": "RestrictToS3ServerAccessLogs
", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs
/*", "Condition": { "ForAllValues:StringNotEquals": { "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com" } } } ] }
Permitir o acesso somente à sua organização
Se você quiser exigir que todas as entidades principais do IAM que acessam um recurso sejam de uma Conta da AWS em sua organização (incluindo a conta de gerenciamento do AWS Organizations), poderá usar a chave de condição global aws:PrincipalOrgID
.
Para conceder ou restringir esse tipo de acesso, defina a condição aws:PrincipalOrgID
e defina o valor como o ID da sua organização na política de bucket. O ID da organização é usado para controlar o acesso ao bucket. Quando você usa a condição aws:PrincipalOrgID
, as permissões da política de bucket também são aplicadas a todas as novas contas adicionadas à organização.
Aqui está um exemplo de política de bucket baseada em recursos que você pode usar para conceder a entidades principais do IAM específicas em sua organização acesso direto ao bucket. Ao adicionar a chave de condição global aws:PrincipalOrgID
à sua política de bucket, agora é necessário que a conta da entidade principal esteja em sua organização para obter acesso ao recurso. Mesmo que você acidentalmente especifique uma conta incorreta ao conceder acesso, a chave de condição global aws:PrincipalOrgID atuará como uma proteção adicional. Quando uma chave global é usada em uma política, ela impede que todas as entidades principais fora da organização especificada acessem o bucket do S3. Somente entidades principais de contas na organização listada podem obter acesso ao recurso.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowGetObject", "Principal": { "AWS": "*" }, "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["o-aa111bb222
"] } } }] }
Gerenciar o acesso com base em endereços IP específicos
Restringir o acesso a endereços IP específicos
O exemplo a seguir impede que todos os usuários executem operações do Amazon S3 em objetos nos buckets especificados, a menos que a solicitação tenha origem no intervalo de endereços IP especificado.
A instrução Condition
dessa política identifica
como o intervalo de endereços IP IPv4 (Internet Protocol versão 4) permitidos. 192.0.2.0/24
O bloco Condition
usa a condição NotIpAddress
e a chave de condição aws:SourceIp
, que é uma chave de condição que abrange toda a AWS. A chave de condição aws:SourceIp
só pode ser usada para intervalos de endereços IP públicos. Para obter mais informações sobre essas chaves de condição, consulte Exemplos de chave de condição do Amazon S3. Os valores IPv4 aws:SourceIp
usam a notação CIDR padrão. Para obter mais informações, consulte Referência de elementos de política JSON do IAM no Guia do usuário do IAM.
Atenção
Antes de usar essa política, substitua o intervalo de endereços IP
desse exemplo por um valor apropriado para o seu caso de uso. Caso contrário, você perderá a capacidade de acessar seu bucket.192.0.2.0/24
{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "IPAllow", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": { "NotIpAddress": { "aws:SourceIp": "192.0.2.0/24
" } } } ] }
Permitir endereços IPv4 e IPv6
Ao começar a usar os endereços IPv6, recomendamos que você atualize todas as políticas da sua organização com os intervalos de endereços IPv6 além dos intervalos de IPv4 existentes. Isso ajudará a garantir que as políticas continuem funcionando à medida que você faz a transição para IPv6.
O exemplo da política de bucket a seguir mostra como misturar intervalos de endereços IPv4 e IPv6 para cobrir todos os endereços IP válidos de sua organização. A política de exemplo permite acesso aos endereços IP
e 192.0.2.1
e nega acesso aos endereços 2001:DB8:1234:5678::1
e 203.0.113.1
.2001:DB8:1234:5678:ABCD::1
A chave de condição aws:SourceIp
só pode ser usada para intervalos de endereços IP públicos. Os valores de IPv6 para aws:SourceIp
devem estar em formato CIDR padrão. Para IPv6, oferecemos suporte ao uso de ::
para representar um intervalo de IPv6 (por exemplo 2001:DB8:1234:5678::/64
). Para obter mais informações, consulte Operadores de condição de endereço IP no Guia do usuário do IAM.
Atenção
Substitua os intervalos de endereços IP neste exemplo por valores apropriados para o seu caso de uso antes de usar esta política. Caso contrário, você pode perder a capacidade de acessar seu bucket.
{ "Id": "PolicyId2", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIPmix", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24
", "2001:DB8:1234:5678::/64
" ] }, "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/24
", "2001:DB8:1234:5678:ABCD::/80
" ] } } } ] }
Gerenciar o acesso com base em solicitações HTTP ou HTTPS
Restringir o acesso somente a solicitações HTTPS
Se você quiser evitar que possíveis invasores manipulem o tráfego de rede, poderá usar HTTPS (TLS) para permitir somente conexões criptografadas e, ao mesmo tempo, restringir o acesso de solicitações HTTP ao seu bucket. Para determinar se a solicitação é HTTP ou HTTPS, use a chave de condição global aws:SecureTransport em sua política de bucket do S3. A chave de condição aws:SecureTransport
verifica se uma solicitação foi enviada usando HTTP.
Se uma solicitação retornar true
, isso significa que ela foi enviada por HTTPS. Se a solicitação retornar false
, isso significa que ela foi enviada por HTTP. Depois, você pode permitir ou negar acesso ao bucket com base no esquema de solicitação desejado.
No exemplo a seguir, a política de bucket nega explicitamente as solicitações HTTP.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" }] }
Restringir o acesso a um indicador HTTP específico
Suponha que você tenha um site com nome de domínio
ou www.example.com
com links para fotos e vídeos armazenados em seu bucket chamado example.com
. Por padrão, todos os recursos do Amazon S3 são privados e, portanto, somente a Conta da AWS que criou os recursos pode acessá-los. DOC-EXAMPLE-BUCKET
Para permitir acesso de leitura a esses objetos em seu site, você pode adicionar uma política de bucket que conceda a permissão s3:GetObject
com uma condição de que a solicitação GET
deve se originar de páginas específicas da Web. A política a seguir restringe as solicitações usando a condição StringLike
com a chave de condição aws:Referer
.
{ "Version":"2012-10-17", "Id":"HTTP referer policy example", "Statement":[ { "Sid":"Allow only GET requests originating from www.example.com and example.com.", "Effect":"Allow", "Principal":"*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":"arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*
","http://example.com/*
"]} } } ] }
Certifique-se de que os navegadores que você usa incluam o cabeçalho HTTP referer
na solicitação.
Atenção
Recomendamos cuidado ao usar a chave de condição aws:Referer
. É perigoso incluir um valor de cabeçalho do indicador HTTP conhecido publicamente. Partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor de aws:Referer
que escolherem. Assim sendo, não use aws:Referer
para impedir que partes não autorizadas façam solicitações diretas à AWS.
A chave de condição aws:Referer
é oferecida apenas para permitir que os clientes protejam o conteúdo digital, como o conteúdo armazenado no Simple Storage Service (Amazon S3), evitando que seja referenciado em sites de terceiros não autorizados. Para obter mais informações, consulteaws:Referer no Guia do usuário do IAM.
Gerenciar o acesso de usuários a pastas específicas
Conceder acesso a pastas específicas para os usuários
Suponha que você esteja tentando conceder a uma pasta específica para os usuários. Se o usuário do IAM e o bucket do S3 pertencerem à mesma Conta da AWS, você poderá usar uma política do IAM para conceder acesso a uma pasta de bucket específica para os usuários. Com essa abordagem, você não precisa atualizar sua política de bucket para conceder acesso. Você pode adicionar a política do IAM a um perfil do IAM para o qual vários usuários podem mudar.
Se a identidade do IAM e o bucket do S3 pertencerem a Contas da AWS diferentes, você deverá conceder acesso entre contas tanto na política do IAM quanto na política de bucket. Para obter mais informações sobre como conceder acesso entre contas, consulte Proprietário do bucket concedendo permissões de bucket entre contas.
O exemplo de política de bucket a seguir concede a
acesso total ao console somente na pasta dele (JohnDoe
home/
). Ao criar uma pasta JohnDoe
/home
e conceder as permissões apropriadas aos seus usuários, você pode fazer com que vários usuários compartilhem um único bucket. Essa política consiste em três instruções Allow
:
-
: permite que o usuário (AllowRootAndHomeListingOfCompanyBucket
) liste objetos no nível raiz do bucketJohnDoe
e na pastaDOC-EXAMPLE-BUCKET
home
. Essa instrução também permite que o usuário pesquise o prefixohome/
usando o console. -
: permite que o usuário (AllowListingOfUserFolder
) liste todos os objetos na pastaJohnDoe
home/
e em quaisquer subpastas.JohnDoe
/ -
: permite que o usuário execute todas as ações do Amazon S3 ao conceder as permissõesAllowAllS3ActionsInUserFolder
Read
,Write
eDelete
. As permissões são limitadas à pasta inicial do proprietário do bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowRootAndHomeListingOfCompanyBucket
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET
"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/JohnDoe
"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET
"], "Condition": { "StringLike": { "s3:prefix": ["home/JohnDoe
/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder
", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET
/home/JohnDoe
/*"] } ] }
Gerenciar o acesso para logs de acesso
Conceder acesso ao Application Load Balancer para habilitar logs de acesso
Ao habilitar os logs de acesso para o Application Load Balancer, você deve especificar o nome do bucket do S3 em que o balanceador de carga armazenará os logs. O bucket deve ter uma política anexada que conceda ao Elastic Load Balancing permissão para gravar no bucket.
No exemplo a seguir, a política de bucket concede ao Elastic Load Balancing (ELB) permissão para gravar os logs de acesso no bucket:
{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::
elb-account-id
:root" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/prefix
/AWSLogs/111122223333
/*" } ] }
nota
Substitua
pelo ID da Conta da AWS do Elastic Load Balancing para sua Região da AWS. Para ver a lista de regiões do Elastic Load Balancing, consulte Anexar uma política ao seu bucket do S3 no Guia do usuário do Elastic Load Balancing.elb-account-id
Se sua Região da AWS não aparecer na lista de regiões compatíveis do Elastic Load Balancing, use a política a seguir, que concede permissões ao serviço de entrega de logs especificado.
{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/prefix
/AWSLogs/111122223333
/*" } ] }
Depois, configure os logs de acesso do Elastic Load Balancing habilitando-os. Você pode verificar as permissões de bucket criando um arquivo de teste.
Gerenciar o acesso para uma OAI do Amazon CloudFront
Conceder permissão para uma OAI do Amazon CloudFront
O exemplo de política de bucket a seguir concede uma permissão de identidade do acesso de origem (OAI) do CloudFront para obter (ler) todos os objetos em seu bucket do S3. Você pode usar uma OAI do CloudFront para permitir que os usuários acessem objetos em seu bucket por meio do CloudFront, mas não diretamente pelo Amazon S3. Para obter mais informações, consulte Restringir acesso ao conteúdo do Amazon S3 usando uma identidade do acesso de origem no Guia do desenvolvedor do Amazon CloudFront.
A política a seguir usa o ID da OAI como Principal
da política. Para obter mais informações sobre como usar políticas de bucket do S3 para conceder acesso a uma OAI do CloudFront, consulte Migrar da identidade do acesso de origem (OAI) para o controle de acesso à origem (OAC) no Guia do desenvolvedor do Amazon CloudFront.
Para usar este exemplo:
-
Substitua
pelo ID da OAI. Para localizar o ID da OAI, consulte a página Origin Access IdentityEH1HDMB1FH2TC
(Identidade do acesso de origem) no console do CloudFront ou use ListCloudFrontOriginAccessIdentities na API do CloudFront. -
Substitua
pelo nome do seu bucket.DOC-EXAMPLE-BUCKET
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
EH1HDMB1FH2TC
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" } ] }
Gerenciar o acesso para a Lente de Armazenamento do Amazon S3
Conceder permissões para a Lente de Armazenamento do Amazon S3
A Lente de Armazenamento do S3 agrega suas métricas e exibe as informações na seção Account snapshot (Snapshot da conta) na página Buckets do console do Amazon S3. A Lente de Armazenamento do S3 também oferece um painel interativo para visualizar insights e tendências, sinalizar discrepâncias e receber recomendações para otimizar os custos de armazenamento e aplicar as práticas recomendadas de proteção de dados. O painel tem opções de detalhamento para gerar insights por organização, conta, bucket, objeto ou prefixo. Você também pode enviar um arquivo exportado em formato CSV ou Parquet das métricas uma vez por dia para um bucket do S3.
A Lente de Armazenamento do S3 pode exportar as métricas de uso de armazenamento agregadas em um bucket do Amazon S3 para análise posterior. O bucket em que o S3 Storage Lens coloca as exportações de métricas dele é conhecido como bucket de destino. Ao configurar a exportação de métricas do S3 Storage Lens, você deve ter uma política para o bucket de destino. Para obter mais informações, consulte Avaliação de sua atividade de armazenamento e uso com o Amazon S3 Storage Lens.
O exemplo de política de bucket a seguir concede ao Amazon S3 permissão para gravar objetos (solicitações PUT
) em um bucket de destino. Você usa uma política de bucket como essa no bucket de destino ao configurar uma exportação de métricas do S3 Storage Lens.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3StorageLensExamplePolicy", "Effect": "Allow", "Principal": { "Service": "storage-lens.s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
destination-bucket
/destination-prefix
/StorageLens/111122223333
/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "111122223333
", "aws:SourceArn": "arn:aws:s3:region-code
:111122223333
:storage-lens/storage-lens-dashboard-configuration-id
" } } } ] }
Ao configurar uma exportação de métricas da organização da Lente de Armazenamento do S3, use a modificação a seguir na instrução Resource
da política de bucket anterior.
"Resource": "arn:aws:s3:::
destination-bucket
/destination-prefix
/StorageLens/your-organization-id
/*",
Gerenciar permissões para o Inventário do S3, análises do S3 e relatórios do Inventário do S3
Conceder permissões para o Inventário do S3 e análises do S3
O Inventário do S3 cria listas dos objetos em um bucket do, e a exportação da análise da classe de armazenamento do S3 cria arquivos de saída dos dados usados na análise. O bucket para o qual o inventário lista objetos é chamado de bucket de origem. O bucket onde o arquivo de inventário ou arquivo de exportação da análise é gravado é chamado de bucket de destino. Ao configurar a exportação de um inventário ou uma análise, você deve criar uma política de bucket para o bucket de destino. Para obter mais informações, consulte Inventário do Amazon S3 e Análise do Amazon S3 – Análise de classe de armazenamento.
O exemplo da política de bucket a seguir concede permissão ao Amazon S3 para gravar objetos (solicitações PUT
) da conta do bucket de origem para o bucket de destino. Use uma política de bucket como essa no bucket de destino ao configurar o Inventário do S3 e a exportação da análise do S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InventoryAndAnalyticsExamplePolicy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-DESTINATION-BUCKET
/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
" }, "StringEquals": { "aws:SourceAccount": "111122223333
", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
Restringir o acesso a um relatório do Inventário do S3
Inventário do Amazon S3 cria listas dos objetos em um bucket do S3 e dos metadados de cada objeto. Com s3:PutInventoryConfiguration
, o usuário tem permissão para criar um relatório de inventário que inclui todos os campos de metadados de objetos que estão disponíveis e especificar o bucket de destino para armazenar o inventário. Um usuário com acesso de leitura aos objetos no bucket de destino pode acessar todos os campos de metadados do objeto que estão disponíveis no relatório de inventário. Para obter mais informações sobre os campos de metadados que estão disponíveis no S3 Inventory, consulte Lista do Amazon S3 Inventory.
Para impedir que um usuário configure um relatório do S3 Inventory de todos os metadados de objetos disponíveis, remova a permissão s3:PutInventoryConfiguration
do usuário.
Para impedir que um usuário acesse seu relatório do Inventário do S3 em um bucket de destino, adicione uma política de bucket como o exemplo a seguir no bucket de destino. Esse exemplo de política de bucket impede que todas as entidades principais, exceto o usuário
, acessem o relatório de inventário Ana
no bucket de destino DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY
.DOC-EXAMPLE-DESTINATION-BUCKET
{ "Id": "GetObjectPolicy", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowListBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-DESTINATION-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET
/*" ], "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/Ana
" ] } }, { "Sid": "AllowACertainUserToReadObject", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY
/*", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/Ana
" ] } }, { "Sid": "DenyAllTheOtherUsersToReadObject", "Action": [ "s3:GetObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY
/*", "Principal": { "AWS": "*" }, "Condition": { "ArnNotEquals": { "aws:PrincipalArn": "arn:aws:iam::111122223333
:user/Ana
" } } } ] }
Exigir MFA
O Amazon S3 oferece suporte a acesso à API protegido por MFA, um recurso que pode impor a autenticação multifator para acessar os recursos do Amazon S3. A autenticação multifator fornece um nível extra de segurança que pode ser aplicado a seu ambiente da AWS. MFA é um recurso de segurança que exige que os usuários comprovem a posse física de um dispositivo MFA fornecendo um código válido de MFA. Para obter mais informações, consulte Autenticação multifator da AWS
Para impor o requisito de MFA, use a chave de condição aws:MultiFactorAuthAge
em uma política de bucket. Os usuários do IAM podem acessar os recursos do Amazon S3 usando credenciais temporárias emitidas pelo AWS Security Token Service (AWS STS). Forneça o código da MFA no momento da solicitação do AWS STS.
Quando o Amazon S3 recebe uma solicitação com autenticação multifator, a chave de condição aws:MultiFactorAuthAge
fornece um valor numérico que indica há quanto tempo (em segundos) a credencial temporária foi criada. Se a credencial temporária fornecida na solicitação não foi criada usando um dispositivo MFA, esse valor de chave será nulo (ausente). Em uma política de bucket, você pode adicionar uma condição para verificar esse valor, conforme mostrado no exemplo a seguir.
O exemplo de política negará qualquer operação do Amazon S3 na pasta
do bucket /taxdocuments
se a solicitação não for autenticada usando MFA. Para saber mais sobre MFA, consulte Uso da autenticação multifator (MFA) na AWS no Guia do usuário do IAM.DOC-EXAMPLE-BUCKET
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }
A condição Null
no bloco Condition
será avaliada como true
se o valor da chave de condição aws:MultiFactorAuthAge
for nulo, o que indica que as credenciais de segurança temporárias da solicitação foram criadas sem um dispositivo de MFA.
A política de bucket a seguir é uma extensão da política de bucket anterior. A política inclui duas declarações de política. Uma instrução concede a permissão s3:GetObject
em um bucket (
) a todos. Outra instrução restringe ainda mais o acesso à pasta DOC-EXAMPLE-BUCKET
no bucket ao exigir MFA. DOC-EXAMPLE-BUCKET
/taxdocuments
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" } ] }
Opcionalmente, você pode usar uma condição numérica para limitar a validade da chave aws:MultiFactorAuthAge
. A duração que você especifica com a chave aws:MultiFactorAuthAge
não depende do ciclo de vida da credencial de segurança temporária usada para autenticar a solicitação.
Por exemplo, a seguinte política de bucket, além de exigir autenticação MFA, também verifica há quanto tempo a sessão temporária foi criada. A política negará qualquer operação se o valor da chave aws:MultiFactorAuthAge
indicar que a sessão temporária foi criada há mais de uma hora (3.600 segundos).
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/taxdocuments
/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/taxdocuments
/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" } ] }