Pré-requisitos para desabilitar ACLs
Se a ACL de bucket conceder acesso fora de sua Conta da AWS, antes de desabilitar as ACLs, é ncessário migrar suas permissões de ACL de bucket para a política de bucket e redefinir a ACL de bucket para a ACL privada padrão. Se você não migrar essas ACLs de bucket, a solicitação para adotar a configuração Imposto pelo proprietário do bucket para desabilitar ACLs falhará e retornará o código de erro InvalidBucketAclWithObjectOwnership. Também recomendamos revisar suas permissões de ACL de objeto e migrá-las para a política de bucket. Para obter mais informações sobre outros pré-requisitos sugeridos, consulte Pré-requisitos para desabilitar ACLs.
Cada uma das ACLs de objeto e de bucket existentes tem um equivalente em uma política do IAM. Os exemplos de política de bucket a seguir mostram como as permissões READ
e WRITE
para ACLs de objeto e de bucket são mapeadas para permissões do IAM. Para obter mais informações sobre como cada ACL é convertida em permissões do IAM, consulte Mapeamento das permissões da ACL e das permissões da política de acesso.
Para revisar e migrar permissões de ACL para políticas de bucket, consulte os tópicos a seguir.
Tópicos
Exemplos de políticas de bucket
Esses exemplos de políticas de bucket mostram como migrar permissões de ACL de bucket e de objeto READ
e WRITE
para uma Conta da AWS de terceiros para uma política de bucket. As ACLs READ_ACP
e WRITE_ACP
são menos relevantes para políticas porque concedem permissões relacionadas a ACLs (s3:GetBucketAcl
, s3:GetObjectAcl
, s3:PutBucketAcl
e s3:PutObjectAcl
).
exemplo – ACL READ
para um bucket
Se o bucket tiver uma ACL READ
que conceda permissão à Conta da AWS
para listar o conteúdo do bucket, você poderá escrever uma política de bucket que conceda as permissões 111122223333
s3:ListBucket
, s3:ListBucketVersions
e s3:ListBucketMultipartUploads
para o bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to list the objects in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root" ] }, "Action": [ "s3:ListBucket", "s3:ListBucketVersions", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::" } ] }
amzn-s3-demo-bucket
exemplo – ACLs READ
para cada objeto de um bucket
Se cada objeto no bucket tiver uma ACL READ
que conceda acesso à Conta da AWS
, você poderá escrever uma política de bucket que conceda as permissões 111122223333
s3:GetObject
e s3:GetObjectVersion
a essa conta para cada objeto do bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Read permission for every object in a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root" ] }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::/*" } ] }
amzn-s3-demo-bucket
Esse elemento de recurso de exemplo concede acesso a um objeto específico.
"Resource": "arn:aws:s3:::
/
amzn-s3-demo-bucket
OBJECT-KEY
"
exemplo – ACL WRITE
que concede permissões para gravar objetos em um bucket
Se o bucket tiver uma ACL WRITE
que conceda permissão à Conta da AWS
para gravar objetos no bucket, você poderá escrever uma política de bucket que conceda a permissão 111122223333
s3:PutObject
para o bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to write objects to a bucket", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::/*" } ] }
amzn-s3-demo-bucket
Usar o console do S3 para revisar e migrar permissões de ACL
Como revisar as permissões de ACL de um bucket
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Na lista Buckets (Buckets), escolha o nome do bucket.
-
Escolha a aba Permissões.
-
Em Access control list (ACL) (Lista de controle de acesso [ACL]), revise suas permissões de ACL de bucket.
Como revisar as permissões de ACL de um objeto
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Na lista Buckets, escolha o nome do bucket que contém o objeto.
-
Na lista Objects (Objetos), escolha o nome do objeto.
-
Escolha a aba Permissões.
-
Em Access control list (ACL) (Lista de controle de acesso [ACL]), revise suas permissões de ACL de objeto.
Para migrar permissões de ACL e atualizar a ACL de bucket
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Na lista Buckets (Buckets), escolha o nome do bucket.
-
Na guia Permissions (Permissões), escolha Bucket policy (Política de bucket), Edit (Editar).
-
Na caixa Policy (Política), adicione ou atualize a política de bucket.
Para obter exemplos de políticas de bucket, consulte Exemplos de políticas de bucket e Demonstrações de exemplo.
-
Escolha Salvar alterações.
-
Atualize sua ACL de bucket para remover concessões de ACL para outros grupos ou Contas da AWS.
-
Adote a configuração Imposto pelo proprietário do bucket em Propriedade de objeto.
Usar a AWS CLI para revisar e migrar permissões de ACL
-
Para retornar a ACL para o bucket, use o comando get-bucket-acl
da AWS CLI: aws s3api get-bucket-acl --bucket
amzn-s3-demo-bucket
Por exemplo, essa ACL de bucket concede acesso
WRITE
eREAD
a uma conta de terceiros. Nessa ACL, a conta de terceiros é identificada pelo ID de usuário canônico. Para adotar a configuração Imposto pelo proprietário do bucket e desabilitar ACLs, é necessário migrar essas permissões à conta de terceiros para uma política de bucket.{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT
", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "THIRD-PARTY-EXAMPLE-ACCOUNT
", "ID": "72806de9d1ae8b171cca9e2494a8d1335dfced4ThirdPartyAccountCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "WRITE" } ] }Para ver outros exemplos de ACL, consulte Demonstrações de exemplo.
-
Migre suas permissões de ACL de bucket para uma política de bucket:
Este exemplo de política de bucket concede as permissões
s3:PutObject
es3:ListBucket
para uma conta de terceiros. Na política de bucket, a conta de terceiros é identificada pelo ID da Conta da AWS (
).111122223333
aws s3api put-bucket-policy --bucket
--policyamzn-s3-demo-bucket
file://policy.json
policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyForCrossAccountAllowUpload", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:root" ] }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }amzn-s3-demo-bucket
Para obter mais exemplos de políticas de bucket, consulte Exemplos de políticas de bucket e Demonstrações de exemplo.
-
Para retornar a ACL para um objeto específico, use o comando get-object-acl
da AWS CLI. aws s3api get-object-acl --bucket
amzn-s3-demo-bucket
--keyEXAMPLE-OBJECT-KEY
-
Se necessário, migre as permissões de ACL de objeto para a política de bucket.
Esse elemento de recurso de exemplo concede acesso a um objeto específico em uma política de bucket.
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/EXAMPLE-OBJECT-KEY
" -
Redefina a ACL de bucket para a ACL padrão.
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
Adote a configuração Imposto pelo proprietário do bucket em Propriedade de objeto.
Demonstrações de exemplo
Os exemplos a seguir mostram como migrar permissões de ACL para políticas de bucket para casos de uso específicos.
Tópicos
Conceder acesso ao grupo de entrega de logs do S3 para registro em log de acesso ao servidor
Para adotar a configuração Imposto pelo proprietário do bucket a fim de desabilitar ACLs para um bucket de destino de logs de acesso ao servidor (também conhecido como bucket-alvo), é necessário migrar permissões de ACL de bucket para o grupo de entrega de logs do S3 para a entidade principal de serviço do registro em log (logging.s3.amazonaws.com
) em uma política de bucket. Para obter mais informações sobre permissões de entrega de logs, consulte Permissões para entrega de logs.
Essa ACL de bucket concede acesso WRITE
e READ_ACP
ao grupo de entrega de logs do S3:
{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "Type": "CanonicalUser", "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "WRITE" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/s3/LogDelivery" }, "Permission": "READ_ACP" } ] }
Para migrar permissões de ACL de bucket para o grupo de entrega de log do S3 para a entidade principal do serviço de log em uma política de bucket
-
Adicione a política de bucket a seguir ao bucket de destino, substituindo os valores de exemplo.
aws s3api put-bucket-policy --bucket
amzn-s3-demo-bucket
--policyfile://policy.json
policy.json: { { "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::
/amzn-s3-demo-bucket
EXAMPLE-LOGGING-PREFIX
*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME
" }, "StringEquals": { "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID
" } } } ] } -
Redefina a ACL do bucket de destino para a ACL padrão.
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
Aplique a configuração Imposto pelo proprietário do bucket para a Propriedade de Objetos no bucket de destino.
Conceder acesso público de leitura aos objetos do bucket
Se as ACLs de objeto concederem acesso público de leitura a todos os objetos no bucket, será possível migrar essas permissões de ACL para uma política de bucket.
Essa ACL de objeto concede acesso público de leitura a um objeto de um bucket:
{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] }
Para migrar permissões públicas de ACL de leitura para uma política de bucket
-
Para conceder acesso público de leitura a todos os objetos do bucket, adicione a política de bucket a seguir, substituindo os valores de exemplo.
aws s3api put-bucket-policy --bucket
amzn-s3-demo-bucket
--policy file://policy.json
policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] }Para conceder acesso público a um objeto específico de uma política de bucket, use o seguinte formato para o elemento
Resource
."Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/OBJECT-KEY
"Para conceder acesso público a todos os objetos com um prefixo específico, use o seguinte formato para o elemento
Resource
."Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/PREFIX/
*" -
Adote a configuração Imposto pelo proprietário do bucket em Propriedade de objeto.
Conceder ao Amazon ElastiCache (Redis OSS) acesso ao bucket do S3
É possível exportar o backup do ElastiCache (Redis OSS) para um bucket do S3, o que concede a você acesso ao backup de fora do ElastiCache. Para exportar o backup para um bucket do S3, é necessário conceder permissões do ElastiCache para copiar um snapshot para o bucket. Se você concedeu permissões ao ElastiCache em uma ACL de bucket, será necessário migrar essas permissões para uma política de bucket antes de adotar a configuração Imposto pelo proprietário do bucket para desabilitar ACLs. Para obter mais informações, consulte Conceder acesso do ElastiCache ao bucket do Amazon S3 no Guia do usuário do Amazon ElastiCache.
O exemplo a seguir mostra as permissões de ACL de bucket que concedem permissões ao ElastiCache.
{ "Owner": { "DisplayName": "
DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
" }, "Grants": [ { "Grantee": { "DisplayName": "DOC-EXAMPLE-ACCOUNT-OWNER
", "ID": "852b113e7a2f25102679df27bb0ae12b3f85be6BucketOwnerCanonicalUserID
", "Type": "CanonicalUser" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "WRITE" }, { "Grantee": { "DisplayName": "aws-scs-s3-readonly", "ID": "540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353", "Type": "CanonicalUser" }, "Permission": "READ_ACP" } ] }
Como migrar permissões de ACL de bucket ao ElastiCache (Redis OSS) para uma política de bucket
-
Adicione a política de bucket a seguir ao bucket, substituindo os valores de exemplo.
aws s3api put-bucket-policy --bucket
amzn-s3-demo-bucket
--policy file://policy.json
policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt15399483", "Effect": "Allow", "Principal": { "Service": "Region
.elasticache-snapshot.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketAcl", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] } -
Redefina a ACL de bucket para a ACL padrão:
aws s3api put-bucket-acl --bucket
amzn-s3-demo-bucket
--acl private -
Adote a configuração Imposto pelo proprietário do bucket em Propriedade de objeto.