文档菜单
文档首页
/
MongoDB 手册
/ / /

getKeyVault()

本页内容

  • 行为
  • 示例
getKeyVault()

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

getKeyVault() 的语法如下

keyVault = db.getMongo().getKeyVault();
返回:当前数据库连接的 KeyVault 对象。

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

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

mongosh 客户端字段级加密方法需要启用客户端字段级加密的数据库连接。如果当前数据库连接未启用客户端字段级加密,则需要

getKeyVault() 方法会自动在 keyAltNames 字段上创建一个 唯一索引,并对仅包含 keyAltNames 的文档使用 部分索引 过滤器。该索引在密钥保管库集合中创建,这可以防止同一个密钥保管库中的两个数据加密密钥具有相同的密钥替代名称,从而避免关于哪个数据加密密钥适合加密/解密的不确定性。

警告

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

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

1

启动 mongosh 客户端。

mongosh --nodb
2

要配置本地管理密钥的客户端字段级加密,请生成一个不带换行符的96字节base64编码字符串。

const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
3

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

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

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

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

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

keyVault = encryptedClient.getKeyVault()

有关使用客户端字段级加密启用MongoDB连接的完整文档,请参阅 Mongo().

返回

getClientEncryption

本页内容