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 à Conta da AWS
permissão para listar o conteúdo do bucket, você poderá gravar 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:::DOC-EXAMPLE-BUCKET
" } ] }
exemplo – ACLs READ para cada objeto de um bucket
Se cada objeto em seu bucket tiver uma ACL READ que conceda acesso à Conta da AWS
, você poderá gravar 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:::DOC-EXAMPLE-BUCKET
/*" } ] }
Esse elemento de recurso de exemplo concede acesso a um objeto específico.
"Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/OBJECT-KEY
"
exemplo – ACL de gravação que concede permissões para gravar objetos em um bucket
Se o bucket tiver uma ACL de gravação que conceda à Conta da AWS
permissão para gravar objetos no bucket, você poderá gravar 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:::DOC-EXAMPLE-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 guia Permissions (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 guia Permissions (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 Save changes (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
DOC-EXAMPLE-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
DOC-EXAMPLE-BUCKET
--policyfile://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:::DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-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
DOC-EXAMPLE-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:::
DOC-EXAMPLE-BUCKET
/EXAMPLE-OBJECT-KEY
" -
Redefina a ACL de bucket para a ACL padrão.
aws s3api put-bucket-acl --bucket
DOC-EXAMPLE-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 log de acesso ao servidor
Para adotar a configuração Imposto pelo proprietário do bucket para desabilitar ACLs para um bucket de destino de log de acesso ao servidor, será necessário 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 (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
DOC-EXAMPLE-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:::DOC-EXAMPLE-BUCKET
/EXAMPLE-LOGGING-PREFIX
*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::SOURCE-BUCKET-NAME
" }, "StringEquals": { "aws:SourceAccount": "SOURCE-AWS-ACCOUNT-ID
" } } } ] } -
Redefina a ACL de bucket de destino para a ACL padrão.
aws s3api put-bucket-acl --bucket
DOC-EXAMPLE-BUCKET
--acl private -
Aplique a configuração Imposto pelo proprietário do bucket em Propriedade de objeto para o 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
DOC-EXAMPLE-BUCKET
--policy file://policy.json
policy.json: { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-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:::
DOC-EXAMPLE-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:::
DOC-EXAMPLE-BUCKET
/PREFIX/
*" -
Adote a configuração Imposto pelo proprietário do bucket em Propriedade de objeto.
Conceder acesso do Amazon ElastiCache for Redis ao bucket do Amazon S3
Você pode exportar o backup do ElastiCache for Redis para um bucket do S3, o que lhe dá 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" } ] }
Para migrar permissões de ACL de bucket ao ElastiCache for Redis 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
DOC-EXAMPLE-BUCKET
--policy file://policy.json
policy.json: "Id": "Policy15397346", "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:::DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ] } ] } -
Redefina a ACL de bucket para a ACL padrão:
aws s3api put-bucket-acl --bucket
DOC-EXAMPLE-BUCKET
--acl private -
Adote a configuração Imposto pelo proprietário do bucket em Propriedade de objeto.