Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Gerenciamento de chaves de criptografia de dados e chaves mestras

Nesta página

  • Serviços de gerenciamento de chaves suportados
  • Cofre de chave de criptografia

Novidades na versão 4.2.

A criptografia no nível do campo do lado do cliente requer um KMS (KMS) para acessar uma chave mestra do cliente (CMK). O MongoDB criptografa automaticamente as chaves de criptografia de dados usando a CMK especificada durantea criação da chave de criptografia de dados .

A exclusão da CMK renderiza todas as chaves de criptografia de dados criptografadas com esse CMK como permanentemente ilegíveis, o que, por sua vez, renderiza todos os valores criptografados com essas chaves de criptografia de dados como permanentemente ilegíveis.

A criptografia no nível do campo no lado do cliente é compatível com os seguintes provedores de KMS:

  • KMS do Amazon Web Services

  • Azure Key Vault

  • KMS do Google Cloud Platform

  • Chave gerenciada localmente

IMPORTANTE: para suporte ao AWS KMS, use mongosh ou o MongoDB 4.2.2 ou mongo shell legado posterior.4 2O . .0 e 4.2.1 shell mongo legado não é compatível com o serviço AWS KMS devido a uma alteração inesperada no objeto de resposta KMS.Consulte SERVER-44721 para mais informações.

MongoDB Suporte à criptografia do lado do cliente do com o uso do Amazon Web Services KMS para criptografar e descriptografar chaves de criptografia de dados. Especificamente, o MongoDB transmite com segurança a chave de criptografia de dados para Amazon Web Services KMS para criptografia ou descriptografia usando a chave mestra do cliente (CMK) especificada. O CMK nunca sai do Amazon Web Services KMS.

mongosh oferece suporte a dois métodos para configurar o acesso a um Amazon Web Services KMS:

  • Use as opções de linha de comando de criptografia em nível de campo do lado do cliente ou

  • Use o construtor Mongo() para criar uma conexão de banco de dados de dados com as opções de configuração necessárias do Amazon Web Services KMS .

A configuração do acesso a um Amazon Web Services KMS requer, no mínimo, uma chave de acesso Amazon Web Services e sua chave secreta correspondente. O usuário IAM associado à chave de acesso deve ter pelo menos uma política com as seguintes ações:

Observação

Implementar o princípio do menor privilégio para o acesso KMS

Considere configurar as funções de usuário do IAM de modo que o MongoDB tenha apenas o acesso às ações e aos recursos necessários para funcionar.

Por exemplo, o JSON da política a seguir tem o escopo das ações necessárias para uma única CMK:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt"
],
"Resource": "arn:aws:kms:region:account:key/12a345b6-cd7e-8f9g-0h1i-jk23l45mn6o7"
}
]
}

Para obter a documentação completa sobre o gerenciamento de chave de criptografia de dados usando Amazon Web Services KMS, consulte Gerenciar chaves de criptografia de dados e selecione a guia "Amazon Web Services KMS".

MongoDB A criptografia do lado do cliente do é compatível com o uso do Azure Key Vault KMS para criptografar e descriptografar chaves de criptografia de dados. Especificamente, o MongoDB transmite com segurança a chave de criptografia de dados para o Azure Key Vault para criptografia ou descriptografia usando a chave mestra do cliente (CMK) especificada. O CMK nunca sai do Azure Key Vault.

O mongosh suporta a especificação do Azure Key Vault como um KMS usando o construtor Mongo() usando as opções de configuração do KMS.

A configuração do acesso ao Azure Key Vault requer, no mínimo, um ID de locatário do Azure, uma ID de cliente e um segredo de cliente. A ID do inquilino deve ter a capacidade de executar as seguintes ações:

Observação

O MongoDB não oferece suporte à autenticação do certificado de cliente do Azure (também conhecida como autenticação mútua TLS).

Para obter a documentação completa sobre o gerenciamento de chave de criptografia de dados usando o Azure Key Vault, consulte Gerenciar chaves de criptografia de dados e selecione a guia "Azure Key Vault".

