Suporte a operações de leitura e gravação
O mongod
somente armazena BinData
criptografado e aplica qualquer expressão de agregação ou operador de query que especifique um campo codificado em relação ao valor BinData
. Embora a expressão ou operador possa suportar campos BinData
, o valor resultante pode ser incorreto ou inesperado quando comparado à emissão da mesma expressão ou operador em relação ao valor descriptografado. O mongod
lançará um erro se a expressão ou operador não suportar valores BinData
.
Por exemplo, considere um número inteiro codificado deterministicamente Salary
. Uma query filtra documentos em que Salary
é maior que 100000
. O aplicativo criptografa explicitamente (manualmente) o valor da query usando criptografia determinística antes de emitir a query. O mongod
compara o valor BinData
criptografado de 100000
com os valores BinData
criptografados armazenados em cada documento. Embora a operação retorne com sucesso, a comparação dos valores BinData
pode retornar um resultado diferente da comparação dos valores inteiros descriptografados.
A criptografia automática no nível do campo no lado do cliente rejeita operações de leitura ou gravação que retornariam resultados incorretos ou inesperados quando emitidas em um campo criptografado. Para obter a documentação completa, consulte Suporte a leitura/gravação com criptografia automática em nível de campo. Os aplicativos que executam criptografia explícita (manual) podem fazer referência à página vinculada como orientação para a emissão de operações de leitura/gravação em campos criptografados.
Visualizações
Queries em visualizações em coleções contendo valores criptografados em nível de campo no lado do cliente podem retornar resultados inesperados ou incorretos se o pipeline de agregação da visualização subjacente ou a query fizer referência a campos criptografados. Ao criar uma visualização em uma collection que contenha valores criptografados no nível do campo do lado do cliente, evite operar em campos criptografados para mitigar o risco de resultados inesperados ou incorretos.
Embora 4.2+ drivers compatíveis configurados para criptografia automática em nível de campo do lado do cliente tenham validação para operações de leitura e gravação não suportadas, a biblioteca de suporte subjacente não pode fazer a introspecção do catálogo de visualização para identificar uma determinada collection como uma visualização. Portanto, os aplicativos não podem confiar na validação automática da criptografia no nível do campo para evitar queries não permitidas em relação a visualizações de coleções com campos criptografados.
Para aplicativos que usam criptografia explícita (manual) para consultar uma visualização em uma coleção contendo valores criptografados, considere a possibilidade de construir a query usando apenas operadores de query com comportamento normal conhecido quando emitido em campos criptografados.
Agrupamentos
A criptografia no nível do campo no lado do cliente não respeita os agrupamentos especificados pelo usuário ou os agrupamentos padrão da coleção. A criptografia no nível do campo e impede o comportamento normal do agrupamento. Queries sensíveis de agrupamento em campos criptografados podem retornar resultados inesperados ou incorretos.
Embora 4.2+ drivers compatíveis configurados para criptografia automática em nível de campo do lado do cliente tenham validação para operações de leitura e gravação não suportadas, a biblioteca de suporte subjacente não pode introspecção do catálogo de coleções para identificar o agrupamento padrão. Portanto, os aplicativos não podem confiar na validação automática da criptografia em nível de campo para evitar a query em campos criptografados com padrões de agrupamento.
Unique Indexes
Unique indexes não pode garantir exclusividade se a chave de índice especificar quaisquer campos criptografados aleatoriamente .
Os campos criptografados usando o algoritmo aleatório sempre produzem um valor criptografado diferente de acordo com uma entrada específica. O servidor considera cada valor criptografado exclusivo, embora o valor descriptografado em si não seja exclusivo. A collection pode, portanto, conter vários documentos com valores descriptografados duplicados para um campo com uma restrição exclusiva imposta por índice.
Embora 4.2+ drivers compatíveis configurados para criptografia automática em nível de campo do lado do cliente tenham validação para operações de leitura e gravação não suportadas, a biblioteca de suporte subjacente não pode introspecção do catálogo de índices para identificar um determinado campo como exclusivo. Portanto, os aplicativos não podem confiar na validação automática da criptografia em nível de campo para evitar violações de restrições exclusivas em campos criptografados aleatoriamente.
Chave de fragmento
Especificar uma chave de shard em campos criptografados ou criptografar campos de uma chave de shard existente pode resultar em comportamento de fragmentação inesperado ou incorreto.
Embora 4.2+ drivers compatíveis configurados para criptografia automática em nível de campo do lado do cliente tenham validação para operações de leitura e gravação não suportadas, a biblioteca de suporte subjacente não pode introspecção dos metadados do catálogo de fragmentação para identificar campos de chave de fragmento. Portanto, os aplicativos não podem confiar na validação automática da criptografia no nível do campo para evitar a criptografia dos campos de chave de fragmento.
Suporte a consultas de leitura/gravação
A criptografia automática em nível de campo do lado do cliente oferece suporte a um subconjunto de comandos, operadores de query, operadores de atualização, estágios de agregação e expressões de agregação . Para obter a documentação completa, consulte Suporte a leitura/gravação com criptografia automática em nível de campo.