Alterar o proprietário da réplica - Amazon Simple Storage Service

Alterar o proprietário da réplica

Na replicação, por padrão o proprietário do objeto de origem também é proprietário da réplica. No entanto, quando os buckets de origem e de destino pertencem a Contas da AWS diferentes, você pode querer alterar a propriedade da réplica. Por exemplo, você pode querer alterar a propriedade para restringir o acesso a replicas de objetos. Na configuração de replicação, é possível adicionar configurações opcionais para alterar a propriedade da réplica para a Conta da AWS que possui os buckets de destino.

Para alterar o proprietário da réplica, faça o seguinte:

  • Adicione a opção de substituição do proprietário à configuração da replicação para instruir o Amazon S3 a alterar a propriedade da réplica.

  • Conceda ao Amazon S3 a permissão s3:ObjectOwnerOverrideToBucketOwner para alterar a propriedade da réplica.

  • Adicione a permissão s3:ObjectOwnerOverrideToBucketOwner na política do bucket de destino para permitir a alteração da propriedade da réplica. A permissão s3:ObjectOwnerOverrideToBucketOwner autoriza que o proprietário do bucket de destino aceite a propriedade das réplicas de objetos.

Para ter mais informações, consulte Considerações sobre a opção de substituição da propriedade e Adicionar a opção de substituição do proprietário à configuração da replicação. Para ver um exemplo funcional com instruções detalhadas, consulte Como alterar o proprietário da réplica.

Importante

Em vez de usar a opção de substituição do proprietário do bucket, é possível usar a configuração aplicada pelo proprietário do bucket em Propriedade de objeto. Quando você usa a replicação e os buckets de origem e de destino pertencem a Contas da AWS diferentes, o proprietário do bucket de destino pode usar a configuração aplicada pelo proprietário do bucket em Propriedade de objetos para alterar a propriedade da réplica para a Conta da AWS que possui o bucket de destino. Essa configuração desabilita listas de controle de acesso (ACLs) de objetos.

A configuração aplicada pelo proprietário do bucket imita o comportamento de substituição do proprietário existente sem a necessidade da permissão s3:ObjectOwnerOverrideToBucketOwner. Todos os objetos que são replicados para o bucket de destino com a configuração aplicada pelo proprietário do bucket pertencem ao proprietário do bucket de destino. Para obter informações sobre o Object Ownership, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.

Considerações sobre a opção de substituição da propriedade

Ao configurar a opção de substituição da propriedade, aplicam-se as seguintes considerações:

  • Por padrão, o proprietário do objeto de origem também possui a réplica. O Amazon S3 replica a versão do objeto e a ACL associada a ela.

    Se você adicionar a opção de substituição do proprietário à configuração de replicação, o Amazon S3 replicará somente a versão do objeto, não a ACL. Além disso, o Amazon S3 não replica as alterações subsequentes na ACL do objeto de origem. O Amazon S3 define a ACL na réplica que concede controle total ao proprietário do bucket de destino.

  • Ao atualizar uma configuração de replicação para habilitar ou desabilitar a substituição do proprietário, ocorrerá o seguinte comportamento:

    • Se você adicionar a opção de substituição do proprietário à configuração da replicação:

      Quando o Amazon S3 replica uma versão do objeto, ele descarta a ACL associada ao objeto de origem. Em vez disso, o Amazon S3 define a ACL na réplica, dando o controle total ao proprietário do bucket de destino. O Amazon S3 não replica as alterações subsequentes na ACL do objeto de origem. No entanto, essa alteração na ACL não se aplica às versões de objeto replicadas antes de você definir a opção de substituição do proprietário. As atualizações da ACL nos objetos de origem replicados antes da substituição do proprietário foram definidas para continuarem a ser replicadas (porque o objeto e suas réplicas continuam a ter o mesmo proprietário).

    • Se você remover a opção de substituição do proprietário da configuração da replicação:

      O Amazon S3 replica novos objetos que aparecem no bucket de origem e as ACLs associadas aos buckets de destino. Para objetos replicados antes de você ter removido a substituição do proprietário, o Amazon S3 não replicará as ACLs, pois a propriedade do objeto muda, de maneira que o Amazon S3 feito permanece em vigor. Em outras palavras: as ACLs colocaram a versão do objeto que foi replicada quando a substituição do proprietário tinha sido substituída para não continuarem a ser replicadas.

Adicionar a opção de substituição do proprietário à configuração da replicação

Atenção

Adicione a opção de substituição do proprietário somente quando os buckets de origem e de destino pertencerem a Contas da AWS diferentes. O Amazon S3 não verifica se os buckets pertencem à mesma conta ou a contas diferentes. Se você adicionar a substituição do proprietário quando os dois buckets pertencerem à mesma Conta da AWS, o Amazon S3 aplicará a substituição do proprietário. Essa opção concede permissões completas ao proprietário do bucket de destino e não replica as atualizações subsequentes às listas de controle de acesso (ACLs) dos objetos de origem. O proprietário da réplica pode alterar diretamente na ACL associada a uma réplica com uma solicitação PutObjectAcl, mas não por replicação.

