Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Limitaciones de Queryable Encryption

Tenga en cuenta estas limitaciones y restricciones antes de habilitar el cifrado consultable. Algunas operaciones no son compatibles y otras se comportan de forma diferente.

Para conocer las limitaciones de compatibilidad, por favor lea Compatibilidad.

Advertencia

El cifrado consultable defiende contra la exfiltración de datos, no contra adversarios con acceso persistente a un entorno o aquellos que pueden recuperar instantáneas de bases de datos y transcripciones/registros de consultas correspondientes.

Al usar el Cifrado Consultable, las consultas de igualdad y de rango ofrecen una seguridad similar contra atacantes con instantáneas de bases de datos. Sin embargo, un atacante con acceso tanto a las instantáneas de bases de datos como a la información de las consultas queda fuera del alcance de las garantías de seguridad del Cifrado Consultable. Esto es especialmente cierto para las consultas de rango, incluso si solo se recupera una pequeña cantidad de transcripciones o registros de consultas.6.1 Consulte: Consultas de rango en el modelo persistente. en el documento general para obtener más detalles.

Al habilitar Queryable Encryption en una colección, se eliminan los campos de algunos comandos de diagnóstico y se omiten algunas operaciones del registro de las query. Esto limita los datos disponibles para los ingenieros de soporte de MongoDB, especialmente cuando analizan el rendimiento de las query. Para medir el impacto de las operaciones en las colecciones cifradas, utiliza una herramienta de supervisión de rendimiento de aplicaciones de terceros para recopilar métricas.

Para obtener más detalles, consulte la sección Redacción de esta página.

Queryable Encryption admite un subconjunto de comandos, operadores de consulta, operadores de actualización, etapas de agregación y expresiones de agregación. Para la lista de operaciones admitidas, consulte Operaciones admitidas para Queryable Encryption.

Ejecuta manualmente la compactación de la colección de metadatos cuando tus colecciones de metadatos superen los 1 GB. La compactación reduce el tamaño de las colecciones de metadatos asociadas con campos cifrados, y mejora el rendimiento.

No modifique el encryptedFieldsMap pasado a su MongoClient. Esto podría provocar un comportamiento inesperado e incorrecto al realizar consultas.

El cifrado consultable cifra el conjunto de campos de la configuración encryptedFieldsMap que se pasa al MongoClient constructor. Si se especifica un campo que antes era de texto sin formato en la encryptedFieldsMap configuración y que existe en los documentos de la colección, solo se podrá consultar dicho campo en los documentos insertados después de actualizar la encryptedFieldsMap configuración.

Por ejemplo, considera una base de datos en la que se han insertado documentos con un campo en texto plano streetAddress. Agregar este campo a encryptedFieldsMap y realizar las siguientes inserciones insertará el valor cifrado de streetAddress en la base de datos. El controlador enviará futuras consultas para un streetAddress específico como BinData. Como resultado, los valores en texto sin formato en los documentos originales nunca coincidirán con consultas futuras.

No se puede configurar Queryable Encryption para cifrar el campo _id porque depende del valor autogenerado por MongoDB.

No se puede cambiar el nombre de un campo cifrado. Por ejemplo, si se especifica ssn como campo a cifrar, no se puede $rename cambiar el nombre del campo taxPayerID a.

El tipo de query que especifiques para un campo al crear la colección en encryptedFieldsMap es inmutable. No puede activar nuevos tipos de consulta en un campo existente y no puede cambiar el tipo de consulta existente.

Para mejorar la seguridad, el cifrado consultable elimina campos de algunos comandos de diagnóstico en colecciones cifradas y omite ciertas operaciones del registro de consultas. Una colección cifrada es cualquier colección con la opción encryptedFields.

Las operaciones CRUD siguientes se omiten del registro de la consulta de operaciones lentas y del perfilador de base de datos system.profile colección cuando las ejecutas en una colección cifrada.

El collStats comando y $collStats la etapa de agregación:

  • Omit "queryExecStats"

  • Omit "latencyStats"

  • Redacte "WiredTiger", si está presente, para incluir solo el campo url.

El currentOp comando y $currentOp la etapa de agregación:

  • Omitir todos los campos después de "command".

  • Redactar "command" para incluir solo el primer elemento, $comment, y $db.

El comando top solo devuelve el nombre de la colección de las colecciones cifradas.

