Replicar objetos criados com a criptografia no lado do servidor (SSE) usando chaves de criptografia armazenadas no AWS KMS - Amazon Simple Storage Service

Replicar objetos criados com a criptografia no lado do servidor (SSE) usando chaves de criptografia armazenadas no AWS KMS

Por padrão, o Amazon S3 não replica objetos armazenados em repouso usando criptografia no lado do servidor com chaves mestras de cliente (CMKs) armazenadas no AWS KMS. Esta seção explica outras configurações que você adiciona para orientar o Amazon S3 a replicar esses objetos.

Importante

A replicação de dados criptografados é um processo no lado do servidor que ocorre totalmente dentro do Amazon S3. A replicação não oferece suporte à criptografia no lado do cliente.

Para ver um exemplo com instruções detalhadas, consulte Exemplo 4: Replicar objetos criptografados. Para obter informações sobre como criar uma configuração da replicação, consulte Replicação.

Especificar informações adicionais na configuração de replicação

Na configuração de replicação, você faz o seguinte:

  • Na configuração Destination, adicione a CMK simétrica do AWS KMS gerenciada pelo cliente que você deseja que o Amazon S3 use para criptografar réplicas de objetos.

  • Aceite explicitamente ao habilitar a replicação de objetos criptografados usando as CMKs do AWS KMS adicionando o elemento SourceSelectionCriteria.

<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID for the AWS region of the destination bucket.</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
Importante

A CMK do AWS KMS deve ter sido criada na mesma região da AWS que o bucket de destino.

A CMK do AWS KMS deve ser válida. A API de replicação do bucket PUT não verifica a validade das CMKs do AWS KMS. Se você usar uma CMK inválida, receberá o código de status 200 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.

<?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:::destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>The AWS KMS key ID for the AWS region of the destination bucket (S3 uses it to encrypt object replicas).</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>

Essa configuração de replicação tem uma regra. A regra se aplica a objetos com o prefixo de chaves Tax. O Amazon S3 usa o ID da chave do AWS KMS para criptografar essas réplicas de objetos.

Conceder permissões adicionais para a função do IAM

Para replicar objetos criptografados em repouso no AWS Key Management Service (AWS KMS), conceda as permissões adicionais a seguir à função do IAM especificada na configuração da replicação. Você concede essas permissões ao atualizar a política de permissões associada à função do IAM. Objetos criados com criptografia do lado do servidor usando as chaves de criptografia fornecidas pelo usuário (SSE-C) não serão replicados.

  • Permissão para a ação s3:GetObjectVersionForReplication de objetos de origem. Com a permissão para esta ação, o Amazon S3 consegue replicar objetos não criptografados e objetos criados com criptografia no lado do servidor por meio de chaves de criptografia gerenciadas pelo Amazon S3 (SSE-S3) ou CMKs armazenadas no AWS KMS (SSE-KMS).

    nota

    Recomendamos que você use a ação s3:GetObjectVersionForReplication em vez da ação s3:GetObjectVersion, pois ela fornece ao Amazon S3 somente as permissões mínimas necessárias para a replicação. Além disso, a permissão para a ação s3:GetObjectVersion permite a replicação de objetos não criptografados e objetos criptografados com SSE-S3, mas não de objetos criados usando uma CMK armazenada no AWS KMS.

  • Permissões para as seguintes ações do AWS KMS:

    • Permissões kms:Decrypt para a CMK do AWS KMS utilizada para criptografar o objeto de origem

    • Permissões kms:Encrypt para a chave do AWS KMS utilizada para criptografar a réplica de objetos

    Recomendamos que você restrinja essas permissões a buckets e objetos específicos usando as chaves de condição do AWS KMS, conforme exibido nas instruções de política deste exemplo.

    { "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::source-bucket-name/key-prefix1*", ] } }, "Resource": [ "List of AWS KMS key ARNs 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:::destination-bucket-name/key-prefix1*", ] } }, "Resource": [ "AWS KMS key ARNs (for the AWS Region of the destination bucket). S3 uses it to encrypt object replicas", ] }

    A conta da AWS proprietária da função do IAM precisa ter permissões para estas ações do AWS KMS (kms:Encrypt e kms:Decrypt) para CMKs do AWS KMS listadas na política. Se as CMKs do AWS KMS pertencerem a outra conta da AWS, o proprietário da CMK precisará conceder essas permissões à conta da AWS proprietária da função do IAM. Para obter mais informações sobre como gerenciar o acesso a essas CMKs, consulte Como usar políticas do IAM com o AWS KMS no AWS Key Management Service Developer Guide.

    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 criptografia no lado do servidor usando chaves de criptografia gerenciadas pelo Amazon S3 e CMKs armazenadas no AWS KMS.

    nota

    Objetos criados com criptografia do lado do servidor usando as chaves de criptografia fornecidas pelo usuário (SSE-C) não serão replicados.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::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:::source-bucket-name/key-prefix1*" ] } }, "Resource":[ "List of AWS KMS key ARNs 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:::destination-bucket-name/prefix1*" ] } }, "Resource":[ "AWS KMS key ARNs (for the AWS Region of the destination bucket) to use for encrypting object replicas" ] } ] }

Para obter mais informações, consulte Usar políticas do IAM com o AWS KMS.

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 CMK gerenciada pelo cliente para criptografar réplicas de objetos. No entanto, o proprietário da CMK deve conceder ao proprietário do bucket de origem permissão para usar a CMK.

Como conceder ao proprietário do bucket de origem permissão para usar a CMK do AWS KMS (console do IAM)

  1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms.

  2. Para alterar a região do AWS, use o seletor Region (Região) no canto superior direito da página.

  3. 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).

  4. Escolha a CMK.

  5. Em General configuration (Configurações gerais), selecione a guia Key policy (Política de chaves).

  6. Selecione Other AWS Accounts (Outras contas da AWS).

  7. Selecione Add another AWS Account (Adicionar outra conta da AWS).

  8. Em arn:aws:iam::, insira o ID da conta do bucket de origem.

  9. Escolha Save Changes (Salvar alterações).

Como conceder ao proprietário do bucket de origem permissão para usar a CMK do AWS KMS (CLI da AWS)

Considerações sobre o limite 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), você pode experimentar limitação (erros de respostas HTTP 503 recebidas com lentidão). A limitação acontece quando o número de transações do AWS KMS por segundo excede o limite atual. Para obter mais informações, consulte Limites no AWS Key Management Service Developer Guide.

Para solicitar um aumento de limite, use o Cotas de serviço. Para obter mais informações, consulte Limites do Amazon Web Services. Se o Cotas de serviço não for compatível com sua região, abra um caso do AWS Support.