ClientEncryption.decrypt(encryptedValue)ClientEncryption.decrypt()decrypts theencryptionValueif the current database connection was configured with access to the Key Management Service (KMS) and key vault used to encryptencryptionValue.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
The mongosh client-side field level encryption methods require a database connection with client-side field level encryption enabled. If the current database connection was not initiated with client-side field level encryption enabled, either:
Use the
mongoshcommand line options to establish a connection with the required options. The command line options only support the Amazon Web Services KMS provider for CMK management.
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().