Nota
Característica de la empresa
La funcionalidad automática del cifrado a nivel de campo solo está disponible en MongoDB Enterprise 4.2 o posterior y en los clústeres de MongoDB Atlas 4.2 o posterior.
Nuevo en la versión 4.2.
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 4.2+ configurados para el cifrado automático a nivel de campo del lado del cliente.
MongoDB almacena los campos cifrados a nivel de campo en el lado del cliente como un
BinData blob. Las operaciones de lectura y escritura realizadas contra el valor cifrado BinData pueden tener un comportamiento inesperado o incorrecto en comparación con la ejecución de esa misma operación contra el valor descifrado. Algunas operaciones tienen soporte estricto para el tipo BSON, donde ejecutarlas contra un valor BinData produce un error.
Los drivers oficiales compatibles con la versión 4.2+ que utilizan cifrado automático a nivel de campo del lado del cliente interpretan operaciones de lectura/escritura para operadores o expresiones que no admiten valores
BinDatao que tienen un comportamiento anormal cuando se emiten en contra de valoresBinData.Las aplicaciones que utilizan cifrado a nivel de campo explícito (manual) pueden utilizar esta página como guía para realizar operaciones de lectura/guardado en campos cifrados.
Comandos de lectura y escritura admitidos
Los drivers oficiales compatibles con MongoDB 4.2+ admiten el cifrado automático a nivel de campo en el lado del cliente con los siguientes comandos:
Para cualquier comando admitido, los controladores compatibles con la versión 4.2+ generan un error si el comando usa un operador no compatible, una etapa de agregación o una expresión de agregación:
Los siguientes comandos no requieren cifrado automático. Los controladores compatibles oficiales de MongoDB 4.2+ configurados para cifrado automático a nivel de campos del lado del cliente pasan estos comandos directamente al mongod:
Emitir cualquier otro comando a través de un controlador compatible con la versión 4.2+ configurado para el cifrado automático de datos a nivel de campo en el lado del cliente generará un error.
| [1] | Aunque el cifrado automático a nivel de campo en el lado del cliente no cifra el comando getMore, la respuesta al comando puede contener valores de campo cifrados. Las aplicaciones configuradas con las opciones correctas de cifrado de campo a nivel de cliente descifran automáticamente esos valores. Las aplicaciones sin las opciones de cifrado correctas solo ven los valores cifrados. |
Operadores del query compatibles
Los controladores oficiales compatibles con 4.2+ configurados para el cifrado automático a nivel de campo del lado del cliente permiten los siguientes operadores de consulta cuando se emiten contra campos cifrados de forma determinista:
Las queries que comparan un campo cifrado con null o una expresión regular siempre generan un error incluso si se utiliza un operador del query compatible. Las consultas que emiten estos operadores contra un campo cifrado aleatoriamente aleatoriamente generan un error.
El operador $exists tiene un comportamiento normal cuando se ejecuta tanto en campos cifrados determinísticamente como de manera aleatoria.
Las queries que especifican cualquier otro operador del query contra un campo cifrado devuelven un error.
Los siguientes operadores de consulta generan un error incluso si no se emiten contra un campo cifrado:
Operadores de actualización compatibles
Los drivers oficiales compatibles con la versión 4.2 y posteriores, configurados para el cifrado a nivel de campo del lado del cliente, permiten los siguientes operadores de actualización cuando se aplican a campos cifrados determinísticamente:
Para las operaciones de actualización que utilizan el $rename operador en campos cifrados, asegúrese de que el esquema JSON automático especifique los mismos metadatos de cifrado para los nombres de los campos de origen y destino.
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 un arreglo dentro de una ruta cifrada.
La operación de actualización utiliza la sintaxis de la expresión de agregación.
Para las operaciones de actualización que especifican un filtro de consulta en campos cifrados de forma determinista, el filtro de consulta debe usar solo operadores admitidos en esos campos.
Operaciones de inserción no admitidas
Los drivers oficiales compatibles de MongoDB 4.2+ configurados para el cifrado automático del lado del cliente a nivel de campo no admiten comandos de inserción con el siguiente comportamiento:
Insertando un documento con
Timestamp(0,0)asociado a un campo cifrado. El(0,0)valor indica quemongoddebe generar la marca de tiempo. Dadomongodque no puede generar campos cifrados, la marca de tiempo resultante no estaría cifrada.Insertar un documento sin un campo cifrado
_idsi el esquema automático configurado especifica un_idcampo cifrado. Dado que generamongodautomáticamente un ObjectId sin cifrar, omitir_iden los documentos genera documentos que no cumplen con las reglas de cifrado automático.Insertar un documento con un arreglo asociado a un campo cifrado determinísticamente. El cifrado automático del lado del cliente a nivel de campo no admite el cifrado determinista de arreglos.
Etapas admitidas de agregación
Los controladores oficiales compatibles con MongoDB 4.2+ configurados para el cifrado automático a nivel de campo del lado del cliente admiten las siguientes etapas de la canalización de agregación:
$group(ver Comportamiento de$grouppara los requisitos de uso.)$lookupy$graphLookup(Consulte$lookupy$graphLookupComportamiento para los requisitos de uso)
Los pipelines de agregación que operan en colecciones configuradas para el cifrado automático que especifican cualquier otra fase 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 admitida debe especificar solo los operadores del query admitidos y las expresiones de agregaciónadmitidas.
$group Comportamiento
$group tiene los siguientes comportamientos específicos de cifrado a nivel de campo del lado del cliente:
$lookup y $graphLookup Comportamiento
El cifrado automático a nivel de campo del lado del cliente admite el $lookup y el $graphLookup solo si la colección from coincide con la colección en la que se ejecuta la agregación (es decir, operaciones de auto búsqueda).
$lookup y $graphLookup etapas que hacen referencia a una colección from diferente devuelven un error.
Expresiones de agregación admitidas
Los controladores oficiales compatibles con la versión 4.2+ configurados para el cifrado automático a nivel de campo en el lado del cliente permiten etapas de agregación que utilizan las siguientes expresiones sobre campos cifrados determinísticamente:
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 arrojan un error incluso si utilizan 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 referencia 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 vincular | | |||||||||||||||
El primer argumento de la expresión es un campo cifrado, y
| |
Tipos de campos no soportados
Los controladores oficiales compatibles con MongoDB 4.2+ configurados para cifrado automático a nivel de campo del lado del cliente no admiten ninguna operación de lectura ni escritura que requiera el cifrado de los siguientes tipos de valores:
El cifrado no oculta adecuadamente la información de tipo para estos valores.
El cifrado automático a nivel de campo tampoco permite operaciones de lectura o escritura en un campo deterministamente donde la operación compara el campo cifrado con los siguientes tipos de valor:
doubledecimal128boolobject