Pré-requisitos para desabilitar ACLs - Amazon Simple Storage Service

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.

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 111122223333 para listar o conteúdo do bucket, você poderá escrever uma política de bucket que conceda as permissões s3:ListBuckets3: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 no bucket tiver uma ACL READ que conceda acesso à Conta da AWS 111122223333, você poderá escrever uma política de bucket que conceda as permissões 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 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 111122223333 para gravar objetos no bucket, você poderá escrever uma política de bucket que conceda a permissão 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
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Na lista Buckets (Buckets), escolha o nome do bucket.

  3. Escolha a aba Permissões.

  4. 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
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Na lista Buckets, escolha o nome do bucket que contém o objeto.

  3. Na lista Objects (Objetos), escolha o nome do objeto.

  4. Escolha a aba Permissões.

  5. 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
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Na lista Buckets (Buckets), escolha o nome do bucket.

  3. Na guia Permissions (Permissões), escolha Bucket policy (Política de bucket), Edit (Editar).

  4. 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.

  5. Escolha Salvar alterações.

  6. Atualize sua ACL de bucket para remover concessões de ACL para outros grupos ou Contas da AWS.

  7. 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

  1. 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 e READ 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.

  2. 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 e s3: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 --policy 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:::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.

  3. 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 --key EXAMPLE-OBJECT-KEY
  4. 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"
  5. Redefina a ACL de bucket para a ACL padrão.

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  6. 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.

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
  1. 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 --policy file://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" } } } ] }
  2. Redefina a ACL do bucket de destino para a ACL padrão.

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  3. 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
  1. 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/*"
  2. 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
  1. 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/*" ] } ] }
  2. Redefina a ACL de bucket para a ACL padrão:

    aws s3api put-bucket-acl --bucket DOC-EXAMPLE-BUCKET --acl private
  3. Adote a configuração Imposto pelo proprietário do bucket em Propriedade de objeto.