微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB 客户端字段级加密 - NodeJS 驱动程序 - 本地密钥库中的数据密钥文档中未创建 keyAltNames 字段

如何解决MongoDB 客户端字段级加密 - NodeJS 驱动程序 - 本地密钥库中的数据密钥文档中未创建 keyAltNames 字段

我一直在遵循本指南 - How to use MongoDB Client-Side Field Level Encryption (CSFLE) with Node.js/ 来测试 MongoDB CSFLE。

这样做时,在本地密钥保管库存储 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 中创建数据密钥的步骤中,成功创建了数据密钥,但 keyAltName 未附加到数据密钥的文档中。

我对此进行了多次测试,我的代码没有任何问题,我正在按照指南进行操作。我不明白是什么导致了这个问题。数据密钥创建成功,但没有 keyAltNames 字段。在这里提供帮助将不胜感激。

Data Key Document 创建相关代码

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

结果文档

enter image description here

包 JSON MongoDB 驱动程序/ MongoDB 客户端加密 NPM 包版本

"mongodb": "^3.6.0","mongodb-client-encryption": "^1.2.1"

解决方法

有一个 ticket in place to fix this 问题。

请访问我自己在 MongoDB 论坛中打开的以下线程以获取更多信息。 -> https://developer.mongodb.com/community/forums/t/nodejs-the-keyaltnames-field-is-not-created-when-creating-the-data-key-in-mongodb-client-side-field-level-encryption/15875/3

根据上述线程中的评论,一种解决方案是在创建本地 keyVault 文档后更新它,并添加具有其值的 keyAltName 字段。在 MongoDB 团队在未来版本中为此发布修复程序之前,这似乎是唯一可行的修复程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。