Menu Docs
Página inicial do Docs
/
Manual 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, mongoshe shell do MongoDB { legado } ou posterior 4.2 mongosuportam campos de criptografia ou descriptografia explícita com uma chave de criptografia de dados específica e algoritmo de criptografia.

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 :

Os drivers compatíveis com o MongoDB 4.2+ têm sintaxe específica para executar a criptografia explícita no nível do campo no lado do cliente . Consulte a Tabela de compatibilidade de driver para obter uma lista completa de drivers compatíveis com 4.2+ 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 da conexão do banco de dados de dados especificou um cofre de chaves e KMS com acesso à chave de chave de criptografia de dados especificada 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 driver compatível com o MongoDB 4.2+ introduz uma nova funcionalidade para oferecer suporte à criptografia no nível do 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.

Os aplicativos devem especificar os seguintes componentes ao instanciar a conexão do banco de dados para habilitar a criptografia explícita no nível do campo do lado do cliente:

  • Um cofre de chaves 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 KMS (KMS) suportado usado para gerenciar chaves mestras do cliente (CMK). O MongoDB criptografa todas as chaves de criptografia de dados usando a CMK especificada antes de armazená-las no cofre de chaves, deixando apenas metadados não criptografados.

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

O servidor MongoDB 4.2 suporta o uso da validação de esquema para impor a criptografia de campos específicos em uma coleção. Se a validação da coleção $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 lado do cliente no lado do servidor, consulte Aplicar esquema de criptografia no nível do campo.

Voltar

mongocryptd