En aplicaciones cliente habilitadas para el cifrado a nivel de campo del lado del cliente (CSFLE), puedes usar validación de esquemas para que tu instancia de MongoDB haga cumplir el cifrado de campos específicos. Para especificar los campos que requieren cifrado, utilice el
palabras clave de la regla de cifrado automático con el $jsonSchema objeto de validación. El servidor rechaza cualquier operación de escritura en esa colección donde los campos especificados no sean Binary (BinData) objetos de subtipo 6.
Para saber cómo se comporta un cliente habilitado para CSFLE configurado para usar cifrado automático cuando encuentra un esquema del lado del servidor, consulte Aplicación de cifrado a nivel de campo del lado del servidor.
Para aprender cómo se comporta un cliente habilitado para CSFLE configurado para usar cifrado explícito cuando encuentra un esquema del lado del servidor, consulta Aplicación del Cifrado a Nivel de Campo del lado del Servidor.
Ejemplo
Considera una base de datos hr con una colección employees. Los documentos de la colección employees tienen la siguiente forma:
{ "name": "Jane Doe", "age": 51 }
Quieres aplicar el siguiente comportamiento para las aplicaciones clientes que utilizan tu colección:
Al cifrar el campo
age, los clientes deben seguir estas reglas de cifrado:Use la clave de cifrado de datos con un
_iddeUUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a").Usa el algoritmo de cifrado aleatorio.
El campo
agedebe ser un número entero.
Al cifrar el campo
name, los clientes deben seguir estas reglas de cifrado:Use la clave de cifrado de datos con un
_iddeUUID("33408ee9-e499-43f9-89fe-5f8533870617").Utiliza el algoritmo de cifrado determinista.
El campo
namedebe ser una cadena.
El siguiente código mongosh utiliza el comando collMod para actualizar la colección hr.employees a fin de incluir un validator que haga cumplir el comportamiento precedente:
db.getSiblingDB("hr").runCommand({ collMod: "employees", validator: { $jsonSchema: { bsonType: "object", properties: { age: { encrypt: { keyId: [UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Random", bsonType: "int", }, }, name: { encrypt: { keyId: [UUID("33408ee9-e499-43f9-89fe-5f8533870617")], algorithm: "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic", bsonType: "string", }, }, }, }, }, });
Obtén más información
Para obtener más información sobre los algoritmos de cifrado que admite CSFLE, consulte Campos y tipos de cifrado.
Para aprender más sobre los esquemas de cifrado y las reglas de cifrado, consulta Esquemas de cifrado CSFLE.