Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

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

Nesta página

  • Visão geral
  • Habilitando a criptografia explícita em nível de campo do lado do cliente
  • Aplicação de criptografia em nível de campo no lado do servidor

MongoDB 4.2+ drivers compatíveis, mongosh e o MongoDB 4.2 ou posterior mongo suporte de shell explicitamente criptografado ou descriptografando campos com uma chave de criptografia de dados e algoritmo de criptografia específicos.

Os aplicativos devem modificar qualquer código associado à construção de operações de leitura e gravação para incluir lógica de criptografia/descriptografia por meio da biblioteca de criptografia de drivers. A aplicação é responsável por selecionar o diretório de dados apropriado para criptografia/descriptografia por operação.

mongosh fornece os seguintes métodos para executar criptografia explícita e descriptografia:

MongoDB 4.2+ drivers compatíveis têm sintaxe específica para executar criptografia explícita no nível do campo do lado do cliente. Consulte a Tabela de compatibilidade de drivers para obter uma lista completa dos 4.2+ drivers compatíveis com suporte para criptografia de nível de campo do lado do cliente. Consulte a documentação do driver de sua preferência para obter instruções específicas sobre como executar a criptografia no nível do campo do lado do cliente.

A seguinte operação emitida de mongosh criptografa explicitamente o campo taxid como parte de uma operação de gravação.

clientEncryption = encryptedClient.getClientEncryption()
db.getSiblingDB("hr").getCollection("employees").insertOne({
"name" : "J. Doe",
"taxid" : clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
)
})

A seguinte operação emitida de mongosh criptografa explicitamente o campo taxid como parte de uma operação de leitura:

encrypt = encryptedClient.getClientEncryption()
db.getSiblingDB("hr").getCollection("employees").findOne({
"taxid" : clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
)
})

Essas operações pressupõem que a configuração do reconhecimento de data center especificou um cofre de chaves e um KMS com acesso ao diretório de dados especificado e à chave mestra do cliente associada.

Para operações de leitura que retornam campos criptografados, o driver/shell descriptografa automaticamente os valores criptografados somente se o driver/shell tiver sido configurado com acesso às chaves usadas para proteger esses valores.

Cada MongoDB 4 oficial . O driver compatível com 2+ introduz uma nova funcionalidade para oferecer suporte à criptografia em nível de campo do lado do cliente e ao gerenciamento de chaves de criptografia de dados. Consulte a documentação do driver de sua preferência para obter instruções específicas do idioma sobre a implementação explícita da criptografia no nível do campo do lado do cliente.

mongosh adiciona uma opção adicional ao método Mongo() para instanciar uma conexão de banco de dados com criptografia explícita de nível de campo no lado do cliente. Para obter um exemplo completo, consulte Conectar-se a um cluster com criptografia do lado do cliente ativada.

A aplicação deve especificar os seguintes componentes ao instanciar a conexão do reconhecimento de data center para habilitar a criptografia explícita no nível do campo do lado do cliente:

  • Um cofre de chaves de criptografia de dados. O cofre de chaves pode residir em um cluster MongoDB remoto ou no cluster MongoDB armazenando dados criptografados do lado do cliente.

  • Um provedor de serviço de gerenciamento de chaves (KMS) compatível usado para gerenciar chaves mestras do cliente (CMK). O MongoDB criptografa todas as chaves de criptografia de dados usando a chave mestra do cliente especificada antes de armazená-las no cofre de chaves, deixando apenas os metadados descriptografados.

    4.2+ drivers compatíveis, mongosh e o MongoDB 4.2 ou shell mongo legado posterior precisa acessar o KMS para criptografar e descriptografar campos protegidos ou para criar novas chaves de criptografia de dados.

O MongoDB 4. O servidor 2 suporta o uso da validação de esquema para impor a criptografia de campo específicos em uma collection. Se a validação da collection $jsonSchema exigir criptografia para um campo, os clientes que executam a criptografia explícita (manual) no nível do campo deverão encrypt esse campo.

Para obter a documentação completa sobre a imposição de criptografia em nível de campo no lado do cliente do lado do servidor, consulte Aplicar esquema de criptografia em nível de campo do lado do cliente.

← mongocryptd