Escolher uma abordagem de criptografia em uso
Nesta página
O MongoDB oferece duas abordagens para o criptografia em execução em execução : Queryable Encryption para Query e criptografia de nível de campo do lado do cliente (CSFLE). Ao usar qualquer abordagem, você também pode escolher entre criptografia explícita.
Sobre Queryable Encryption e CSFLE
Tanto a Queryable Encryption quanto a CSFLE (Criptografia de Nível de Campo do Lado do Cliente) permitem que um aplicativo cliente criptografe os dados antes de transportá-los pela rede. Os dados confidenciais são criptografados e descriptografados de forma transparente pelo cliente e só são comunicados de e para o servidor de forma criptografada.
Para comparar os recursos em detalhes, consulte Recursos de Queryable Encryption e Recursos de CSFLE.
Considerações
Ao implementar um aplicação que usa Queryable Encryption ou CSFLE, revise as considerações de segurança nesta seção.
Para ver as limitações de cada abordagem, consulte Limitações da Queryable Encryption ou Limitações do CSFLE.
Para compatibilidade de servidor MongoDB e versão do driver, consulte Compatibilidade.
Considerações de segurança
O CSFLE e a Queryable Encryption não oferecem nenhuma garantia contra invasores com acesso à sua chave mestra do cliente e às chaves de criptografia de dados.
O CSFLE e a Queryable Encryption não fornecem nenhuma garantia contra invasores com acesso arbitrário de gravação a collections contendo dados criptografados.
O MongoDB usa validação de esquema para impor a criptografia de campos específicos em uma coleção. Sem um esquema do lado do cliente, o cliente faz download do esquema do lado do servidor para que a coleção determine quais campos criptografar. Para evitar esse problema, use a validação de esquema do lado do cliente.
Como o CSFLE e a Queryable Encryption não fornecem um mecanismo para verificar a integridade de um esquema, depender de um esquema do lado do servidor significa confiar que o esquema do servidor não foi adulterado. Se um invasor comprometer o servidor, ele poderá modificar o esquema para que um campo criptografado anteriormente não seja mais rotulado para criptografia. Isso faz com que o cliente envie valores de texto simples para esse campo.
Para ver um exemplo de configuração do CSFLE para esquemas do lado do cliente e do lado do servidor, consulte a página Aplicação da criptografia em nível de campo do lado do servidor do CSFLE.
Uso de Queryable Encryption e CSFLE
Você pode usar a Queryable Encryption, a Client-Side Field Level Encryption ou ambas em seu aplicação. No entanto, você não pode usar as duas abordagens na mesma coleção.
Considere usar a Queryable Encryption nos seguintes cenários:
Você está desenvolvendo um novo aplicação e deseja usar os mais recentes progressos criptográficos do MongoDB.
Você espera que os usuários executem queries de intervalo, prefixo, sufixo ou substring em dados criptografados.
Seu aplicação pode usar uma única chave para um determinado campo em vez de exigir chaves separadas por usuário ou locatário.
Existem situações em que o CSFLE pode ser uma solução preferível:
Seu aplicação já usa CSFLE.
Você precisa usar chaves diferentes para o mesmo campo. Isso é comumente encontrado ao separar locatários ou usar chaves específicas do usuário.
Você precisa ser flexível com seu esquema de dados e potencialmente adicionar mais campos criptografados. Adicionar campos criptografados para a Queryable Encryption requer a reconstrução de collections e índices de metadados.
Consultando campos criptografados
Queryable Encryption oferece suporte a queries de igualdade e faixa em campos criptografados. O suporte para queries de prefixo, sufixo e substring com Queryable Encryption está em desenvolvimento.
A criptografia no nível do campo do lado do cliente oferece suporte a queries de igualdade em campos criptografados deterministicamente.
Para obter mais informações sobre os operadores de query, consulte Operadores de query compatíveis com Queryable Encryption e Operadores de query compatíveis com CSFLE. Para obter a lista completa de operadores de query do MongoDB , consulte Operadores de query e projeção.
Algoritmos de criptografia
O novo algoritmo de criptografia para Queryable Encryption usa criptografia aleatória com base em criptografia estruturada, que produz diferentes valores de saída criptografados a partir da mesma entrada.
Para obter informações detalhadas sobre a abordagem do MongoDB para a Queryable Encryption, consulte a Visão geral da Queryable Encryption e design e análise de um esquema de criptografia de banco de dados de documentos sem estado whitepapers.
O algoritmo de criptografia CSFLE suporta criptografia aleatória e criptografia determinística. No entanto, ele só suporta a consulta de campos criptografados deterministicamente. Com a criptografia determinística, um determinado valor de entrada sempre criptografa para o mesmo valor de saída.
Query privada
O MongoDB criptografa queries para Queryable Encryption e Client-Side Field Level Encryption para que o servidor não tenha informações sobre documentos de texto não criptografado ou valores de query. Com o Queryable Encryption, a query privada vai um passo além e edita logs e metadados para limpar informações sobre a existência da query. Isso garante privacidade e confidencialidade mais fortes.
Escolher entre criptografia automática e explícita
Como usar criptografia automática
Recomendamos a criptografia automática na maioria das situações, pois ela simplifica o processo de gravação de seu aplicação cliente . Com a criptografia automática, o MongoDB criptografa e descriptografa automaticamente campos em operações de leitura e gravação.
Usando criptografia explícita
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.
Para obter detalhes, consulte Criptografia explícita com Queryable Encryption ou Criptografia explícita com CSFLE.