Visão geral
Você pode usar o driver Scala para criptografar campos específicos do documento usando um conjunto de recursos chamado criptografia em uso. A criptografia em uso permite que seu aplicação criptografe os dados antes de enviá-los para o MongoDB e consulte documentos com campos criptografados.
Aviso
MongoDB 8.2 Problema conhecido
A versão 8.2.0 do mongocryptd pode não ser executada no Windows. Esse bug afeta a criptografia em execução com o driver se você especificar o argumento --logpath NUL ao iniciar mongocryptd.
Para saber mais sobre esse problema e como resolvê-lo, consulte Problemas conhecidos no MongoDB 8.2 Notas de versão.
O driver Scala usa a biblioteca de criptografia mongodb-crypt para criptografia em uso. Esta versão do driver é compatível com mongodb-crypt v5.12.0.
Selecione a partir das seguintes guias Maven e sbt para ver como adicionar a dependência do mongodb-crypt ao seu projeto utilizando o gerenciador especificado:
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-crypt</artifactId> <version>5.12.0</version> </dependency> </dependencies>
libraryDependencies += "org.mongodb" % "mongodb-crypt" % "5.12.0"
A criptografia em uso impede que usuários não autorizados visualizem dados em texto simples à medida que são enviados ao MongoDB ou enquanto estão em um banco de dados criptografado. Para ativar a Criptografia em execução em uma aplicação e autorizá-la a descriptografar dados, você deve criar chaves de encriptação que somente sua aplicação possa acessar. Somente aplicativos que têm acesso às suas chaves de criptografia podem acessar os dados descriptografados em texto simples. Se um invasor obtiver acesso ao banco de dados, ele só poderá ver os dados de texto cifrado criptografados porque não tem acesso às chaves de encriptação.
Você pode usar criptografia em uso para criptografar campos em seus documentos MongoDB que contêm os seguintes tipos de dados confidenciais:
Números de cartão de crédito
Endereços
Informação de saúde
Informações financeiras
Qualquer outra informação sensível ou pessoalmente identificável (PII)
O MongoDB oferece os seguintes recursos para habilitar a criptografia em uso:
Queryable Encryption
Queryable Encryption (QE) é um recurso de criptografia em uso que oferece suporte à query de valores de campo criptografados de forma exclusiva, incluindo queries de igualdade, intervalo, prefixo, sufixo e substring. O suporte a queries de intervalo requer o MongoDB Server 8.0 ou posterior. O suporte a prefixos, sufixos e queries de substring requer o MongoDB Server 9.0 ou posterior.
Para saber mais sobre Queryable Encryption, consulte Queryable Encryption no manual do Servidor.
Criptografia no nível de campo no lado do cliente
A criptografia no nível do campo do lado do cliente (CSFLE) oferece suporte à pesquisa de campos criptografados em busca de igualdade. Versão do MongoDB Server 4.2 introduziu o CSFLE.
Ao contrário do QE, o CSFLE exige que você selecione um algoritmo de criptografia para cada campo, e essa opção determina se você pode consultar o campo. A criptografia determinística sempre produz o mesmo valor de saída para o mesmo valor de entrada. Como os valores correspondentes têm a mesma aparência após a criptografia, você pode executar queries de igualdade nesses campos. A criptografia aleatória produz um valor de saída diferente cada vez que criptografa o mesmo valor de entrada. Os drivers podem descriptografar esses campos, mas você não pode consultá-los.
A criptografia determinística troca alguma confidencialidade pelo suporte a consultas. Quando um campo criptografado tem baixa cardinalidade, um invasor pode comparar com que frequência cada valor criptografado aparece e inferir os valores originais. Essa técnica é chamada de análise de frequência. Para proteger os campos que você não executa consulta, use criptografia aleatória.
Dica
Para saber mais sobre esses conceitos, consulte as seguintes entradas na Wikipedia:
Para saber mais sobre CSFLE, consulte CSFLE no manual do servidor.