我如何使用驱动程序来管理客户端加密数据密钥?

问题描述 投票:0回答:1

我正在我的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/)上搜索有关如何创建和管理数据密钥的信息,但是我找不到任何方法。它确实描述了如何配置客户端,以使其使用自动字段级加密,但这需要数据密钥。

node.js mongodb node-mongodb-native
1个回答
0
投票

似乎没有有关如何使用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中的示例)

© www.soinside.com 2019 - 2024. All rights reserved.