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

getClientEncryption()

本页内容

  • 语法
  • 行为
  • 示例
  • 了解更多
getClientEncryption()

返回当前数据库集合的 ClientEncryption 对象。该 ClientEncryption 对象支持对字段的显式(手动)加密和解密,用于客户端字段级加密.

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

getClientEncryption() 具有以下语法

db.getMongo().getClientEncryption();

使用 ClientEncryption 对象访问以下显式加密方法

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

方法 getKeyVault() 会自动在 keyAltNames 字段上创建一个唯一的索引,并使用 唯一索引 和一个 部分索引 过滤器,仅对存在 keyAltNames 的文档进行索引。该方法在密钥库集合中创建此索引。这可以防止同一个密钥库中的两个数据加密密钥具有相同的密钥替代名称,从而避免在加密/解密时哪个数据加密密钥是合适的产生歧义。

警告

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

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

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
)

使用 getClientEncryption() 方法获取客户端加密对象

clientEncryption = encryptedClient.getClientEncryption()

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

返回

ClientEncryption.decrypt