ClientEncryption.decrypt(encryptedValue)ClientEncryption.decrypt()descifra elencryptionValuesi la conexión actual a la base de datos se configuró con acceso al Servicio de administración de claves (KMS) y al almacén de claves utilizado paraencryptionValuecifrar.Devuelve: El valor descifrado.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
ClientEncryption.decrypt tiene la siguiente sintaxis:
clientEncryption = db.getMongo().getClientEncryption() clientEncryption.decrypt(encryptedValue)
El encryptedValue debe ser un binary data objeto con subtipo 6 creado mediante cifrado de nivel de campo del lado del cliente.
Comportamiento
Las operaciones de lectura emitidas desde una conexión de base de datosconfiguredcon acceso al Servicio de administración de claves (KMS) y Key Vault correctos pueden descifrar automáticamente los valores de campo cifrados conClientEncryption.encrypt(). Los clientes solo necesitan usardecrypt()para descifrar los valores de subtipo 6 Binaryque no se almacenan dentro de un campo de documento.
Habilitar el cifrado a nivel de campo del lado del cliente en la conexión a la base de datos
Los mongosh ClientEncryption métodos requieren una conexión a la base de datos con el cifrado en uso habilitado. Si la conexión actual a la base de datos no se inició con el cifrado en uso habilitado, se producirá uno de los siguientes errores:
Utilice las
mongoshopciones de línea de comandos para establecer una conexión con las opciones requeridas. Las opciones de línea de comandos solo admiten el proveedor KMS de Amazon Web Services para la administración de CMK.
Ejemplo
El siguiente ejemplo utiliza un KMS gestionado localmente para la configuración de cifrado a nivel de campo en el lado del cliente.
Crea Tu Conexión Encriptada
Inicia mongosh
Ejecuta:
mongosh --nodb --nodbsignifica no conectarse a una base de datos.Generar un String
Genera una cadena base de 64 96bytes:
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64") Crear un objeto de opciones de cifrado
Para crear un objeto de opciones de cifrado de nivel de campo del lado del cliente, utilice la string
TEST_LOCAL_KEYdel paso anterior:var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } Cree un objeto cliente cifrado
Para crear un objeto cliente cifrado, utiliza el constructor
Mongo(). Reemplace el URImongodb://myMongo.example.netpor el URI de la cadena de conexión para el clúster de destino. Por ejemplo:encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
Desencripta tus datos
Recupera el objetoClientEncryptiony utiliza el métodoClientEncryption.decrypt()para descifrar un valor cifrado porClientEncryption.encrypt().
clientEncryption = encryptedClient.getClientEncryption(); clientEncryption.decrypt(BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo="))
Resultados de ejemplo
Si tiene éxito, devuelve el valordecrypt() descifrado:
"123-45-6789"
Obtén más información
Para obtener la documentación completa sobre cómo iniciar conexiones MongoDB con el cifrado a nivel de campo en el lado del cliente activado, consulte Mongo().