Criptografia de dados em repouso para clusters elásticos do Amazon DocumentDB - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criptografia de dados em repouso para clusters elásticos do Amazon DocumentDB

Os tópicos a seguir ajudam você a criar, monitorar e saber mais sobre as chaves de criptografia AWS Key Management Service para clusters elásticos do Amazon DocumentDB:

Os clusters elásticos do Amazon DocumentDB se integram automaticamente com AWS Key Management Service (AWS KMS) para gerenciamento de chaves e usam um método conhecido como criptografia envelopada para proteger seus dados. Para ter mais informações sobre a criptografia de envelope, consulte Criptografia de envelope no Guia do desenvolvedor do AWS Key Management Service.

Um AWS KMS key é uma representação lógica de uma chave. A chave do KMS inclui metadados, como o ID da chave, a data de criação, a descrição e o estado da chave. A chave do KMS também contém o material de chave usado para criptografar e descriptografar dados. Para obter mais informações sobre as chaves do KMS, consulte AWS KMS keys no Guia do desenvolvedor do AWS Key Management Service.

Os clusters elásticos do Amazon DocumentDB oferecem suporte à criptografia com dois tipos de chaves:

  • Chaves próprias AWS: os clusters elásticos do Amazon DocumentDB usam essas chaves por padrão para criptografar automaticamente dados de identificação pessoal. Você não pode visualizar, gerenciar ou usar chaves de propriedade da AWS, tampouco auditar seu uso. No entanto, você não precisa fazer nada e nem alterar qualquer programa para proteger as chaves que criptografam seus dados. Para obter mais informações, consulte AWSowned keys (chaves de propriedade da ) no AWS Key Management ServiceGuia do Desenvolvedor.

  • Chaves gerenciadas pelo cliente: simétricas do AWS KMS keys que você cria, detém e gerencia. Como você tem controle total dessa camada de criptografia, você pode realizar tarefas como:

    • Estabelecer e manter as políticas de chave

    • Estabelecer e manter subsídios e políticas do IAM

    • Habilitar e desabilitar políticas de chaves

    • Alternar os materiais de criptografia de chave

    • Adicionar etiquetas

    • Criar réplicas de chaves

    • Chaves de agendamento para exclusão

    Para obter mais informações, consulte Chaves mestras do cliente (CMKs) no AWS Key Management Service Guia do desenvolvedor.

Importante

Você deve usar uma chave do KMS de criptografia simétrica para criptografar seu cluster, pois o Amazon DocumentDB só oferece suporte a chaves KMS de criptografia simétrica. Não use uma chave KMS assimétrica para tentar criptografar os dados nos clusters elásticos do Amazon DocumentDB. Para obter mais informações, consulte Chaves assimétricas no AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

Se o Amazon DocumentDB não puder mais obter acesso à chave de criptografia de um cluster — por exemplo, quando o acesso a uma chave for revogado — o cluster criptografado entrará em um estado de terminal. Nesse caso, só é possível restaurar o cluster a partir de um backup. Para o Amazon DocumentDB, os backups estão sempre habilitados para 1 dia. Além disso, se você desativar a chave para um cluster criptografado do Amazon DocumentDB, acabará perdendo o acesso de leitura e gravação a esse cluster. Quando o Amazon DocumentDB encontra um cluster que é criptografado por uma chave à qual ele não tem acesso, ele coloca o cluster em um estado terminal. Nesse estado, o cluster deixa de estar disponível e o estado atual do banco de dados não pode ser recuperado. Para restaurar o cluster, você deve reativar o acesso à chave de criptografia para o Amazon DocumentDB e, depois, restaurar o cluster a partir de um backup.

Importante

Não é possível alterar a chave KMS para um cluster criptografado depois de já tê-lo criado. Certifique-se de determinar seus requisitos de chave de criptografia antes de criar seu cluster elástico criptografado.

Como os clusters elásticos do Amazon DocumentDB usam concessões em AWS KMS

Os clusters elásticos do Amazon DocumentDB exigem uma concessão para usar sua chave gerenciada pelo cliente.

Quando você cria um cluster criptografado com uma chave gerenciada pelo cliente, os clusters elásticos do Amazon DocumentDB criam uma concessão em seu nome enviando uma solicitação CreateGrant para AWS KMS. As concessões no AWS KMS são usadas para dar aos clusters elásticos do Amazon DocumentDB o acesso a uma chave KMS em uma conta de cliente.

