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
/ /
Referencia
/ / /

Aplicación de esquemas del lado del servidor de CSFLE

En aplicaciones cliente con cifrado de nivel de campo del lado del cliente (CSFLE), puede usar la validación de esquema para que su instancia de MongoDB aplique el cifrado de campos específicos. Para especificar qué campos requieren cifrado, use las 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.

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 _id de UUID("e114f7ad-ad7a-4a68-81a7-ebcb9ea0953a").

    • Usa el algoritmo de cifrado aleatorio.

    • El campo age debe 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 _id de UUID("33408ee9-e499-43f9-89fe-5f8533870617").

    • Utiliza el algoritmo de cifrado determinista.

    • El campo name debe 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",
},
},
},
},
},
});

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.

Volver

Schemas

En esta página