Overview
Tenga en cuenta estas limitaciones y restricciones antes de habilitar CSFLE. Algunas operaciones no son compatibles y otras se comportan de manera diferente.
Para conocer las limitaciones de compatibilidad, consulta Compatibilidad CSFLE.
Soporte para operaciones de lectura y escritura
La mongod solo almacena BinData cifrados y aplica cualquier expresión de agregación u operador del query que especifique un campo cifrado con el valor de BinData. Mientras que la expresión u operador puede soportar BinData campos, el valor resultante puede ser incorrecto o inesperado en comparación con la emisión de esa misma expresión u operador contra el valor desencriptado. El mongod lanza un error si la expresión u operador no admite valores BinData.
Por ejemplo, considera un entero Salary cifrado de forma determinista. Una consulta filtra documentos donde Salary es mayor que 100000. La aplicación cifra explícitamente (manualmente) el valor de query utilizando cifrado determinista antes de emitir la query. El mongod compara el valor cifrado de BinData de 100000 con los valores cifrados de BinData almacenados en cada documento. Aunque la operación se devuelve exitosamente, la comparación de los valores BinData puede devolver un resultado diferente que la comparación de los valores enteros descifrados.
El cifrado automático a nivel de campo del lado del cliente rechaza las operaciones de lectura o escritura que generarían resultados incorrectos o inesperados al ejecutarse en un campo cifrado. Para obtener la documentación completa, consulte Operaciones compatibles con el cifrado automático.
Las aplicaciones que realicen cifrado explícito (manual) pueden consultar la página enlazada como orientación para realizar operaciones de lectura y guardar en campos cifrados.
Vistas
Las consultas realizadas sobre vistas en colecciones que contienen valores cifrados mediante cifrado a nivel de campo del lado del cliente pueden arrojar resultados inesperados o incorrectos si el pipeline de agregación subyacente de la vista o la query hacen referencia a campos cifrados. Si se crea una vista en una colección que contiene valores cifrados con cifrado a nivel de campo del lado del cliente, evita operar con campos cifrados para mitigar el riesgo de resultados inesperados o incorrectos.
Mientras que los controladores compatibles con 4.2+ configurados para cifrado a nivel de campo del Lado del Cliente tienen operaciones compatibles para cifrado automático, para operaciones de lectura y escritura no compatibles, la librería de soporte subyacente no puede inspeccionar el catálogo de vistas para identificar una colección dada como una vista. Por lo tanto, las aplicaciones no pueden confiar en la validación automática del cifrado a nivel de campo del lado del cliente para evitar queries no admitidas contra vistas en colecciones con campos cifrados.
Para aplicaciones que utilizan cifrado explícito (manual) para consultar una vista sobre una colección que contiene valores cifrados, considere construir el query utilizando solo operadores del query con comportamiento normal conocido cuando se emita contra campos cifrados.
Intercalación
El cifrado de nivel de campo del lado del cliente no respeta las reglas de intercalación especificadas por el usuario ni las intercalaciones predeterminadas de la colección. El cifrado a nivel de campo oculta el valor del campo e impide el comportamiento normal de intercalación. Las queries que dependen de la intercalación en campos cifrados pueden devolver resultados inesperados o incorrectos.
Mientras que los controladores compatibles con la versión 4.2+ configurados para el cifrado automático a nivel de campo del lado del cliente tienen operaciones compatibles para el cifrado automático, para las operaciones de lectura y escritura no compatibles, la librería de soporte subyacente no puede examinar el catálogo de colecciones para identificar la intercalación por defecto. Por lo tanto, las aplicaciones no pueden depender de la validación de encriptación a nivel de campo del lado del cliente para evitar consultas sobre campos encriptados con valores predeterminados de colación.
Unique Indexes
Unique indexes no puede garantizar la unicidad si la clave del índice especifica algún campo cifrado aleatoriamente.
Los campos cifrados usando el algoritmo aleatorio siempre producen un valor cifrado diferente dado un argumento específico. El servidor considera cada valor cifrado como único incluso si el valor descifrado en sí mismo no lo sea. Por lo tanto, la colección puede contener varios documentos con valores descifrados duplicados para un campo con una restricción única impuesta por índice.
Mientras que los drivers compatibles con la versión 4.2+ configurados para el cifrado a nivel de campo del lado del cliente han admitido operaciones para el cifrado automático para operaciones de lectura y escritura no soportadas, la librería de soporte subyacente no puede inspeccionar el catálogo de índices para identificar un campo dado como único. Por lo tanto, las aplicaciones no pueden confiar en la validación automática de cifrado a nivel de campo del lado del cliente para evitar violaciones de la restricción de unicidad en campos cifrados aleatoriamente.
clave de partición
Especificar una clave de partición en campos cifrados o cifrar campos de una clave de partición existente puede resultar en un comportamiento de particionado inesperado o incorrecto.
Si bien los controladores compatibles con la versión 4.2 y posteriores, configurados para el cifrado automático a nivel de campo del lado del cliente, admiten operaciones de cifrado automático, en el caso de operaciones de lectura y escritura no compatibles, la biblioteca de soporte subyacente no puede introspeccionar los metadatos del catálogo de fragmentación para identificar los campos de clave de fragmentación. Por lo tanto, las aplicaciones no pueden confiar en la validación automática del cifrado a nivel de campo para evitar el cifrado de los campos de clave de fragmentación.
Soporte de consultas de lectura y escritura
El cifrado automático a nivel de campo del lado del cliente admite un subconjunto de comandos, operadores de consulta, operadores de actualización, etapas de agregación y expresiones de agregación. Para obtener la documentación completa, consulte Operaciones compatibles con el cifrado automático.