我正在我的NodeJS项目中实现自动客户端字段级加密功能(在MongoDB 4.2+ Enterprise中可用)。
似乎没有关于如何使用3.3节点驱动程序(与Mongo 4.2兼容)来处理数据密钥的文档。
此过程在这里描述:https://docs.mongodb.com/manual/tutorial/manage-client-side-encryption-data-keys/,并说:
有关使用兼容4.2的驱动程序的数据密钥管理的指导,请参阅该驱动程序的文档。
我尝试在Node Driver API文档(http://mongodb.github.io/node-mongodb-native/3.3/api/)上搜索有关如何创建和管理数据密钥的信息,但是我找不到任何方法。它确实描述了如何配置客户端,以使其使用自动字段级加密,但这需要数据密钥。
似乎没有有关如何使用3.3节点驱动程序(与Mongo 4.2兼容)来处理数据密钥的文档。
您可以在驱动程序代码库node-mongodb-native/test/functional/client_side_encryption中从测试中看到some使用摘要。这应该与mongo
shell使用它的方式非常相似。使用Connect to a MongoDB Cluster with Automatic Client-Side Encryption Enabled
shell上的示例mongo
,您可以在MongoDB Node.JS驱动程序中类似地使用以下代码:
const mongoClient = new MongoClient(
"<ATLAS_URI_HERE>",
{
useNewUrlParser: true,
useUnifiedTopology: true,
autoEncryption: {
keyVaultNamespace: "encryption.__dataKeys",
kmsProviders: {
local: {
// BASE64-ENCODED-96-BYTE-LOCAL-KEY
key: fs.readFileSync(MASTER_ENCRYPTION_KEY_PATH),
}
},
schemaMap: {
"hr.employees": {
"bsonType": "object",
"properties": {
"ssn": {
"encrypt": {
"bsonType": "string",
"algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic",
}
}
}
}
}
}
}
);
以上示例将kmsProviders
用于Locally Managed Keyfile,请参阅AWS KMS用于kmsProviders
AWS Key Management Service。
另请参见Client Side Field Level Encryption Guide,以使用兼容MongoDB 4.2的驱动程序配置字段级加密的端到端过程(单击Node.JS选项卡以查看Node.JS中的示例)