Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Encriptación a nivel de campo

ClientEncryption.decrypt() (método mongosh)

ClientEncryption.decrypt(encryptedValue)

ClientEncryption.decrypt() descifra el encryptionValue si 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 cifrar encryptionValue.

Devuelve:El valor descifrado.

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.

decrypt() tiene la siguiente sintaxis:

clientEncryption = db.getMongo().getClientEncryption()
clientEncryption.decrypt(encryptedValue)

El encryptedValue debe ser un objeto binary data con subtipo 6 creados utilizando cifrado a nivel de campo del lado del cliente.

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.

Los métodos de cifrado a nivel de campo del lado del cliente mongosh requieren una conexión de base de datos con cifrado habilitado a nivel de campo en el lado del cliente. Si la conexión actual de la base de datos no se inició con el cifrado del lado del cliente a nivel de campo habilitado, entonces:

El siguiente ejemplo utiliza un KMS gestionado localmente para la configuración de cifrado a nivel de campo en el lado del cliente.

Para configurar el cifrado a nivel de campo en el lado del cliente con una clave gestionada localmente:

  • genera una cadena de 96bytes codificada en base64sin saltos de línea

  • utilizar mongosh para cargar la clave

export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')")
mongosh --nodb

Cree el objeto de cifrado a nivel de campo lado del cliente mediante el string de clave local generado:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, process.env["TEST_LOCAL_KEY"])
}
}
}

Utiliza el Mongo() constructor con las opciones de cifrado a nivel de campo del lado del cliente configuradas para crear una conexión a la base de datos. Reemplace el URI mongodb://myMongo.example.net por el URI de la cadena de conexión del clúster de destino.

encryptedClient = Mongo(
"mongodb://myMongo.example.net:27017/?replSetName=myMongo",
autoEncryptionOpts
)

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="))

Si es exitoso, decrypt() devuelve el valor descifrado:

"123-45-6789"

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().

Volver

ClientEncryption.encrypt

En esta página