MongoDB Suporte à criptografia do lado do cliente do usando o GCP KMS para criptografar e descriptografar chaves de criptografia de dados. Especificamente, o MongoDB transmite com segurança a chave de encriptação de dados para o GCP KMS para criptografia ou descriptografia usando a chave mestra do cliente (CMK) especificada. O CMK nunca sai do GCP KMS.

mongosh suporta a especificação do Google Cloud Platform KMS como um KMS usando o construtor Mongo() usando as opções de configuraçãoKMS .

A configuração do acesso ao Google Cloud Platform KMS requer, no mínimo, um e-mail do Google Cloud Platform e a chave privada associada. A conta de e-mail do Google Cloud Platform deve ter as seguintes permissões IAM para a chave privada especificada:

  • cloudkms.cryptoKeyVersions.useToEncrypt

  • cloudkms.cryptoKeyVersions.useToDecrypt

Essas permissões do IAM estão incluídas em determinadas Google Cloud Platform funções predefinidas do ou pode ser incluído em uma Google Cloud Platform função personalizada do .

Para obter a documentação completa sobre o gerenciamento de chave de criptografia de dados usando Google Cloud Platform KMS, consulte Gerenciar chaves de criptografia de dados e selecione a guia "Google Cloud Platform KMS".

mongosh suporta a especificação de uma chave gerenciada localmente como um KMS utilizando o construtor Mongo() . A chave local deve ser uma string 96bytes de comprimento.

Para obter a documentação completa sobre o gerenciamento de chaves de criptografia de dados usando uma chave gerenciada localmente, consulte Gerenciar chaves de criptografia de dados e selecione a guia "Arquivo de chave local".

O cofre de chaves é uma coleção que armazena chaves de encriptação de dados para uso na criptografia no nível do campo no lado do cliente . As chaves de criptografia de dados são criptografadas usando uma chave mestra do cliente (CMK) gerenciada por meio de um Sistema de Gerenciamento de Chaves (KMS) compatível.

mongosh fornece métodos assistente para o gerenciamento de chave de criptografia de dados:

Caso de uso
Métodos de ajuda
Recuperando chaves de criptografia de dados
Criar ou modificar chaves de encriptação de dados
Removendo chaves de criptografia de dados

KeyVault.deleteKey()

Importante

A remoção de uma chave de criptografia de dados torna todos os campos criptografados usando essa chave de criptografia de dados como permanentemente ilegíveis.

Os aplicativos com acesso read à coleção de cofre de chaves podem recuperar chaves de criptografia de dados consultando a coleção. No entanto, somente aplicativos com acesso à CMK usada para criptografar uma chave de criptografia de dados podem usar essa chave para fins de criptografia ou descriptografia.

Por padrão, o MongoDB armazena a coleção de cofre de chave no cluster conectado. O MongoDB também suporta a especificação de um cluster remoto como o cofre de chaves. Os aplicativos devem ter acesso ao cluster de cofre de chave remota e ao cluster de conexão para executar operações de criptografia em nível de campo no lado do cliente .

As chaves de criptografia de dados têm a seguinte estrutura:

{
"_id" : UUID("<string>"),
"keyMaterial" : BinData(0,"<encrypted binary data string>"),
"creationDate" : ISODate("2019-08-20T15:45:02.575Z"),
"updateDate" : ISODate("2019-08-20T15:45:02.575Z"),
"status" : <int>,
"version" : NumberLong(0),
"masterKey" : {
"provider" : "<string>",
"key" : "<string>",
"region" : "<string>",
"endpoint" : "<string>"
},
"keyAltNames" : [
"<string>"
]
}

A criptografia no nível do campo no lado do cliente depende da singularidade dos valores keyAltNames . O método mongosh KeyVault.createKey() cria um índice único em keyAltNames se não existir. Os aplicativos podem usar o comando listIndexes na collection de cofre de chaves para verificar se o índice único existe. Se o índice único não existir, os aplicativos deverão criá-lo antes de executar o gerenciamento de chave de criptografia de dados.

Para obter a documentação completa sobre o gerenciamento de chave de criptografia de dados, consulte Gerenciar chaves de criptografia de dados.

Voltar

Criptografia explícita (manual) no nível do campo do lado do cliente