ClientEncryption.decrypt(encryptedValue)ClientEncryption.decrypt()descifra elencryptionValuesi la conexión de base de datos actual fue configurada con acceso al Key Management Service (KMS) y al almacén de claves utilizado para cifrarencryptionValue.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 realizadas desde una conexión de base de datos configured con acceso al Key Management Service (KMS) y Key Vault correctos pueden descifrar automáticamente los valores de los campos cifrados mediante ClientEncryption.encrypt(). Los clientes solo necesitan usar decrypt() para descifrar Binary los valores subtipo 6 que no están almacenados en un campo del 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 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) } } } 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
Recupera el objeto ClientEncryption y utiliza el método ClientEncryption.decrypt() para desencriptar un valor encriptado por ClientEncryption.encrypt().
clientEncryption = encryptedClient.getClientEncryption(); clientEncryption.decrypt(BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo="))
Resultados de ejemplo
Si es exitoso, decrypt() devuelve el valor 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().