Docs Menu
Docs Home
/ /
Referencia
/ / /

Operaciones admitidas para cifrado automático

Esta página documenta los comandos específicos, el operador del query, los operadores de actualización, las etapas y las expresiones de agregación admitidas por los drivers configurados para el cifrado automático a nivel de campo del lado del cliente.

Los controladores que utilizan cifrado automático a nivel de campo del lado del cliente admiten los siguientes comandos:

Para cualquier comando compatible, los controladores devuelven un error si el comando utiliza un operador, una etapa o una expresión de agregación no compatibles. Para obtener una lista completa de los operadores, etapas y expresiones compatibles, consulte las siguientes secciones de esta página:

Los siguientes comandos no requieren cifrado automático. Los controladores configurados para el cifrado automático a nivel de campo del lado del mongod cliente pasan estos comandos directamente a:

Emitir cualquier otro comando a través de un driver configurado para el cifrado automático del lado del cliente a nivel de campo devuelve un error.

[1] Si bien el cifrado automático a nivel de campo del lado del cliente (CSFLE) no cifra el getMore comando, la respuesta al comando puede contener valores de campo cifrados.
  • Las aplicaciones configuradas con las opciones CSFLE correctas descifran automáticamente esos valores.
  • Las aplicaciones sin las opciones CSFLE correctas solo ven los valores cifrados.

Los controladores 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 consultas que comparan un campo cifrado con null o una expresión regular siempre devuelven un error, incluso al usar un operador de consulta compatible. Las consultas que utilizan estos operadores contra un campo cifrado aleatoriamente devuelven un error.

El $exists operador tiene un comportamiento normal cuando se emite contra campos cifrados de forma determinista y aleatoria.

Las consultas que especifican cualquier otro operador de consulta contra un campo cifrado devuelven un error.

Los siguientes operadores de consulta devuelven un error incluso si no se emiten contra un campo cifrado:

Advertencia

Comportamiento inesperado con BinData

MongoDB almacena los campos cifrados a nivel de campo del cliente como un BinData blob. Las operaciones de lectura y escritura realizadas contra el BinData valor cifrado pueden tener un comportamiento inesperado o incorrecto en comparación con las realizadas contra el valor descifrado. Ciertas operaciones tienen compatibilidad estricta con el tipo BSON, por lo que al ejecutarlas contra un BinData valor se devuelve un error.

  • Los controladores que utilizan cifrado automático a nivel de campo del lado del cliente analizan operaciones de BinData lectura y escritura BinData en busca de operadores o expresiones que no admiten valores o que tienen un comportamiento inesperado cuando se emiten contra valores.

  • Las aplicaciones que utilizan cifrado a nivel de campo del lado del cliente explícito (manual) pueden usar esta página como guía para emitir operaciones de lectura y escritura en campos cifrados.

Los controladores configurados para el cifrado automático a nivel de campo del lado del cliente no admiten comandos de inserción con el siguiente comportamiento:

Los controladores configurados para el cifrado automático a nivel de campo del lado del cliente permiten los siguientes operadores de actualización cuando se emiten contra campos cifrados de forma determinista:

Cuando se utiliza el operador en campos cifrados, el esquema JSON automático debe especificar los mismos metadatos de cifrado para los nombres de los campos de origen y de $rename 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 devuelven 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 query en campos cifrados determinísticamente, el filtro de consulta debe utilizar solo operadores compatibles en esos campos.

Los Drivers configurados para el cifrado a nivel de campo del lado del cliente soportan automáticamente las siguientes etapas del pipeline de agregación:

Las canalizaciones 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.

$group tiene los siguientes comportamientos específicos del cifrado a nivel de campo del lado del cliente:

$group soporta:

  • Agrupación en campos cifrados deterministamente.

  • Usando $addToSet acumuladores y en campos cifrados.$push

$group no admite:

  • Coincidencia en la matriz devuelta $addToSet por los $push acumuladores y.

  • Acumuladores aritméticos en campos cifrados.

El cifrado automático a nivel de campo del lado del cliente admite $lookup y $graphLookup solo si la from colección coincide con la colección en la que se ejecuta la agregación (específicamente, operaciones de búsqueda automática).

$lookup Las $graphLookup etapas y que hacen referencia a una from colección diferente devuelven un error.

Los controladores configurados para el cifrado automático a nivel de campo del lado del cliente permiten etapas de agregación utilizando las siguientes expresiones contra campos cifrados de forma determinista:

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.

$addFields : {
"valueWithUnknownEncryption" : {
$cond : {
if : { "$encryptedField" : "value" },
then : "$encryptedField",
else: "unencryptedValue"
}
}
},
{
$match : {
"valueWithUnknownEncryption" : "someNewValue"
}
}

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.

{
$eq : [
{"newField" : "$encryptedField"},
{"newField" : "value"
]
}

La expresión hace referencia al prefijo de un campo cifrado dentro de la expresión de comparación.

{ $eq : [ "$prefixOfEncryptedField" , "value"] }

El resultado de la expresión se compara con un campo cifrado.

{
$eq : [
"$encryptedField" ,
{ $ne : [ "field", "value" ] }
]
}

La expresión vincula una variable a un campo cifrado o intenta volver a $$CURRENT vincular.

{
$let: {
"vars" : {
"newVariable" : "$encryptedField"
}
}
}

El primer argumento de la expresión es un campo cifradoy

  • El segundo argumento de la expresión no es un literal de arreglo

    -O-

  • El segundo argumento de la expresión es un campo cifrado.

{
$in : [
"$encryptedField" ,
"$otherEncryptedField"
]
}

Los controladores configurados para el cifrado de nivel de campo del lado del cliente (CSFLE) automático no admiten ninguna operación de lectura o escritura que requiera cifrar los siguientes tipos de valores:

El cifrado no oculta adecuadamente la información de tipo para estos valores.

CSFLE automático tampoco admite operaciones de lectura o escritura en un campo cifrado de forma determinista donde la operación compara el campo cifrado con los siguientes tipos de valores:

  • array

  • bool

  • decimal128

  • double

  • object

Volver

Cumplimiento del esquema

En esta página