Docs Menu
Docs Home
/ /
Encriptación a nivel de campo

Cifrado explícito (manual) a nivel de campo del lado del cliente

Controladores compatibles con MongoDB 4.2+ mongosh, y el legado MongoDB 4.2 o posterior mongo El shell admite el cifrado o descifrado explícito de campos con una clave de cifrado de datos y un algoritmo de cifrado específicos.

Las aplicaciones deben modificar el código asociado con la construcción de operaciones de lectura y escritura para incluir la lógica de cifrado/descifrado mediante la biblioteca de cifrado del controlador. Las aplicaciones son responsables de seleccionar la clave de cifrado de datos adecuada para cada operación.

mongosh Proporciona los siguientes métodos para realizar cifrado y descifrado explícito:

Los drivers compatibles con MongoDB 4.2+ tienen una sintaxis específica para realizar el cifrado a nivel de campo explícito del lado del cliente. Consulta la Tabla de compatibilidad de drivers para ver una lista completa de drivers compatibles 4.2+ con soporte para cifrado a nivel de campo del lado del cliente. Consulta la documentación de tu driver preferido para obtener instrucciones específicas sobre cómo realizar el cifrado a nivel de campo del lado del cliente.

La siguiente operación emitida desde cifra explícitamente mongosh el taxid campo como parte de una operación de escritura.

clientEncryption = encryptedClient.getClientEncryption()
db.getSiblingDB("hr").getCollection("employees").insertOne({
"name" : "J. Doe",
"taxid" : clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
)
})

La siguiente operación emitida desde cifra explícitamente mongosh el taxid campo como parte de una operación de lectura:

encrypt = encryptedClient.getClientEncryption()
db.getSiblingDB("hr").getCollection("employees").findOne({
"taxid" : clientEncryption.encrypt(
UUID("64e2d87d-f168-493c-bbdf-a394535a2cb9"),
"123-45-6789",
"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
)
})

Estas operaciones suponen que la configuración de la conexión de la base de datos especificó un almacén de claves y un servicio de administración de claves con acceso a la clave de cifrado de datos especificada y su clave maestra de cliente asociada.

Para las operaciones de lectura que devuelven campos cifrados, el controlador/shell descifra automáticamente los valores cifrados solo si el controlador/shell se configuró con acceso a las claves utilizadas para proteger esos valores.

Cada 4.2controlador oficial compatible con MongoDB + incorpora nuevas funciones para el cifrado a nivel de campo del lado del cliente y la gestión de claves de cifrado de datos. Consulte la documentación de su controlador preferido para obtener instrucciones específicas del lenguaje sobre la implementación del cifrado explícito a nivel de campo del lado del cliente.

mongosh añade una opción adicional al Mongo() método para instanciar una conexión de base de datos con cifrado explícito a nivel de campo del lado del cliente. Para ver un ejemplo completo, consulte Conectarse a un clúster con el cifrado del lado del cliente habilitado.

Las aplicaciones deben especificar los siguientes componentes al crear una instancia de la conexión a la base de datos para habilitar el cifrado explícito a nivel de campo del lado del cliente:

  • Un almacén de claves de cifrado de datos. Este almacén puede residir en un clúster remoto de MongoDB o en el clúster de MongoDB que almacena los datos cifrados del lado del cliente.

  • Un proveedor de Servicio de Gestión de Claves (KMS) compatible utilizado para gestionar llaves maestras de cliente (CMK). MongoDB cifra todas las claves de cifrado de datos utilizando la llave maestra de cliente especificada antes de almacenarlas en el Key Vault, dejando únicamente los metadatos sin cifrar.

    4.2Los controladores compatibles con +, mongosh y el shell 4.2 MongoDB o posterior heredado mongo necesitan acceso al KMS para cifrar y descifrar campos protegidos o para crear nuevas claves de cifrado de datos.

El servidor MongoDB 4.2 soporta el uso de validación de esquema para aplicar el cifrado de campos específicos en una colección. Si la validación de la colección $jsonSchema requiere cifrado para un campo, los clientes que ejecuten cifrado explícito (manual) a nivel de campo deben encrypt ese campo.

Para obtener documentación completa sobre la aplicación del cifrado a nivel de campo del lado del servidor al lado del cliente, consulte Aplicar esquema de cifrado a nivel de campo.

Volver

mongocryptd

En esta página