我一直在关注本指南 -如何使用 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 字段。非常感谢您的帮助。
与数据密钥文档创建相关的代码
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")
}
}
结果文件
包 JSON MongoDB 驱动程序/MongoDB 客户端加密 NPM 包版本
"mongodb": "^3.6.0",
"mongodb-client-encryption": "^1.2.1"