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 para cifrarencryptionValue.Devuelve: El valor descifrado.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente administrado 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 mediante cifrado de nivel de campo del lado del cliente.
Comportamiento
Las operaciones de lectura emitidas desde una conexión de base de datos configured con acceso al Servicio de administración de claves (KMS) y Key Vault correctos pueden descifrar automáticamente los valores de campo cifrados con ClientEncryption.encrypt(). Los clientes solo necesitan usar decrypt() para descifrar los valores 6 del subtipo Binary que 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
Utilice el constructor
Mongo()delmongoshpara establecer una conexión con las opciones de cifrado en uso requeridas. El métodoMongo()admite los siguientes proveedores de servicio de administración de claves (KMS) para la administración de la clave maestra del cliente (CMK):or
Utilice las opciones de línea de comandos
mongoshpara establecer una conexión con las opciones requeridas. Estas opciones solo son compatibles con el proveedor KMS de Amazon Web Services para la gestió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 objeto ClientEncryption y utiliza el método ClientEncryption.decrypt() para descifrar un valor cifrado por ClientEncryption.encrypt().
clientEncryption = encryptedClient.getClientEncryption(); clientEncryption.decrypt(BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo="))
Resultados de ejemplo
Si tiene éxito, 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().