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 é uma abstração usada entre drivers e mongosh que encapsula a Key Vault Collection e as operações KMS envolvidas na criptografia explícita.
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 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 algoritmo usado:
Indexed,UnindexedouRangeO ID do diretório de dados
O fator de contenção (se você estiver usando o algoritmo
IndexedouRange)Se você estiver executando uma operação de leitura utilizando o algoritmo
IndexedouRange, defina o tipo de query definido para seu campo.As opções
rangemin, max (se você estiver usando o algoritmoRange)
Observação
Tipos de query
O tipo de query se aplica somente a operações de leitura.
Para saber mais sobre os tipos de query, consulte Tipos de query suportados e comportamento.
Escolha do algoritmo
Use o algoritmo Indexed ou Range se você especificar um queryType no campo.
Indexed suporta queries de igualdade. Range suporta queries de intervalo. Os campos Indexed e Range exigem um índice no servidor. O índice é criado especificando a opção encryptedFields em db.createCollection().
Observação
A partir do MongoDB 8.0, o algoritmo rangePreview Queryable Encryption foi preterido e removido. Em vez disso, use o algoritmo range.
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.
Indexed e Range campos exigem um índice no servidor. O índice é criado especificando a opção encryptedFields em db.createCollection().
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 saber mais sobre provedores de KMS e objetos kmsProviders , consulte Provedores de KMS.