La etapa de agregación $planCacheStats omite operaciones contra colecciones cifradas, aunque las operaciones se almacenan en caché como de costumbre.

  • Se admiten sets de réplicas y clústeres.

  • Las implementaciones autónomas no están soportadas

  • Las lecturas secundarias no son compatibles

  • Las colecciones de metadatos no deben fragmentarse

  • Las claves de fragmento no deben ser campos cifrados

  • No se puede utilizar el cifrado a nivel de campo del lado del cliente con el cifrado consultable en la misma colección.

    • El cifrado consultable no admite la migración desde colecciones cifradas con cifrado de nivel de campo del lado del cliente. Debe descifrar sus documentos e insertarlos uno por uno.

    • Queryable Encryption no admite la migración automática desde una colección no encriptada. Debe insertar los documentos uno por uno.

  • El cifrado consultable solo es compatible con colecciones nuevas. No se puede añadir ni eliminar el cifrado consultable de colecciones existentes.

  • No se puede cambiar el nombre de una colección con campos cifrados.

  • No puede especificar jsonSchema en db.createCollection() al crear una colección de Queryable Encryption si el jsonSchema contiene la palabra clave encrypt.

  • Queryable Encryption no admite Vistas, colecciones de series de tiempo o colección con tamaño fijo.

  • El cifrado consultable no admite índices TTL ni índices únicos.

  • No se puede deshabilitar la validación de jsonSchema.

  • Cuando una colección utiliza la opción encryptedFields:

    • No se puede establecer validationLevel en none.

    • No se puede establecer validationAction en warn.

  • Descartar colecciones de un MongoClient que no está configurado para Cifrado Interrogable no descarta las colecciones de metadatos asociadas. mongod registra una advertencia si elimina una colección con campos cifrados antes de eliminar las colecciones de metadatos.

Tip

Al eliminar una colección con un MongoClient configurado para cifrado consultable, los controladores compatibles también eliminan las colecciones de metadatos asociadas.

Siempre cree explícitamente cualquier colección que utilice Queryable Encryption. La creación implícita de colecciones no crea los índices necesarios ni colecciones de metadatos, lo que resulta en un rendimiento deficiente en las consultas.

El cifrado consultable no admite el cifrado automático en campos dentro de una matriz de documentos.

Las aplicaciones no pueden confiar en la validación de cifrado automático para evitar consultas no compatibles en vistas de colecciones con campos cifrados.

Las consultas sobre vistas en colecciones que contienen valores cifrados con Queryable Encryption pueden devolver resultados inesperados o incorrectos si el pipeline de agregación de la vista subyacente o la query refiere a campos cifrados. Si creas una vista en una colección que contiene valores cifrados con Queryable Encryption, evita operar en campos cifrados para mitigar el riesgo de resultados inesperados o incorrectos.

Para más información sobre las vistas, consulte Vistas.

Queryable Encryption ignora tanto las intercalaciones especificadas por el usuario como las intercalaciones por defecto de la colección. El cifrado oculta el valor del campo e impide el comportamiento normal de la intercalación. Las consultas sensibles a la intercalación en campos cifrados pueden arrojar resultados inesperados o incorrectos.

Para obtener más información sobre las intercalaciones, consulte Documento de intercalación.

Los drivers compatibles con Queryable Encryption tienen una lista de operaciones admitidas para el cifrado automático. Para operaciones de lectura y guardar no soportadas, la librería de soporte subyacente no puede analizar el catálogo de colecciones para identificar la intercalación por defecto. Por lo tanto, las aplicaciones no pueden confiar en la validación de Queryable Encryption para evitar la consulta de campos cifrados con valores por defecto de intercalación.

No cree índices en campos cifrados. La creación de índices en campos cifrados que utilizan Queryable Encryption afecta negativamente el rendimiento. En su lugar, puedes crear un índice en el campo __safeContent__ para admitir consultas en campos cifrados.

Los índices únicos no pueden garantizar la unicidad si la clave del índice especifica algún campo cifrado.

Queryable Encryption siempre genera un valor cifrado diferente, incluso para la misma entrada. El servidor considera cada valor cifrado como único, incluso aunque el valor descifrado pueda no serlo. Esto significa que, incluso si una colección utiliza una restricción única impuesta por un índice en los campos, la colección aún puede contener múltiples documentos con valores de texto sin formato duplicados para ese campo.

Los drivers compatibles con Queryable Encryption configurados para el cifrado automático admiten algunas operaciones para el cifrado automático. Para las operaciones de lectura y guardado no compatibles, la librería subyacente no puede analizar el catálogo de índices para identificar un campo dado como único. Las aplicaciones no pueden depender de la validación de cifrado automático para evitar violaciones de restricciones de unicidad en campos cifrados aleatoriamente.

Volver

Compatibilidad