Os clusters elásticos do Amazon DocumentDB exigem a concessão para usar sua chave gerenciada pelo cliente para as seguintes operações internas:

  • Enviar solicitações DescribeKey para AWS KMS para verificar se a ID simétrica da chave KMS gerenciada pelo cliente inserida ao criar uma coleção de rastreador ou geocerca é válida.

  • Enviar solicitações GenerateDataKey para AWS KMS para gerar chaves de dados criptografadas pela chave gerenciada pelo cliente.

  • Enviar solicitações Decrypt para AWS KMS para descriptografar as chaves de dados criptografadas para que elas possam ser usadas para criptografar seus dados.

  • É possível revogar o acesso à concessão, ou remover o acesso do serviço à chave gerenciada pelo cliente a qualquer momento. Se você fizer isso, os clusters elásticos do Amazon DocumentDB não poderão acessar nenhum dos dados criptografados com a chave gerenciada pelo cliente, o que afetará as operações que dependerem desses dados.

Criar uma chave gerenciada pelo cliente

Você pode criar uma chave gerenciada pelo cliente usando o AWS Management Console ou a API do AWS KMS.

Criação das chaves simétricas gerenciadas pelo cliente

Siga as etapas de Creating symmetric customer managed key (Criar uma chave simétrica gerenciada pelo cliente) no AWS Key Management ServiceGuia do desenvolvedor.

Política de chaves

As principais políticas controlam o acesso à chave gerenciada pelo cliente. Cada chave gerenciada pelo cliente deve ter exatamente uma política de chaves, que contém declarações que determinam quem pode usar a chave e como pode usá-la. Ao criar a chave gerenciada pelo cliente, você pode especificar uma política de chaves. Para obter mais informações, consulte as informações de acesso à chave KMS localizadas na Visão geral do AWS Key Management Service no Guia do desenvolvedor do AWS Key Management Service.

Para usar sua chave gerenciada pelo cliente com recursos de cluster elástico do Amazon DocumentDB, as seguintes operações de API devem ser permitidas na política de chaves:

  • kms:CreateGrant: Adiciona uma concessão a uma chave gerenciada pelo cliente. Concede acesso de controle a uma chave KMS especificada, que permite o acesso às operações de concessão exigidas pelo Amazon Location Service. Para obter mais informações sobre o uso de concessões, consulte Concessões no AWS KMS no Guia do desenvolvedor do AWS Key Management Service.

  • kms:DescribeKey: fornece os principais detalhes gerenciados pelo cliente para permitir que o Docdb Elastic valide a chave.

  • kms:Decrypt: permite que o Docdb Elastic use a chave de dados criptografada armazenada para acesse os dados criptografados.

  • kms:GenerateDataKey : permite que o Docdb Elastic gere uma chave de dados criptografada e a armazene, porque a chave de dados não é usada imediatamente para criptografar.

Para obter mais informações, consulte Permissões para serviços da AWS e Solução de problemas de acesso por chave no Guia do desenvolvedor do AWS Key Management Service.

Restringindo o acesso à chave gerenciada pelo cliente por meio de políticas do IAM

Além das políticas de chaves KMS, você também pode restringir as permissões da chave KMS em uma política do IAM.

Você pode tornar a política do IAM mais rígida de várias maneiras. Por exemplo, para permitir que a chave gerenciada pelo cliente só seja usada para solicitações provenientes do cluster elástico do Amazon DocumentDB, é possível utilizar a chave de condição kms:ViaService com o valor docdb-elastic.<region-name>.amazonaws.com.

Para obter mais informações, consulte Como permitir que usuários em outras contas usem uma chave do KMS no Guia do desenvolvedor do AWS Key Management Service.

Monitorando suas chaves de criptografia para clusters elásticos do Amazon DocumentDB

Ao usar uma chave gerenciada pelo cliente do AWS KMS key com seus recursos do Docdb Elastic, você pode usar o AWS CloudTrail ou o Amazon CloudWatch Logs para rastrear as solicitações enviadas pelo Docdb Elastic ao AWS KMS.

Os exemplos a seguir são eventos AWS CloudTrail para CreateGrant, GenerateDataKeyWithoutPlainText, Decrypt e DescribeKey para monitorar operações AWS KMS key chamadas pelos clusters elásticos do Amazon DocumentDB para acessar dados criptografados pela chave gerenciada pelo cliente:

CreateGrant
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-09T23:04:20Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-09T23:55:48Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "retiringPrincipal": "docdb-elastic.us-east-1.amazonaws.com", "granteePrincipal": "docdb-elastic.us-east-1.amazonaws.com", "operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "RetireGrant", "DescribeKey" ], "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
GenerateDataKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-10T18:02:59Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-10T18:03:25Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
Decrypt
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-10T18:05:49Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-10T18:06:19Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-09T23:04:20Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-09T23:55:48Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "keyId": "alias/SampleKmsKey" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

Saiba mais

Os recursos a seguir fornecem mais informações sobre a criptografia de dados em pausa: