Replicar objetos criptografados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)
Importante
O Amazon S3 agora aplica criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (SSE-S3) como nível básico de criptografia para cada bucket no Amazon S3. Desde 5 de janeiro de 2023, todos os novos uploads de objetos para o Amazon S3 são automaticamente criptografados sem custo adicional e sem impacto na performance. O status de criptografia automática para a configuração de criptografia padrão do bucket do S3 e para novos uploads de objetos está disponível em logs do AWS CloudTrail, no Inventário do S3, na Lente de Armazenamento do S3, no console do Amazon S3 e como cabeçalho adicional de resposta da API do Amazon S3 na AWS Command Line Interface e em AWS SDKs. Para obter mais informações, consulte Perguntas frequentes sobre criptografia padrão.
Há algumas considerações especiais quando você está replicando objetos que foram criptografados usando criptografia do lado do servidor. O Amazon S3 agora é compatível com seguintes tipos de criptografia do lado do servidor:
-
Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)
-
Criptografia no lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS)
-
Criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS)
-
Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C)
Para obter mais informações sobre criptografia no lado do servidor, consulte Proteger os dados usando criptografia do lado do servidor.
Este tópico explica as permissões necessárias para direcionar o Amazon S3 a replicar objetos que foram criptografados usando a criptografia do lado do servidor. Este tópico também fornece elementos de configuração adicionais aos quais você pode adicionar e dar exemplos de políticas do AWS Identity and Access Management (IAM) que concedem as permissões necessárias para replicar objetos criptografados.
Para obter um exemplo com instruções passo a passo, consulte Habilitar a replicação para objetos criptografados. Para obter informações sobre como criar uma configuração da replicação, consulte Replicar objetos dentro de uma região e entre regiões.
nota
Você pode usar uma AWS KMS keys de várias regiões no Amazon S3. No entanto, o Amazon S3 trata no momento as chaves de várias regiões como se fossem chaves de região única e não usa os recursos de várias regiões da chave. Consulte mais informações em Using multi-Region keys no Guia do desenvolvedor do AWS Key Management Service.
Tópicos
Como a criptografia de bucket padrão afeta a replicação
Ao habilitar a criptografia padrão para um bucket de destino de replicação, o seguinte comportamento de criptografia será aplicado:
-
Se os objetos no bucket de origem não estiverem criptografados, os objetos de réplica no bucket de destino serão criptografados usando as configurações de criptografia padrão do bucket de destino. Como resultado, as tags de entidade (ETags) dos objetos de origem diferem dos ETags dos objetos de réplica. Se você tiver aplicações que usam ETags, será necessário atualizar essas aplicações para considerar essa diferença.
-
Se os objetos no bucket de origem forem criptografados usando a criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (SSE-S3), a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) ou a criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS), os objetos de réplica no bucket de destino usarão o mesmo tipo de criptografia que os objetos de origem. As configurações de criptografia padrão do bucket de destino não são usadas.
Replicar objetos criptografados com SSE-C
Ao usar a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C), é possível gerenciar suas próprias chaves de criptografia proprietárias. Com o SSE-C, você gerencia as chaves enquanto o Amazon S3 gerencia o processo de criptografia e descriptografia. Você deve fornecer uma chave de criptografia como parte de sua solicitação, mas não precisa escrever nenhum código para realizar a criptografia ou descriptografia de objetos. Quando você faz upload de um objeto, o Amazon S3 criptografa o objeto usando a chave que você forneceu. Depois, o Amazon S3 remove essa chave da memória. Quando você recupera um objeto, deve fornecer a mesma chave de criptografia como parte de sua solicitação. Para ter mais informações, consulte Como usar criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C).
A Replicação do S3 é compatível com objetos criptografados com SSE-C. É possível configurar a replicação de objetos com SSE-C no console do Amazon S3 ou com os SDKs da AWS, da mesma forma que você configura a replicação para objetos não criptografados. Não há permissões de SSE-C adicionais além das atualmente necessárias para replicação.
A Replicação do S3 replica automaticamente objetos criptografados com SSE-C recém-carregados, se eles forem elegíveis, de acordo com sua configuração de Replicação do S3. Para replicar objetos existentes nos buckets, use a replicação em lote do S3. Para obter mais informações sobre replicação de objetos, consulte Visão geral da configuração da replicação em tempo real e Replicar objetos existentes com o Replicação em Lote.
Não há cobranças adicionais pela replicação de objetos SSE-C. Consulte detalhes sobre os preços de replicação em Preço do Amazon S3
Replicar objetos criptografados com SSE-S3, SSE-KMS ou DSSE-KMS
Por padrão, o Amazon S3 não replica objetos criptografados com SSE-KMS ou DSSE-KMS. Esta seção explica outros elementos de configuração que você pode adicionar para orientar o Amazon S3 a replicar esses objetos.
Para obter um exemplo com instruções passo a passo, consulte Habilitar a replicação para objetos criptografados. Para obter informações sobre como criar uma configuração da replicação, consulte Replicar objetos dentro de uma região e entre regiões.
Especificar informações adicionais na configuração de replicação
Na configuração de replicação, você faz o seguinte:
-
No elemento
Destination
na configuração de replicação, adicione o ID da chave do AWS KMS simétrica gerenciada pelo cliente que você deseja que o Amazon S3 use para criptografar réplicas de objetos, conforme mostrado no exemplo de configuração de replicação a seguir. -
Aceite explicitamente ao habilitar a replicação de objetos criptografados por meio das chaves do KMS (SSE-KMS ou DSSE-KMS). Para ativar, adicione o elemento
SourceSelectionCriteria
, conforme mostrado no exemplo de configuração de replicação a seguir.
<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>
AWS KMS key ARN or Key Alias ARN that's in the same Região da AWS as the destination bucket.
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
Importante
-
A chave do KMS deve ter sido criada na mesma Região da AWS que o bucket de destino.
-
A chave do KMS deve ser válida. A operação de API
PutBucketReplication
não verifica a validade de chaves do KMS. Se você usar uma chave do KMS inválida, receberá o código de status HTTP200 OK
como resposta, mas a replicação falhará.
O exemplo a seguir mostra uma configuração de replicação, que inclui elementos de configuração opcionais. Essa configuração de replicação tem uma regra. Esta regra aplica-se aos objetos com o prefixo de chaves
. O Amazon S3 usa o ID da AWS KMS key especificado para criptografar essas réplicas de objeto.Tax
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <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:::</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>
amzn-s3-demo-destination-bucket
AWS KMS key ARN or Key Alias ARN that's in the same Região da AWS as the destination bucket.
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>
Conceder permissões adicionais para a função do IAM
Para replicar objetos criptografados em repouso usando SSE-S3, SSE-KMS ou DSSE-KMS, conceda as permissões adicionais a seguir ao perfil do AWS Identity and Access Management (IAM) especificado na configuração da replicação. Você concede essas permissões ao atualizar a política de permissões associada ao perfil do IAM.
-
Ação
s3:GetObjectVersionForReplication
para objetos de origem: essa ação permite que o Amazon S3 replique objetos não criptografados e objetos criados com criptografia do lado do servidor usando SSE-S3, SSE-KMS ou DSSE-KMS.nota
Recomendamos que você use a ação
s3:GetObjectVersionForReplication
em vez da açãos3:GetObjectVersion
, porques3:GetObjectVersionForReplication
fornece ao Amazon S3 somente as permissões mínimas necessárias para a replicação. Além disso, a açãos3:GetObjectVersion
permite a replicação de objetos não criptografados e objetos criptografados com SSE-S3, mas não objetos criptografados usando chaves do KMS (SSE-KMS ou DSSE-KMS). -
Ações
kms:Decrypt
ekms:Encrypt
AWS KMS para as chaves do KMS-
Você deve conceder permissões
kms:Decrypt
para a AWS KMS key que é usada para descriptografar o objeto de origem. -
Você deve conceder permissões
kms:Encrypt
para a AWS KMS key que é usada para criptografar a réplica do objeto.
-
-
A ação
kms:GenerateDataKey
para replicar objetos de texto sem formatação: se você estiver replicando objetos de texto sem formatação em um bucket com a criptografia SSE-KMS ou DSSE-KMS habilitada por padrão, é necessário incluir a permissãokms:GenerateDataKey
para o contexto de criptografia de destino e a chave do KMS na política do IAM.
Recomendamos que você restrinja essas permissões apenas aos buckets e objetos de destino usando chaves de condição do AWS KMS. A Conta da AWS proprietária do perfil do IAM precisa ter permissões para as ações kms:Encrypt
e kms:Decrypt
para as chaves do KMS listadas na política. Se as chaves do KMS pertencerem a outra Conta da AWS, o proprietário da chave do KMS precisará conceder essas permissões à Conta da AWS proprietária do perfil do IAM. Consulte mais informações sobre como gerenciar o acesso a essas chaves do KMS em Using IAM policies with AWS KMS no Guia do desenvolvedor do AWS Key Management Service.
Chaves de bucket do S3 e replicação
Para usar a replicação com uma chave de bucket do S3, a política AWS KMS key para a chave do KMS usada para criptografar a réplica do objeto deve incluir a permissão kms:Decrypt
para a entidade principal da chamada. A chamada para kms:Decrypt
verifica a integridade da chave do bucket do S3 antes de usá-la. Para ter mais informações, consulte Uso de uma chave de bucket do S3 com replicação.
Quando uma chave de bucket do S3 estiver habilitada para o bucket de origem ou de destino, o contexto de criptografia será o nome do recurso da Amazon (ARN) do bucket e não o ARN do objeto (por exemplo, arn:aws:s3:::
). Você precisa atualizar suas políticas do IAM para usar o ARN do bucket para o contexto de criptografia:bucket_ARN
"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::
bucket_ARN
" ]
Para obter mais informações, consulte Contexto de criptografia (x-amz-server-side-encryption-context) (na seção “Usar a API REST”) e Alterações na observação antes de habilitar uma chave de bucket do S3.
Exemplo de políticas: usar SSE-S3 e SSE-KMS com replicação
Os exemplos de políticas do IAM a seguir mostram instruções para o uso de SSE-S3 e SSE-KMS com replicação.
exemplo – Usar SSE-KMS com buckets de destino separados
A política de exemplo a seguir mostra instruções para usar SSE-KMS com buckets de destino separados.
{ "Version":"2012-10-17", "Statement":[ { "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.
source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::/
amzn-s3-demo-source-bucket
key-prefix1
*" ] } }, "Resource": [ "List of AWS KMS key ARNs that are used to encrypt source objects.
" ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-1-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::/
amzn-s3-demo-destination-bucket1
key-prefix1
*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same Região da AWS as destination bucket 1). Used to encrypt object replicas created in destination bucket 1.
" ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-2-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::/
amzn-s3-demo-destination-bucket2
key-prefix1
*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same Região da AWS as destination bucket 2). Used to encrypt object replicas created in destination bucket 2.
" ] } ] }
exemplo – Replicar objetos criados com SSE-S3 e SSE-KMS
Veja a seguir uma política completa do IAM que concede as permissões necessárias para replicar objetos não criptografados, objetos criados com SSE-3 e objetos criados com SSE-KMS.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/
amzn-s3-demo-source-bucket
key-prefix1
*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::/
amzn-s3-demo-destination-bucket
key-prefix1
*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::/
amzn-s3-demo-source-bucket
key-prefix1
*" ] } }, "Resource":[ "List of the AWS KMS key ARNs that are used to encrypt source objects.
" ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::/
amzn-s3-demo-destination-bucket
prefix1
*" ] } }, "Resource":[ "AWS KMS key ARNs (in the same Região da AWS as the destination bucket) to use for encrypting object replicas
" ] } ] }
exemplo – Replicar objetos com chaves de bucket do S3
Veja a seguir uma política completa do IAM que concede as permissões necessárias para replicar objetos com chaves de bucket do S3.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/
amzn-s3-demo-source-bucket
key-prefix1
*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::/
amzn-s3-demo-destination-bucket
key-prefix1
*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::" ] } }, "Resource":[ "
amzn-s3-demo-source-bucket
List of the AWS KMS key ARNs that are used to encrypt source objects.
" ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::" ] } }, "Resource":[ "
amzn-s3-demo-destination-bucket
AWS KMS key ARNs (in the same Região da AWS as the destination bucket) to use for encrypting object replicas
" ] } ] }
Conceder permissões adicionais para cenários entre contas
Em um cenário entre contas, no qual os buckets de origem e destino pertencem a diferentes Contas da AWS, é possível usar uma chave do KMS para criptografar réplicas de objetos. No entanto, o proprietário da chave do KMS deve conceder ao proprietário do bucket de origem permissão para usar a chave do KMS.
nota
Se você precisar replicar dados da SSE-KMS entre contas, a regra de replicação deverá especificar uma chave gerenciada pelo cliente do AWS KMS para a conta de destino. As Chaves gerenciadas pela AWS não permitem o uso entre contas e, portanto, não podem ser usadas para realizar a replicação entre contas.
Como conceder ao proprietário do bucket de origem permissão para usar a chave do KMS (console do AWS KMS)
-
Faça login no AWS Management Console e abra o console do AWS KMS em https://console.aws.amazon.com/kms
. -
Para alterar a Região da AWS, use o Region selector (Seletor de regiões) no canto superior direito da página.
-
Para exibir as chaves em sua conta que você cria e gerencia, no painel de navegação, escolha Customer managed keys (Chaves gerenciadas de cliente).
-
Selecione a chave do KMS.
-
Na seção Configuração geral, selecione a guia Política de chaves.
-
Role para baixo até Outras Contas da AWS.
-
Selecione Adicionar outras Contas da AWS.
A caixa de diálogo Outras Contas da AWS é exibida.
-
Na caixa de diálogo, escolha Adicionar outra Conta da AWS. Para arn:aws:iam::, insira o ID da conta do bucket de origem.
-
Escolha Salvar alterações.
Para conceder ao proprietário do bucket de origem permissão para usar a chave do KMS (AWS CLI).
-
Para obter informações sobre o comando
put-key-policy
da AWS Command Line Interface (AWS CLI), consulte put-key-policy na Referência de comandos da AWS CLI. Para obter informações sobre a operação de API subjacentePutKeyPolicy
, consulte PutKeyPolicy na Referência de API do AWS Key Management Service.
Considerações sobre cotas de transação do AWS KMS
Ao adicionar muitos novos objetos com a criptografia do AWS KMS depois de habilitar replicação entre regiões (CRR), pode ocorrer controle de utilização (erros de respostas HTTP 503 Service
Unavailable
). O controle de utilização acontece quando o número de transações do AWS KMS por segundo excede a cota atual. Para obter mais informações, consulte Cotas do no Guia do desenvolvedor do AWS Key Management Service.
Para solicitar um aumento de cota, use Service Quotas. Consulte Requesting a quota increase (Como solicitar um aumento de cota) para obter mais informações. Se não houver compatibilidade de Service Quotas com sua região, abra um caso do AWS Support
Habilitar a replicação para objetos criptografados
Por padrão, o Amazon S3 não replica objetos criptografados por meio da criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) ou da criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS). Para replicar objetos criptografados com SSE-KMS ou DSS-KMS, você deve modificar a configuração da replicação do bucket para instruir o Amazon S3 a replicar esses objetos. Este exemplo explica como usar o console do Amazon S3 e a AWS Command Line Interface (AWS CLI) para alterar a configuração de replicação do bucket de maneira que a replicação de objetos criptografados seja habilitada.
nota
Quando uma chave de bucket do S3 estiver habilitada para o bucket de origem ou de destino, o contexto de criptografia será o nome do recurso da Amazon (ARN) do bucket e não o ARN do objeto. Você precisa atualizar suas políticas do IAM a fim de usar o ARN do bucket para o contexto de criptografia. Para ter mais informações, consulte Chaves de bucket do S3 e replicação.
nota
Você pode usar uma AWS KMS keys de várias regiões no Amazon S3. No entanto, o Amazon S3 trata no momento as chaves de várias regiões como se fossem chaves de região única e não usa os recursos de várias regiões da chave. Consulte mais informações em Using multi-Region keys no Guia do desenvolvedor do AWS Key Management Service.
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 pertencem às mesmas Contas da AWS ou a contas diferentes.
Para replicar objetos criptografados com a AWS CLI, faça o seguinte:
-
Crie os buckets de origem e destino e habilite o versionamento neles.
-
Crie um perfil de serviço do AWS Identity and Access Management (IAM) que dê ao Amazon S3 permissão para replicar objetos. As permissões do perfil do IAM incluem aquelas necessárias para replicar objetos criptografados.
-
Adicione uma configuração de replicação ao bucket de origem. A configuração de replicação fornece informações relacionadas à replicação de objetos que são criptografados por meio das chaves do KMS.
-
Adicione objetos criptografados ao bucket de origem.
-
Teste a configuração para confirmar se os objetos criptografados estão sendo replicados no bucket de destino.
Os procedimentos a seguir demonstram esse processo.
Para replicar objetos criptografados no lado do servidor (AWS CLI)
Para usar os exemplos neste procedimento, substitua
por suas informações.user
input placeholders
-
Neste exemplo, você cria tanto o bucket de origem (
) como o de destino (amzn-s3-demo-source-bucket
) na mesma Conta da AWS. Defina também um perfil de credenciais para a AWS CLI. Este exemplo usa o nome de perfilamzn-s3-demo-destination-bucket
.acctA
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.
-
Use os comandos a seguir para criar o bucket
e habilitar o versionamento nele. O comandoamzn-s3-demo-source-bucket
a seguir cria um bucket na região Leste dos EUA (Norte da Virgínia) (amzn-s3-demo-source-bucket
us-east-1
).aws s3api create-bucket \ --bucket
amzn-s3-demo-source-bucket
\ --regionus-east-1
\ --profileacctA
aws s3api put-bucket-versioning \ --bucket
amzn-s3-demo-source-bucket
\ --versioning-configuration Status=Enabled \ --profileacctA
-
Use os comandos a seguir para criar o bucket
e habilitar o versionamento nele. Os comandos de exemplo a seguir criam o bucketamzn-s3-demo-destination-bucket
na região Oeste dos EUA (Oregon) (amzn-s3-demo-destination-bucket
us-west-2
).nota
Para configurar a replicação quando os buckets
eamzn-s3-demo-source-bucket
estiverem na mesma Conta da AWS, use o mesmo perfil. Este exemplo usaamzn-s3-demo-destination-bucket
. Para configurar a replicação quando os buckets pertencerem a Contas da AWS distintas, especifique diferentes perfis para cada um.acctA
aws s3api create-bucket \ --bucket
amzn-s3-demo-destination-bucket
\ --regionus-west-2
\ --create-bucket-configuration LocationConstraint=us-west-2
\ --profileacctA
aws s3api put-bucket-versioning \ --bucket
amzn-s3-demo-destination-bucket
\ --versioning-configuration Status=Enabled \ --profileacctA
-
Em seguida, crie um perfil de serviço do IAM. Você especifica esse perfil na configuração da replicação que adiciona ao bucket
posteriormente. O Amazon S3 assume essa função para replicar objetos em seu nome. A função do IAM é criada em duas etapas:amzn-s3-demo-source-bucket
-
Crie uma função de serviço.
-
Anexar uma política de permissões à função.
-
Para criar um perfil de serviço do IAM, faça o seguinte:
-
Copie a política de confiança a seguir e salve-a em um arquivo com o nome
no diretório atual do seu computador local. Essa política concede à entidade principal do serviço Amazon S3 as permissões para assumir o perfil a fim de que o Amazon S3 possa executar tarefas em seu nome.s3-role-trust-policy-kmsobj
.json{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
Use o comando a seguir para criar o perfil.
$
aws iam create-role \ --role-namereplicationRolekmsobj
\ --assume-role-policy-document file://s3-role-trust-policy-kmsobj
.json \ --profileacctA
-
-
Em seguida, anexe uma política de permissões ao perfil. Essa política concede permissões para várias ações de bucket e objetos do Amazon S3.
-
Copie a política de permissões a seguir e salve-a em um arquivo com o nome
no diretório atual do computador local. Crie um perfil do IAM e, posteriormente, anexe a política a ele.s3-role-permissions-policykmsobj
.jsonImportante
Na política de permissões, especifique os IDs de chave do AWS KMS que serão usados para criptografar os buckets
eamzn-s3-demo-source-bucket
. É necessário criar duas chaves separadas do KMS para os bucketsamzn-s3-demo-destination-bucket
eamzn-s3-demo-source-bucket
. As AWS KMS keys nunca são compartilhadas fora da Região da AWS em que foram criadas.amzn-s3-demo-destination-bucket
{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::
", "arn:aws:s3:::amzn-s3-demo-source-bucket
/*" ] }, { "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Effect":"Allow", "Condition":{ "StringLikeIfExists":{ "s3:x-amz-server-side-encryption":[ "aws:kms", "AES256", "aws:kms:dsse" ], "s3:x-amz-server-side-encryption-aws-kms-key-id":[ "amzn-s3-demo-source-bucket
AWS KMS key IDs(in ARN format) to use for encrypting object replicas
" ] } }, "Resource":"arn:aws:s3:::
/*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.amzn-s3-demo-destination-bucket
us-east-1
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::
/*" ] } }, "Resource":[ "amzn-s3-demo-source-bucket
AWS KMS key IDs(in ARN format) used to encrypt source objects.
" ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.us-west-2
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::
/*" ] } }, "Resource":[ "amzn-s3-demo-destination-bucket
AWS KMS key IDs (in ARN format) to use for encrypting object replicas
" ] } ] } -
Crie uma política e anexe-a à função.
$
aws iam put-role-policy \ --role-namereplicationRolekmsobj
\ --policy-document file://s3-role-permissions-policykmsobj
.json \ --policy-namereplicationRolechangeownerPolicy
\ --profileacctA
-
-
-
Depois, adicione a configuração de replicação a seguir ao bucket
. Isso instrui o Amazon S3 a replicar objetos com o prefixoamzn-s3-demo-source-bucket
no bucketTax/
.amzn-s3-demo-destination-bucket
Importante
Na configuração da replicação, especifique o perfil do IAM que o Amazon S3 pode assumir. Você só poderá fazer isso se tiver a permissão
iam:PassRole
. O perfil especificado no comando da CLI deve ter essa permissão. 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.<ReplicationConfiguration> <Role>
IAM-Role-ARN
</Role> <Rule> <Priority>1</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Status>Enabled</Status> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::
</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>amzn-s3-demo-destination-bucket
AWS KMS key IDs to use for encrypting object replicas
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> </Rule> </ReplicationConfiguration>Para adicionar a configuração de replicação ao bucket
, faça o seguinte:amzn-s3-demo-source-bucket
-
A AWS CLI requer que você especifique a configuração de replicação como JSON. Salve o JSON a seguir em um arquivo (
) no diretório atual local do seu computador local.replication
.json{ "Role":"
IAM-Role-ARN
", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ "Prefix":"Tax
" }, "Destination":{ "Bucket":"arn:aws:s3:::
", "EncryptionConfiguration":{ "ReplicaKmsKeyID":"amzn-s3-demo-destination-bucket
AWS KMS key IDs (in ARN format) to use for encrypting object replicas
" } }, "SourceSelectionCriteria":{ "SseKmsEncryptedObjects":{ "Status":"Enabled" } } } ] } -
Edite o JSON para fornecer valores para o bucket
, osamzn-s3-demo-destination-bucket
e oAWS KMS key IDs (in ARN format)
. Salve as alterações.IAM-role-ARN
-
Use o comando a seguir para adicionar a configuração de replicação ao bucket
. Não deixe fornece o nome do bucket deamzn-s3-demo-source-bucket
.amzn-s3-demo-source-bucket
$
aws s3api put-bucket-replication \ --replication-configuration file://replication
.json \ --bucket
\ --profileamzn-s3-demo-source-bucket
acctA
-
-
Teste a configuração para verificar se os objetos criptografados estão replicados. No console do Amazon S3, faça o seguinte:
Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
No bucket de
, crie uma pasta denominadaamzn-s3-demo-source-bucket
.Tax
-
Adicione objetos de amostra à pasta. Não se esqueça de escolher a opção de criptografia e especificar a chave do KMS para criptografar os objetos.
-
Verifique se o bucket
contém as réplicas dos objetos e se elas são criptografadas usando a chave do KMS especificada na configuração. Para ter mais informações, consulte Obtenção de informações sobre o status da replicação.amzn-s3-demo-destination-bucket
Para obter um exemplo de código que mostra como adicionar uma configuração da replicação, consulte Uso dos AWS SDKs. Você precisa modificar a configuração de replicação adequadamente.