Esta página describe cómo CSFLE utiliza metadatos de tu llave de cifrado de datos y llave maestra de cliente para descifrar datos.
Metadatos usados para descifrado
Cuando cifras datos usando CSFLE, los datos cifrados se almacenan como un objeto de BinData subtipo 6 que incluye los siguientes metadatos:
El
_idde la llave de cifrado de datos utilizada para cifrar los datosEl algoritmo de cifrado utilizado para cifrar los datos
Las llaves de cifrado de datos contienen metadatos que describen qué llave maestra de cliente se utilizó para cifrarlas.
Los controladores y mongosh utilizan estos metadatos para intentar descifrar automáticamente tus datos.
Proceso de descifrado automático
Para descifrar automáticamente tus datos, tu cliente habilitado para CSFLE realiza el siguiente procedimiento:
Verifique los metadatos de blobs
BinDatadel campo que pretende descifrar para la clave de cifrado de datos y el algoritmo de cifrado utilizados para cifrar el valor.Verifica la Colección de Bóvedas de Llaves configurada en la conexión actual de la base de datos para la llave de cifrado de datos especificada. Si la Colección de Bóvedas de Llaves no contiene la clave especificada, la descifrado automático falla y el driver devuelve un error.
Verifica los metadatos de la llave de cifrado de datos para la llave maestra de cliente (CMK) utilizada para cifrar el material clave.
Descifre la llave de cifrado de datos. Este proceso varía según el proveedor de KMS:
Para el KMS de Amazon Web Services (AWS), envíe la clave de cifrado de datos a su instancia de AWS KMS para su descifrado. Si la CMK no existe o si la configuración de conexión no otorga acceso a la CMK, el descifrado fallará y el controlador devolverá un error.
Tip
Para aprender a usar Amazon Web Services KMS para cifrado automático, consulte Use el cifrado automático a nivel de campo del lado del cliente con AWS.
Para el KMS de Google Cloud Platform (GCP), envíe la clave de cifrado de datos a su instancia de GCP KMS para su descifrado. Si la CMK no existe o si la configuración de conexión no otorga acceso a la CMK, el descifrado fallará y el controlador devolverá un error.
Tip
Para aprender a usar Google Cloud Platform KMS para el cifrado automático, consulta Utiliza el cifrado automático a nivel de campo del lado del cliente con GCP.
Para Azure Key Vault, envíe la clave de cifrado de datos a su instancia de Azure Key Vault para su descifrado. Si la clave maestra de cliente (CMK) no existe o si la configuración de conexión no otorga acceso a ella, el descifrado fallará y el controlador devolverá un error.
Tip
Para aprender cómo usar Azure Key Vault para el cifrado automático, consulta Usa el cifrado automático a nivel de campo del lado del cliente con Azure.
Para un KMS compatible con KMIP, recupere la CMK del KMS y, a continuación, utilícela localmente para descifrar la clave de cifrado de datos. Si la CMK no existe o si la configuración de la conexión no permite el acceso a ella, el descifrado fallará y el controlador devolverá un error.
Tip
Para aprender a usar un KMS compatible con KMIP para cifrado automático, consulta Usa el cifrado automático a nivel de campo del lado del cliente con KMIP.
Para un proveedor de claves local, recupere la llave maestra de cliente de su sistema de archivos y utilícela para descifrar la llave de cifrado de datos. Si la clave local especificada en la configuración de la base de datos no se utilizó para cifrar la llave de cifrado de datos, el descifrado falla y el driver devuelve un error.
Advertencia
No utilizar el proveedor de clave local en producción
El proveedor de llaves locales es un método de almacenamiento inseguro y no se recomienda para producción. En su lugar, debería almacenar sus llaves maestras de cliente en un Sistema de gestión de claves (KMS) remoto.
Para aprender a usar un KMS remoto en tu implementación de CSFLE, consulta la guía Tutoriales de CSFLE.
Descifra el valor
BinDatausando la Llave de cifrado de datos descifrada y el algoritmo adecuado.
Las aplicaciones con acceso al servidor de MongoDB que no también tengan acceso a la CMK requerida y a las claves de cifrado de datos no podrán descifrar los valores de BinData.
Comportamiento de lectura cifrado automáticamente
Para las operaciones de lectura, el driver cifra los valores de los campos en el documento de query utilizando su esquema de cifrado antes de emitir la operación de lectura.
Tu aplicación cliente utiliza los metadatos de BinData para descifrar automáticamente el documento que recibes de MongoDB.
Para obtener más información sobre los esquemas de cifrado, consulte Esquemas de cifrado.
Obtén más información
Para saber cómo configurar la conexión a la base de datos para el cifrado a nivel de campo del lado del cliente, consulte Opciones específicas de MongoClient para CSFLE.
Para obtener más información sobre la relación entre llave de cifrado de datos y llave maestra de cliente, consulta Claves y almacenes de claves.