Limitações de CSFLE
Nesta página
Visão geral
Considere estas limitações e restrições antes de ativar o CSFLE. Algumas operações não são suportadas e outras se comportam de forma diferente.
Para limitações de compatibilidade, consulte Compatibilidade com CSFLE.
Suporte a operações de leitura e gravação
O mongod
armazena somente BinData
criptografado e aplica qualquer expressão de agregação ou operador de query especificando um campo criptografado 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 o 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 do lado do cliente rejeita operações de leitura ou gravação que retornariam resultados incorretos ou inesperados quando emitidos em um campo criptografado. Para obter a documentação completa, consulte Operações suportadas para criptografia automática.
Os aplicativos que executam a criptografia explícita (manual) podem fazer referência à página vinculada como orientação para emitir operações de leitura/gravação em campos criptografados.
Visualizações
Consultas em relação a visualizações em coleções que contêm valores criptografados com criptografia de nível de campo do lado do cliente podem retornar resultados inesperados ou incorretos se o pipeline de agregação de visualização subjacente ou as referências de consulta a campos criptografados. Ao criar uma visualização em uma collection contendo valores criptografados com criptografia de nível de campo do lado do cliente, evite operar em campo criptografados para mitigar o risco de resultados inesperados ou incorretos.
Embora os drivers compatíveis com 4.2+ configurados para criptografia automática no nível do Field do lado do cliente tenham operações suportadas para criptografia automática, para operações de leitura e gravação sem suporte, a biblioteca de suporte subjacente não pode fazer a introspecção do catálogo de exibição para identificar uma determinada collection como uma exibição. Portanto, a aplicação não pode confiar na validação automática da criptografia em nível de Field do lado do cliente para evitar query não suportadas em visualizações em collection com Field 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 do nível do Field no lado do cliente não respeita os agrupamentos especificados pelo usuário ou os agrupamentos padrão da collection. A criptografia no nível do campo oculta o valor do campo e impede o comportamento normal de agrupamento. Query sensíveis de agrupamento em campo criptografados podem retornar resultados inesperados ou incorretos.
Embora os drivers compatíveis com 4.2+ configurados para criptografia automática em nível de campo do lado do cliente tenham operações suportadas para criptografia automática , para operações de leitura e gravação sem suporte, a biblioteca de suporte subjacente não pode introspecção do catálogo da coleção para identificar o agrupamento padrão. Portanto, os aplicativos não podem confiar na validação da Criptografia de Nível de Campo do Lado do Cliente 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 pelo índice.
Embora os drivers compatíveis com 4.2+ configurados para criptografia automática no nível do campo do lado do cliente tenham operações suportadas para criptografia automática para operações de leitura e gravação sem suporte, a biblioteca de suporte subjacente não pode fazer a 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 do lado do cliente 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 os drivers compatíveis com 4.2+ configurados para criptografia automática no nível do campo do lado do cliente tenham operações suportadas para criptografia automática, 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 os campos principais do fragmento. Portanto, os aplicativos não podem confiar na validação automática da criptografia no nível do campo para evitar a criptografia de campos-chave de fragmento.
Suporte a consultas de leitura/gravação
A criptografia automática no nível do 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 Operações suportadas para criptografia automática.