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 encriptas datos utilizando CSFLE, los datos que encriptas se almacenan como un BinData objeto de 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 utilizan estos metadatos para intentar descifrar automáticamente sus mongosh 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.
Descifrar la clave de cifrado de datos. Este proceso varía según el proveedor de KMS:
Para Amazon Web Services (AWS) KMS, envía la llave de cifrado de datos a tu instancia de AWS KMS para el descifrado. Si la llave maestra de cliente no existe o si la configuración de la conexión no otorga acceso a la llave maestra de cliente, la descifrado falla y el driver devuelve el blob
BinDatacifrado.Tip
Para aprender a utilizar Amazon Web Services KMS para el cifrado automático, consulte Usar cifrado automático a nivel de campo del lado del cliente con AWS.
Para el KMS de Google Cloud Platform (GCP), envía la clave de cifrado de datos a tu instancia de KMS de GCP para descifrarla. Si la llave maestra de cliente no existe o si la configuración de la conexión no otorga acceso a la llave maestra de cliente, la descifrado falla y el driver devuelve el blob
BinDatacifrado.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 CMK no existe o si la configuración de conexión no permite el acceso a ella, el descifrado falla y el controlador devuelve el
BinDatablob cifrado.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 una KMS compatible con KMIP, recupere la llave maestra de cliente de la KMS y luego utilice la llave maestra de cliente localmente para descifrar la clave de cifrado de datos. Si la llave maestra de cliente no existe o si la configuración de la conexión no otorga acceso a la llave maestra de cliente, la descifrado falla y el driver devuelve el blob
BinDatacifrado.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, recupera la llave maestra de cliente de tu sistema de archivos y úsala para descifrar la clave de cifrado de datos. Si la clave local especificada en la configuración de la base de datos no se utilizó para cifrar la clave de cifrado de datos, el descifrado falla y el driver devuelve el blob cifrado
BinData.Advertencia
No utilizar el proveedor de clave local en producción
El proveedor de claves local es un método de almacenamiento inseguro y no se recomienda para producción. En su lugar, debe almacenar sus claves maestras de cliente en un sistema de gestión de claves remoto. (KMS).
Para aprender a usar un KMS remoto en tu implementación de CSFLE, consulta la guía Tutoriales.
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 controlador cifra los valores de campo en el documento de consulta 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.