Alterar o proprietário da réplica quando os buckets de origem e de destino forem de propriedade de contas diferentes - Amazon Simple Storage Service

Alterar o proprietário da réplica quando os buckets de origem e de destino forem de propriedade de contas diferentes

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 o proprietário da réplica para a Conta da AWS que é proprietária do bucket de destino. Este exemplo explica como usar o console do Amazon S3 e a AWS CLI para alterar a propriedade da réplica. Para obter mais informações, consulte Alterar o proprietário da réplica.

nota

Quando você usa a replicação do S3 e os buckets de origem e destino pertencem a Contas da AWS diferentes, o proprietário do bucket pode desabilitar ACLs (com a configuração aplicada pelo proprietário do bucket em Object Ownership) para alterar a propriedade da réplica para a Conta da AWS que possui o bucket de destino. Essa configuração imita o comportamento de substituição do proprietário existente sem a necessidade da permissão s3:ObjectOwnerOverrideToBucketOwner. Com isso, 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.

Para obter mais informações sobre como configurar a replicação usando criptografia do lado do servidor com o AWS Key Management Service em cenários entre contas, consulte Conceder permissões adicionais para cenários entre contas.

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

Para alterar a propriedade da réplica usando a AWS CLI, crie buckets, habilite o versionamento neles, crie uma função do IAM que dê permissão ao Amazon S3 para replicar objetos e adicione a configuração da replicação ao bucket de origem. Na configuração da replicação, você instrui o Amazon S3 a alterar o proprietário da réplica. Você também testa a configuração.

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

  1. Neste exemplo, você cria os buckets de origem e destino em duas Contas da AWS diferentes. Configure a AWS CLI com dois perfis nomeados. Este exemplo usa os perfis nomeados acctA e acctB, respectivamente. Para obter mais informações sobre a definição de perfis da credencial, consulte Perfis nomeados no Guia do usuário do AWS Command Line Interface.

    Importante

    Os perfis que você usar para este exercício deve 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ó pode fazer isso se o perfil usado tiver a permissão iam:PassRole. Se você usar as credenciais do usuário administrador para criar um perfil nomeado, poderá executar todas as tarefas. Para obter mais informações, consulte Conceder permissões ao usuário para passar uma função a um produto da AWS no Guia do usuário do IAM.

    Você precisa garantir que esses perfis tenham as permissões necessárias. Por exemplo, a configuração de replicação inclui uma função do IAM que o Amazon S3 pode assumir. O perfil nomeado que você usa para conectar essa configuração a um bucket só poderá fazer isso se tiver a permissão iam:PassRole. Se você especificar as credenciais do usuário administrador ao criar esses perfis nomeados, eles terão todas as permissões. Para obter mais informações, consulte Conceder permissões ao usuário para passar uma função a um produto da AWS no Guia do usuário do IAM.

  2. Crie o bucket de origem e habilite o versionamento. Este exemplo cria o bucket de origem na região Leste dos EUA (Norte da Virgínia) (us-east-1).

    aws s3api create-bucket \ --bucket source \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket source \ --versioning-configuration Status=Enabled \ --profile acctA
  3. Crie um bucket de destino e habilite o versionamento. Este exemplo cria o bucket de destino 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 destination \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctB
    aws s3api put-bucket-versioning \ --bucket destination \ --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 no destination-bucket-policy.json.

      { "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:::destination/*" ] } ] }
    2. Coloque a política acima no bucket de destino:

      aws s3api put-bucket-policy --region $ {destination_region} --bucket $ {destination} --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 uma função.

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

    1. Crie uma 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 comando da AWS CLI a seguir para criar uma função.

        $ aws iam create-role \ --role-name replicationRole \ --assume-role-policy-document file://s3-role-trust-policy.json \ --profile acctA
    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, crie uma função do IAM e anexe a política à função.

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source/*" ] }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration" ], "Resource":[ "arn:aws:s3:::source" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ObjectOwnerOverrideToBucketOwner", "s3:ReplicateTags", "s3:GetObjectVersionTagging" ], "Resource":"arn:aws:s3:::destination/*" } ] }
      2. Para criar uma política e ligá-la à função, execute o comando a seguir.

        $ 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, a adição de AccessControlTranslation indica alteração na propriedade da réplica.

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

    3. Para adicionar a configuração de replicação ao bucket de origem, execute o comando a seguir. Dê o nome do bucket de origem.

      $ aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket source \ --profile acctA
  7. Verifique 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 do objeto e se a propriedade das réplicas mudou para a Conta da AWS proprietária do bucket de destino.

Para obter um exemplo de código para adicionar a configuração da replicação, consulte Uso de AWS SDKs. É necessário modificar a configuração de replicação de acordo. Para obter informações conceituais, consulte Alterar o proprietário da réplica.