Visão geral
A criptografia explícita fornece controle refinado sobre a segurança, ao custo de maior complexidade ao configurar collections e escrever código para os drivers do MongoDB. Com a criptografia explícita, você especifica como criptografar campos em seu documento para cada operação executada no banco de dados e inclui essa lógica em todo o aplicativo.
A criptografia explícita está disponível nos seguintes produtos MongoDB:
Servidor MongoDB Community
MongoDB Enterprise Advanced
MongoDB Atlas
Usar criptografia explícita
Criar uma Instância do ClientEncryption
ClientEncryption is an abstraction used across drivers and mongosh that encapsulates the Key Vault collection and KMS operations involved in explicit encryption.
Para criar uma instância do ClientEncryption , especifique:
Um objeto
kmsProvidersconfigurado com acesso ao provedor de KMS que hospeda sua chave mestra do clienteO namespace da sua coleção do Key Vault
Se você utilizar o servidor da comunidade MongoDB, configure a opção
bypassQueryAnalysisparaTrueUma instância do
MongoClientcom acesso à sua coleção do Key Vault
Para mais opções do ClientEncryption , consulte Opções do MongoClient para Queryable Encryption.
Criptografar campos em operações de leitura e gravação
Você deve atualizar as operações de leitura e gravação em todo o aplicativo para que ele criptografe os campos antes de executar operações de leitura e gravação.
Para criptografar campos, use o método encrypt de sua instância ClientEncryption . Especifique o seguinte:
O valor a ser criptografado
O ID do diretório de dados
O algoritmo
unindexed: para campos criptografados não consultáveis.indexed: suporta consultas de igualdade.range: suporta query de faixa.string: oferece suporte a query de prefixo, sufixo e substring.
Os parâmetros para o algoritmo escolhido. A criptografia explícita não usa um esquema de criptografia, portanto, você deve passar esses parâmetros em cada chamada para
encrypt, tanto para operações de leitura quanto de gravação.As operações de leitura devem especificar um queryType que corresponda ao algoritmo especificado.
Observação
Os algoritmos indexed, range e string exigem um índice no servidor, que é criado quando você especifica a opção encryptedFields durante db.createCollection().
Algoritmos e QueryTypes
algoritmo | queryType (operações de leitura) | Parâmetros Adicionais |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Para operações de gravação, você pode especificar as opções prefix e suffix na mesma chamar para índice um campo para ambos os tipos de query. Você não pode definir substring junto com prefix ou suffix.
Observação
A partir do MongoDB 9.0, os tipos de query prefixPreview, suffixPreview e substringPreview que usam o algoritmo text foram descontinuados e removidos. Use os tipos de query prefix, suffix ou substring com o algoritmo string em vez disso.
Descriptografia automática
Para descriptografar campos automaticamente, configure sua instância do MongoClient como segue:
Especifique um objeto
kmsProvidersEspecifique sua coleção do Key Vault
Se você utilizar o servidor da comunidade MongoDB, configure a opção
bypassQueryAnalysisparaTrue
Observação
Descriptografia automática no MongoDB Community servidor
A descriptografia automática está disponível no MongoDB Community Server. A criptografia automática requer MongoDB Enterprise ou MongoDB Atlas.
Aplicação de criptografia em nível de campo no lado do servidor
Etapas para impor a criptografia de campos específicos em uma coleção.
Se sua instância do MongoDB impor a criptografia de campos específicos, qualquer cliente que execute a Queryable Encryption com criptografia explícita deverá criptografar esses campos conforme especificado. Para saber como configurar a aplicação da Queryable Encryption no lado do servidor, consulte Campos criptografados e queries ativadas.
Saiba mais
Para saber mais sobre coleções de Key Vault, chaves de criptografia de dados e chaves mestras de clientes, consulte Chaves de criptografia e Key Vaults.
Para aprender mais sobre KMS provedores e kmsProviders objetos, consulte KMS Provedores.