Para especificar a opção de substituição do proprietário, adicione o seguinte ao elemento Destination:

  • O elemento AccessControlTranslation, que diz ao Amazon S3 para alterar a propriedade da réplica

  • O elemento Account, que especifica a Conta da AWS do proprietário do bucket de destino

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> ... <Destination> ... <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> <Account>destination-bucket-owner-account-id</Account> </Destination> </Rule> </ReplicationConfiguration>

A configuração da replicação do exemplo a seguir instrui o Amazon S3 a replicar os objetos que têm o prefixo de chaves Tax ao bucket de destino amzn-s3-demo-destination-bucket e alterar a propriedade das réplicas. Para usar esse exemplo, substitua os user input placeholders por suas próprias informações.

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket> <Account>destination-bucket-owner-account-id</Account> <AccessControlTranslation> <Owner>Destination</Owner> </AccessControlTranslation> </Destination> </Rule> </ReplicationConfiguration>

Conceder permissão do Amazon S3 para alterar a propriedade da réplica

Conceda permissões do Amazon S3 para alterar a propriedade da réplica adicionando permissão para a ação s3:ObjectOwnerOverrideToBucketOwner na política de permissões associada ao perfil do AWS Identity and Access Management (IAM). Esse é o perfil do IAM especificado na configuração de replicação que permite que o Amazon S3 assuma e replique objetos em seu nome. Para usar o exemplo a seguir, substitua amzn-s3-demo-destination-bucket pelo nome do bucket de destino.

... { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ...

Adicionar a permissão na política do bucket de destino para permitir a alteração da propriedade da réplica

O proprietário do bucket de destino deve conceder ao proprietário da permissão do bucket de origem para alterar a propriedade da réplica. A propriedade do bucket de destino concede ao proprietário do bucket de origem permissão para a ação s3:ObjectOwnerOverrideToBucketOwner. Essa permissão autoriza que o proprietário do bucket de destino aceite a propriedade das réplicas de objetos. O exemplo de declaração de política do bucket a seguir mostra como fazer isso. Para usar esse exemplo, substitua os user input placeholders por suas próprias informações.

... { "Sid":"1", "Effect":"Allow", "Principal":{"AWS":"source-bucket-account-id"}, "Action":["s3:ObjectOwnerOverrideToBucketOwner"], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ...

Como alterar o proprietário da réplica

Quando os buckets de origem e de destino em uma configuração de replicação pertencem a Contas da AWS diferentes, você pode instruir o Amazon S3 a alterar a propriedade da réplica para a Conta da AWS que possui o bucket de destino. Os exemplos a seguir mostram como usar o console do Amazon S3, a AWS Command Line Interface (AWS CLI) e os SDKs da AWS para alterar a propriedade da réplica.

Para obter instruções detalhadas, consulte Configurar a replicação para buckets na mesma conta. Este tópico fornece instruções para definir a configuração da replicação quando os buckets de origem e de destino pertencerem às mesmas Contas da AWS ou a contas diferentes.

O procedimento a seguir mostra como alterar a propriedade da réplica usando a AWS CLI. Neste procedimento, você faz o seguinte:

  • Crie os buckets de origem e de destino.

  • Habilite o versionamento nos buckets.

  • Crie um perfil do AWS Identity and Access Management (IAM) que dê ao Amazon S3 permissão para replicar objetos.

  • Adicione uma configuração de replicação ao bucket de origem.

  • Na configuração da replicação, você instrui o Amazon S3 a alterar a propriedade da réplica.

  • Você testa a configuração de replicação.

Como alterar o proprietário da réplica quando os buckets de origem e de destino pertencem a Contas da AWS diferentes (AWS CLI)

Para usar os comandos AWS CLI de exemplo neste procedimento, substitua user input placeholders por suas informações.

  1. Neste exemplo, você cria os buckets de origem e de destino em duas Contas da AWS diferentes. Para trabalhar com essas duas contas, configure a AWS CLI com dois perfis nomeados. Este exemplo usa os perfis nomeados acctA e acctB, respectivamente. Consulte mais informações sobre como configurar perfis de credenciais e como usar perfis nomeados em Configuration and credential file settings no Guia do usuário da AWS Command Line Interface.

    Importante

    Os perfis que você usar para este procedimento devem ter as permissões necessárias. Por exemplo, na configuração da replicação, especifique a função do IAM que o Amazon S3 pode assumir. Você só poderá fazer isso se o perfil usado tiver a permissão iam:PassRole. Se usar as credenciais do usuário administrador para criar um perfil nomeado, você poderá realizar todas as tarefas nesse procedimento. Para ter mais informações, consulte Conceder permissões ao usuário para transmitir um perfil a um AWS service (Serviço da AWS) no Guia do usuário do IAM.

  2. Crie o bucket de origem e habilite o versionamento. Esse exemplo cria um bucket de origem chamado amzn-s3-demo-source-bucket na região Leste dos EUA (N. da Virgínia) (us-east-1).

    aws s3api create-bucket \ --bucket amzn-s3-demo-source-bucket \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket amzn-s3-demo-source-bucket \ --versioning-configuration Status=Enabled \ --profile acctA
  3. Crie um bucket de destino e habilite o versionamento. Esse exemplo cria um bucket de destino chamado amzn-s3-demo-destination-bucket na região Oeste dos EUA (Oregon) (us-west-2). Use um perfil de Conta da AWS diferente do usado para o bucket de origem.

    aws s3api create-bucket \ --bucket amzn-s3-demo-destination-bucket \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctB
    aws s3api put-bucket-versioning \ --bucket amzn-s3-demo-destination-bucket \ --versioning-configuration Status=Enabled \ --profile acctB
  4. É necessário adicionar permissões à política de bucket de destino para permitir a alteração da propriedade da réplica.

    1. Salve a política a seguir em um arquivo chamado destination-bucket-policy.json. Substitua user input placeholders por suas próprias informações.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "destination_bucket_policy_sid", "Principal": { "AWS": "source-bucket-owner-account-id" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }
    2. Adicione a política anterior ao bucket de destino usando o seguinte comando put-bucket-policy:

      aws s3api put-bucket-policy --region $ {destination-region} --bucket $ {amzn-s3-demo-destination-bucket} --policy file://destination_bucket_policy.json
  5. Crie uma função do IAM. Você especifica essa função na configuração da replicação que adiciona ao bucket de origem posteriormente. O Amazon S3 assume essa função para replicar objetos em seu nome. A função do IAM é criada em duas etapas:

    • Crie a função.

    • Anexar uma política de permissões à função.

    1. Crie a função do IAM.

      1. Copie a política de confiança a seguir e salve-a em um arquivo chamado s3-role-trust-policy.json no diretório atual do computador local. Essa política concede ao Amazon S3 permissões para assumir a função.

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
      2. Execute o seguinte comando create-role da AWS CLI para criar o perfil do IAM:

        $ aws iam create-role \ --role-name replicationRole \ --assume-role-policy-document file://s3-role-trust-policy.json \ --profile acctA

        Anote o nome do recurso da Amazon (ARN) do perfil do IAM que você criou. Você precisará desse AR em uma etapa posterior.

    2. Anexar uma política de permissões à função.

      1. Copie a política de permissões a seguir e salve-a em um arquivo com o nome s3-role-perm-pol-changeowner.json no diretório atual do computador local. Essa política concede permissões para várias ações de bucket e objetos do Amazon S3. Nas etapas a seguir, anexe essa política ao perfil do IAM criado anteriormente.

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ] }
      2. Para anexar a política de permissões anterior ao perfil, execute o seguinte comando put-role-policy:

        $ aws iam put-role-policy \ --role-name replicationRole \ --policy-document file://s3-role-perm-pol-changeowner.json \ --policy-name replicationRolechangeownerPolicy \ --profile acctA
  6. Adicione uma configuração de replicação ao bucket de origem.

    1. A AWS CLI requer que você especifique a configuração de replicação como JSON. Salve o JSON a seguir em um arquivo chamado replication.json no diretório atual local do computador local. Na configuração, AccessControlTranslation especifica a mudança na propriedade da réplica do proprietário do bucket de origem para o proprietário do bucket de destino.

      { "Role":"IAM-role-ARN", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ }, "Status":"Enabled", "Destination":{ "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket", "Account":"destination-bucket-owner-account-id", "AccessControlTranslation":{ "Owner":"Destination" } } } ] }
    2. Edite o JSON fornecendo os valores do nome do bucket de destino, o ID da conta do proprietário do bucket de destino e o IAM-role-ARN. Substitua IAM-role-ARN pelo ARN do perfil do IAM que você criou anteriormente. Salve as alterações.

    3. Para adicionar a configuração de replicação ao bucket de origem, execute o seguinte comando:

      $ aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket amzn-s3-demo-source-bucket \ --profile acctA
  7. Teste a configuração de replicação verificando a propriedade da réplica no console do Amazon S3.

    1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

    2. Adicione objetos ao bucket de origem. Verifique se o bucket de destino contém as réplicas de objetos e se a propriedade das réplicas mudou para a Conta da AWS que possui o bucket de destino.

Consulte um exemplo de código para adicionar uma configuração de replicação em Uso dos AWS SDKs. Você precisa modificar a configuração de replicação adequadamente. Para obter informações conceituais, consulte Alterar o proprietário da réplica.