He estado siguiendo esta guía: cómo usar MongoDB Client-Side Field Level Encryption (CSFLE) con Node.js/ para probar MongoDB CSFLE.
Al hacerlo, en el paso de crear la clave de datos en el almacén de bóveda de claves local https://developer.mongodb.com/how-to/client-side-field-level-encryption-csfle-mongodb-node/#create- a-data-key-in-mongodb-for-encrypting-and-decrypting-document-fields la clave de datos se crea correctamente pero keyAltName no se adjunta al documento de la clave de datos.
Probé esto varias veces y no hay nada malo en mi código y estoy siguiendo la guía tal como está. No puedo entender qué está causando este problema. La creación de la clave de datos es exitosa pero sin el campo keyAltNames. Una ayuda aquí sería muy apreciada.
El código relacionado con la creación de documentos clave de datos
async findOrCreateDataKey(client) { const encryption = new ClientEncryption(client, { keyVaultNamespace: this.keyVaultNamespace, kmsProviders: this.kmsProviders }) await this.ensureUniqueIndexOnKeyVault(client) let dataKey = await client .db(this.keyDB) .collection(this.keyColl) .findOne({ keyAltNames: { $in: [this.keyAltNames] } }) if (dataKey === null) { dataKey = await encryption.createDataKey("local", { keyAltNames: [this.keyAltNames] }) return dataKey.toString("base64") } return dataKey["_id"].toString("base64") } }Documento resultante
Paquete JSON MongoDB Driver/MongoDB Client Side Encryption Versiones del paquete NPM
"mongodb": "^3.6.0", "mongodb-client-encryption": "^1.2.1"EDITAR: este problema ahora está solucionado por el equipo de MongoDB. Consulte el número 1 adjunto.
Ya está listo un ticket para solucionar este problema.
Visite el siguiente hilo que abrí yo mismo en los foros de MongoDB para obtener más información. -> https://developer.mongodb.com/community/forums/t/nodejs-the-keyaltnames-field-is-not-created-when-creating-the-data-key-in-mongodb-client-side- cifrado de nivel de campo/15875/3
Según los comentarios del hilo anterior, una solución es actualizar el documento local de KeyVault después de crearlo y agregar el campo keyAltName con su valor. Esta parece ser la única solución viable hasta que el equipo de MongoDB envíe una solución para esto en una versión futura.
Logré resolver un problema similar al instalar mongodb-enterprise-cryptd lib en el nodo php . Para el contenedor mongo estaba usando la imagen oficial de mongo docker
mongodb: image: mongo:4.2ps, no estaba usando la versión empresarial de mongo. Más información aquí: conexión a una instancia de MongoCryptD en un entorno docker con Mongoose