Esta página documenta los comandos específicos, los operadores de consulta, los operadores de actualización, las etapas de agregación y las expresiones de agregación compatibles con los controladores compatibles con Queryable Encryption.
Nota
Característica de la empresa
El cifrado automático está disponible en MongoDB Enterprise y MongoDB Atlas
Operaciones usando BinData
MongoDB almacena los campos cifrados de Queryable Encryption como un BinData blob. Las operaciones de lectura y escritura emitidas contra el BinData valor cifrado pueden tener un comportamiento inesperado o incorrecto en comparación con la ejecución de la misma operación contra el valor descifrado. Ciertas operaciones tienen compatibilidad estricta con el tipo BSON, por lo que ejecutarlas contra un BinData valor devuelve un error. Los controladores oficiales compatibles con Queryable Encryption analizan las operaciones de lectura y escritura en busca de operadores o expresiones que no admiten BinData valores o que tienen un comportamiento anormal al ejecutarse contra BinData valores.
Las aplicaciones que utilizan cifrado explícito pueden usar esta página como guía para realizar operaciones de lectura y escritura en campos cifrados.
Comandos de lectura y escritura admitidos
Los controladores compatibles con cifrado consultable admiten el cifrado automático con los siguientes comandos:
Para cualquier comando admitido, los controladores devuelven un error si el comando utiliza un operador, una etapa de agregación o una expresión de agregación no compatible. Para ver una lista completa de los operadores, etapas y expresiones compatibles, consulta las siguientes secciones:
Los siguientes comandos no requieren cifrado automático. Los controladores oficiales configurados para cifrado automático pasan estos comandos directamente mongod a:
Emitir cualquier otro comando a través de un controlador compatible configurado para el cifrado automático devuelve un error.
| [1] | Si bien el cifrado automático no cifra el comando getMore, la respuesta al comando puede contener valores de campo cifrados.
|
Para las transacciones de clúster fragmentadas que utilizan cifrado consultable, debe establecer readConcern snapshoten.
Operadores de consulta admitidos
Los drivers configurados para el cifrado automático admiten los siguientes operadores del query cuando se emiten contra un campo consultable cifrado:
Importante
Soporte de comparación
La comparación de un campo cifrado con otro campo cifrado fallará.
{$expr: {$eq: ["$encrypted1", "$encrypted2"]}}
Se admite la comparación de un campo cifrado con un valor de texto sin formato.
{$expr: {$eq: ["$encrypted1", "plaintext_value"]}}
Las consultas que comparan un campo cifrado con null o una expresión regular siempre arrojan un error, incluso si se utiliza un operador de consulta compatible.
El operador tiene un comportamiento normal cuando se emite contra campos $exists cifrados.
Las queries que especifican cualquier otro operador del query en un campo cifrado arrojan un error. Los siguientes operadores del query lanzarán un error incluso si no se ejecutan contra un campo cifrado cuando se use un MongoClient configurado para Queryable Encryption:
Operadores de actualización compatibles
Los controladores configurados para el cifrado automático admiten los siguientes operadores de actualización cuando se emiten contra campos cifrados:
Las actualizaciones que especifican cualquier otro operador de actualización contra un campo cifrado devuelven un error.
Las operaciones de actualización con el siguiente comportamiento arrojan un error incluso si se utiliza un operador compatible:
La operación de actualización produce una matriz dentro de una ruta cifrada.
La operación de actualización utiliza la sintaxis de expresión de agregación.
Para las operaciones de actualización que especifican un filtro de consulta en campos cifrados, el filtro de consulta debe utilizar únicamente operadores admitidos en esos campos.
Actualizaciones de estilo reemplazo
Se admiten actualizaciones de estilo de reemplazo; sin embargo, si el documento de reemplazo contiene un Timestamp(0,0) dentro de un campo cifrado de nivel superior, el cifrado consultable generará un error. El (0,0) valor indica que mongod debe generar la marcamongod de tiempo. no puede generar campos cifrados.
Operaciones de inserción no admitidas
Los controladores compatibles configurados para el cifrado automático no admiten comandos de inserción con el siguiente comportamiento:
Etapas de agregación no compatibles
El cifrado automático no admite etapas de agregación que lean o escriban en colecciones adicionales. Estas etapas son:
Etapas admitidas de agregación
Los controladores compatibles configurados para el cifrado automático admiten las siguientes etapas del proceso de agregación:
$groupen campos no cifrados$lookupy (Para conocer los requisitos de uso, consulte$graphLookupComportamiento$lookup$graphLookupy)
Las canalizaciones de agregación que operan en colecciones configuradas para cifrado automático que especifican cualquier otra etapa devuelven un error.
Para cada etapa de la canalización compatible, MongoDB rastrea los campos que deben cifrarse a medida que pasan por las canalizaciones compatibles y los marca para su cifrado.
Cada etapa compatible debe especificar únicamente los operadores de consulta y expresiones de agregación admitidos.
$lookup y $graphLookup Comportamiento
El cifrado automático admite $lookup y $graphLookup solo si la from colección coincide con la colección en la que se ejecuta la agregación. $lookup Las $graphLookup etapas y que hacen referencia a una from colección diferente devuelven un error.
El cifrado automático no admite fuentes de metadatos de agregación “sin conexión”, que leen metadatos que no pertenecen a una colección en particular, como:
Cambiar flujos para observar una base de datos o todo el clúster
El cifrado automático no admite la $planCacheStats etapa ya que el resultado puede contener información confidencial.
No se puede realizar una $lookup desde una habilitada para cifrado consultable MongoClient en colecciones no cifradas.
Expresiones de agregación admitidas
Los drivers compatibles configurados para cifrado automático admiten las siguientes expresiones en cualquier tipo de campo cifrado de consulta de igualdad:
Todas las demás expresiones de agregación devuelven un error si se ejecutan sobre campos cifrados.
Las etapas de agregación con el siguiente comportamiento devuelven un error incluso si se utiliza una expresión de agregación compatible:
Expresiones | Comportamiento rechazado | Ejemplo | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
La expresión especifica un campo cuyas propiedades de cifrado no se pueden conocer hasta el tiempo de ejecución y una etapa de agregación posterior incluye una expresión que hace referencia a ese campo. | | |||||||||||||||
La expresión crea un nuevo campo que hace referencia a un campo cifrado y opera sobre ese nuevo campo en la misma expresión. | | |||||||||||||||
La expresión hace referencia al prefijo de un campo cifrado dentro de la expresión de comparación. | | |||||||||||||||
El resultado de la expresión se compara con un campo cifrado. | | |||||||||||||||
La expresión vincula una variable a un campo cifrado o intenta volver a | | |||||||||||||||
El primer argumento de la expresión es un campo cifradoy
| |
Tipos de campos no admitidos
Los controladores configurados para el cifrado automático no admiten ninguna operación de lectura o escritura que requiera cifrar los siguientes tipos de valores:
El cifrado consultable no oculta adecuadamente la información de tipo para estos valores.
El cifrado consultable no admite operaciones de lectura o escritura en un campo cifrado donde la operación compara el campo cifrado con los siguientes tipos de valores:
arraydecimal128doubleobject