ClientEncryption.decrypt(encryptedValue)ClientEncryption.decrypt()descifraencryptionValuesi la conexión de base de datos actual 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 objeto binary data con subtipo 6
creado utilizando 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 Gestió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 del subtipoBinary 6 que no estén almacenados en 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 métodos mongosh ClientEncryption requieren una conexión a la base de datos con la encriptación en uso activada. Si la conexión actual a la base de datos no se inició con la encriptación en uso activada, entonces:
Utilice el constructor
Mongo()demongoshpara establecer una conexión con las opciones de encriptación en uso requeridas. El métodoMongo()es compatible con los siguientes proveedores de Key Management Service (KMS) para la gestión de llaves maestras de cliente:or
Utilice las opciones de línea de comandos
mongoshpara establecer una conexión con las opciones requeridas. Las opciones de la línea de comandos solo admiten el proveedor Amazon Web Services KMS para la gestión de la llave maestra de cliente.
Ejemplo
El siguiente ejemplo utiliza un KMS administrado localmente para la configuración de cifrado a nivel de campo del lado del cliente.
Crea tu conexión cifrada
Iniciar 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 a nivel de campo del lado del cliente, utilice la cadena
TEST_LOCAL_KEYdel paso anterior:var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } Crear un objeto de cliente cifrado
Para crear un objeto cliente cifrado, utilice el constructor. Reemplace
Mongo()elmongodb://myMongo.example.netURI con el URI de la cadena de conexión del clúster de destino. Por ejemplo:encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )
Desencripta tus datos
Recupere el ClientEncryption objeto y utilice el método para descifrar un valor ClientEncryption.decrypt() cifrado ClientEncryption.encrypt() por.
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 documentación completa sobre cómo iniciar conexiones MongoDB con el cifrado de nivel de campo del lado del cliente habilitado,Mongo() consulte.