Resolução
Ative o Bloqueio de objetos no bucket de destino
Para configurar a replicação em um bucket do Amazon S3, ative o Bloqueio de objetos no bucket de destino.
Observação: depois de ativar o Bloqueio de objetos do S3, não é possível desativar o Bloqueio de objetos nem suspender o versionamento do bucket.
Crie um perfil do IAM para replicação com as permissões necessárias
Crie um perfil do AWS Identity and Access Management (AWS IAM) para replicação no console do IAM na conta de origem com uma relação de confiança para o Amazon S3.
Exemplo:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Anexe 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/*"
]
}
]
}
Se você criptografar seus buckets do S3 com criptografia do lado do servidor com as chaves do AWS Key Management Service (AWS KMS) (SSE-KMS), é uma prática recomendada ativar as chaves do bucket do S3. Isso reduz o número de solicitações para o serviço do AWS KMS, o que ajuda a minimizar as cobranças pelas chamadas descriptografadas ou criptografadas pelo KMS. Se você usar chaves do AWS KMS com chaves de bucket, anexe as seguintes permissões ao seu 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/"
]
},
{
"Action":[
"kms:Decrypt"
],
"Effect":"Allow",
"Condition":{
"StringLike":{
"kms:ViaService":"s3.us-east-1.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn":[
"arn:aws:s3:::SourceBucketName"
]
}
},
"Resource":[
"arn:aws:kms:us-east-1:SourceAccount:key/key-id"
]
},
{
"Action":[
"kms:Encrypt"
],
"Effect":"Allow",
"Condition":{
"StringLike":{
"kms:ViaService":"s3.us-east-1.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn":[
"arn:aws:s3:::DestBucketName"
]
}
},
"Resource":[
"arn:aws:kms:us-east-1:DestAccount:key/key-id"
]
}
]
}
Observação: substitua SourceAccount pelo ID da sua conta de origem e DestAccount pelo ID da sua conta de destino. Substitua SourceBucketName pelo nome do seu bucket de origem, DestBucketName pelo nome do seu bucket de destino e key-id pelo ID da sua chave.
Se você não usar chaves de bucket, acrescente um prefixo de chave após SourceBucketName e DestBucketName nos elementos Action, semelhante ao seguinte:
"arn:aws:s3:::SourceBucketName/key-prefix1"
Observação: substitua key-prefix1 pela sua chave.
Atualize as permissões da chave do AWS KMS
Configure a chave do AWS KMS para a conta de destino para permitir o acesso ao perfil do IAM replicado na conta de origem. É possível usar a criptografia SSE-S3, mas não é possível usar a chave gerenciada do AWS KMS aws/S3 para replicação entre contas. Para obter mais informações, consulte Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C).
Exemplo:
{ "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
},
"Action": [
"kms:GenerateDataKey",
"kms:Encrypt"
],
"Resource": "*"
}
Observação: se você usar um curinga (*) em Resource (Recurso) na política de chave, a política concede permissão somente ao perfil do IAM replicado para a chave do AWS KMS. A política não permite que o perfil replicado eleve suas permissões.
Adicione a seguinte política de bucket à conta de destino
Na seção Principal (Entidade principal), adicione o nome do recurso da Amazon (ARN) do perfil do IAM de replicação que você criou.
Exemplo:
{ "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"
]
}
]
}
Replique o seu perfil do IAM em seu bucket do S3
Conclua as etapas a seguir:
- Abra o console do Amazon S3.
- Clique em Buckets e, em seguida, selecione seu bucket de origem.
- Clique na guia Management (Gerenciamento).
- Em Replication rules (Regras de replicação), selecione Create replication rule (Criar regra de replicação).
- Insira um nome para sua regra.
- Em Source bucket (Bucket de origem), selecione um escopo de regra para saber se a replicação se aplica a um prefixo de objeto específico ou a todo o conteúdo do bucket.
- Na seção Destination (Destino), selecione Specify a bucket in another account (Especificar um bucket em outra conta) e digite o nome do bucket de destino e o ID da conta.
- Em IAM role (Perfil do IAM), clique em Choose from existing IAM roles (Escolher entre perfis do IAM existentes).
- Selecione Create new role (Criar novo perfil).
- ou -
Insira o ARN do perfil do IAM para usar um perfil que você já criou ou se tiver regras de replicação existentes.
- Para replicar objetos criptografados com o AWS KMS:
Em Encryption (Criptografia), selecione Replicate objects encrypted with AWS Key Management Service (AWS KMS) (Replicar objetos criptografados com o AWS Key Management Service (AWS KMS)).
Insira o ARN da sua chave do AWS KMS.
- (Opcional) Configure a Classe de armazenamento de destino e as Additional replication options (Opções de replicação adicionais).
- Revise a configuração e, em seguida, clique em Save (Salvar).
- (Opcional) Replique objetos existentes com uma tarefa única de replicação em lote do Amazon S3.
Verifique se replicou o perfil do IAM entre contas
Para testar a regra de replicação, adicione novos objetos ao bucket de origem e, em seguida, verifique se há objetos replicados no bucket de destino.
Informações relacionadas
Configurar a funcionalidade Bloqueio de Objetos do S3
Como o bloqueio de objetos do S3 funciona