ClientEncryption.createEncryptedCollection()
7.0 版本中的新增功能。
ClientEncryption.createEncryptedCollection(dbName, collName, clientEncOpts)
ClientEncryption.createEncryptedCollection
在由dbName
指定的数据库上创建由collName
指定的加密collection。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
ClientEncryption.createEncryptedCollection
通过以下语法实现:
clientEncryption = db.getMongo().getClientEncryption() clientEncryption.createEncryptedCollection( dbName, collName, { provider: kmsProviderName, createCollectionOptions: encryptedFieldsMap, masterKey: customerMasterKeyCredentials } )
命令字段
createEncryptedCollection
采用这些字段:
字段 | 类型 | 必要性 | 说明 |
---|---|---|---|
| 字符串 | 必需 | 要加密的数据库名称。 |
| 字符串 | 必需 | 要加密的collection的名称。 |
| 文档 | 必需 | 用于配置加密collection的选项。 |
| 字符串 | 必需 | 用于存储客户主密钥的 KMS。 |
| 文档 | 必需 | 要加密的字段。 有关如何配置 |
| 文档 | Optional | 当 KMS 提供商为 Amazon Web Services、GCP 或 Azure 时,如何获取主密钥。 |
行为
mongosh
客户端字段级别和可查询Queryable Encryption方法需要为客户端加密配置数据库连接。 如果当前数据库连接不是在启用客户端字段级加密的情况下启动的,则:
使用
mongosh
中的Mongo()
构造函数与所需的客户端字段级加密选项建立连接。Mongo()
方法支持以下用于“客户主密钥”(KMS) 管理的“密钥管理服务”(CMK) 提供商:
or
使用
mongosh
命令行选项,用所需选项建立连接。命令行选项仅支持用于 CMK 管理的 Amazon Web Services KMS 提供商。
例子
以下示例使用本地托管的 KMS 进行 Queryable Encryption 配置。
创建加密连接
启动 mongosh
运行:
mongosh --nodb --nodb
表示不连接到数据库。生成密钥string
生成一个基本 64 96 字节的string :
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64") 创建加密选项对象
要创建客户端字段级加密选项对象,请使用上一步中的
TEST_LOCAL_KEY
string :var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } 创建加密客户端对象
要创建加密的客户端对象,请使用
Mongo()
构造函数。 将mongodb://myMongo.example.net
URI 替换为目标集群的连接string URI 。 示例:encryptedClient = Mongo( "mongodb://myMongo.example.net:27017/?replSetName=myMongo", autoEncryptionOpts )