Como posso configurar a replicação entre contas em meus buckets do Amazon S3 com o bloqueio de objetos?

5 minuto de leitura
0

Quero configurar a replicação entre contas em um bucket do Amazon Simple Storage Service (Amazon S3) em que o bloqueio de objetos esteja ativado.

Resolução

Para configurar a replicação entre contas em um bucket do Amazon S3 com o bloqueio de objetos, conclua os seguintes pré-requisitos:

  • Certifique-se de que o bucket de destino tenha o bloqueio de objetos ativado. Se o bloqueio de objetos não estiver ativado para o bucket de destino, entre em contato com o AWS Support com sua solicitação.
  • Certifique-se de que você possa acessar a AWS Command Line Interface (AWS CLI) ou o AWS CloudShell.
  • Certifique-se de ter o token do bloqueio de objetos antes de iniciar a replicação.

Etapa 1: Crie um perfil do IAM para replicação com as permissões necessárias

1.    Crie um perfil de replicação no console do AWS Identity and Access Management (IAM) para a conta de origem com uma relação de confiança para o Amazon S3.

A relação de confiança tem a seguinte aparência:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

2.    Certifique-se de anexar as seguintes permissões ao perfil do IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    }
  ]
}

3.    Se você estiver usando as chaves do AWS Key Management Service (AWS KMS), não se esqueça de anexar também as seguintes permissões:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    },
    {
      "Sid": "SourceBucketKMSKey",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "SourceBucketKMSKeyARN"
    },
    {
      "Sid": "DestinationBucketKMSKey",
      "Action": [
        "kms:Encrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "DestinationBucketKMSKeyARN"
    }
  ]
}

Etapa 2: Atualize as permissões da chave do AWS KMS

Certifique-se de que a chave do AWS KMS para a conta de destino permita o acesso ao perfil do IAM de replicação na conta de origem.

Exemplo:

{
  "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Encrypt"
  ],
  "Resource": "*"
}

Observação: Você não pode usar a chave do AWS KMS gerenciada aws/s3 para replicação entre contas. No entanto, você pode usar a criptografia SSE-S3.

Observação: Se você usar um asterisco (*) em Recurso na política de chave, a política concederá permissão para a chave somente para o perfil de replicação. A política não permite que o perfil de replicação eleve suas permissões.

Etapa 3: Adicione a seguinte política de bucket à conta de destino

Na seção Principal, adicione o ARN do perfil do IAM de replicação que você criou na Etapa 1.

{
  "Version": "2012-10-17",
  "Id": "PolicyForDestinationBucket",
  "Statement": [
    {
      "Sid": "ReplicationPermissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
      },
      "Action": [
        "s3:ReplicateDelete",
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetBucketVersioning",
        "s3:PutBucketVersioning"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*",
        "arn:aws:s3:::DestBucketName"
      ]
    }
  ]
}

Etapa 4: Crie um arquivo replication.json

Crie um arquivo chamado replication.json que seja semelhante ao seguinte na conta de origem:

{
  "Role": "arn:aws:iam::123456789012:role/s3-replication-role",
  "Rules": [
    {
      "Status": "Enabled",
      "Priority": 10,
      "DeleteMarkerReplication": {
        "Status": "Disabled"
      },
      "Filter": {
        "Prefix": ""
      },
      "Destination": {
        "Bucket": "arn:aws:s3:::destination_bucket"
      }
    }
  ]
}

Esse arquivo contém os parâmetros na formação de JSON que configura a replicação. Esses são os mesmos parâmetros que você pode usar ao configurar a replicação usando o console do Amazon S3. Você deve usar a AWS CLI para configurar a replicação, porque ainda não pode usar o console do Amazon S3 para fazer isso.

Certifique-se de substituir s3-replication-role pelo perfil do IAM da Etapa 1. Além disso, inclua o ARN do bucket de destino, a especificação do prefixo e as preferências do marcador de exclusão, conforme necessário.

Etapa 5: Configurar a replicação

Depois de salvar a configuração anterior, passe o arquivo usando o seguinte comando da AWS CLI:

aws s3api put-bucket-replication --bucket <SOURCE BUCKET> --replication-configuration file://Replication.json --token <TOKEN>

Para obter o valor do token do bloqueio de objetos a ser usado nesse comando, entre em contato com o AWS Support. O valor <TOKEN> é o token do bloqueio de objetos para o bucket de origem.

Etapa 6: Verificação

Quando você executa o comando anterior, a regra de replicação é adicionada ao bucket de origem. Essa regra permite que os objetos recém-adicionados sejam replicados no bucket de destino. Você pode testar a regra adicionando novos objetos à origem e verificando o destino.

Observação: Você pode atualizar a configuração de replicação usando o console do Amazon S3 depois de configurar a replicação. Para replicar objetos criptografados com o AWS KMS, modifique a configuração de replicação selecionando Replicar objetos criptografados com AWS KMS em Criptografia.

Informações relacionadas

Configurar o bloqueio de objetos do S3 usando o console

Ativar o bloqueio de objetos do S3

Replicar objetos criados com criptografia do lado do servidor (SSE-C, SSE-S3, SSE-KMS)

AWS OFICIAL
AWS OFICIALAtualizada há um ano