Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

getKeyVault()

在此页面上

  • 兼容性
  • 语法
  • 行为
  • 例子
getKeyVault()

返回当前数据库连接的KeyVault对象。 KeyVault对象支持客户端字段级加密的数据加密密钥管理。

返回:当前数据库连接的KeyVault对象。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

getKeyVault() 通过以下语法实现:

keyVault = db.getMongo().getKeyVault();

使用KeyVault对象访问以下数据加密密钥管理方法:

以下示例使用本地托管的密钥进行客户端字段级加密配置。

mongosh 客户端字段级加密方法需要启用客户端字段级加密的数据库连接。如果当前数据库连接在启动时未启用客户端字段级加密,则任选以下其一:

getKeyVault()方法自动在keyAltNames字段上创建唯一索引,并仅针对存在keyAltNames的文档使用部分索引筛选器。 getKeyVault()在密钥保管库集合中创建此索引。 这样可以防止同一密钥保管库中的任何两个数据加密密钥具有相同的密钥备用名称,从而避免混淆哪个数据加密密钥适合加密/解密。

警告

不要删除getKeyVault()创建的唯一索引。 客户端字段级加密操作取决于服务器强制执行的keyAltNames唯一性。 删除索引可能会导致意外或不可预知的行为。

以下示例使用本地托管的密钥进行客户端字段级加密配置。

为本地管理的密钥配置客户端字段级加密:

  • 生成不带换行符的 base64 编码的 96 字节字符串

  • 使用 mongosh 加载密钥

export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')")
mongosh --nodb

使用生成的本地密钥字符串创建客户端字段级加密对象:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, process.env["TEST_LOCAL_KEY"])
}
}
}

使用配置了客户端字段级加密选项的Mongo()构造函数来创建数据库连接。 将mongodb://myMongo.example.net URI 替换为目标集群的连接字符串 URI

encryptedClient = Mongo(
"mongodb://myMongo.example.net:27017/?replSetName=myMongo",
autoEncryptionOpts
)

使用getKeyVault()方法检索密钥保管库对象:

keyVault = encryptedClient.getKeyVault()

有关在启用客户端字段级加密的情况下启动 MongoDB 连接的完整文档,请参阅Mongo()

后退

getClientEncryption