自动客户端字段级加密
注意
Enterprise 版功能
字段级加密的自动功能仅在 MongoDB Enterprise 4.2 或更高版本以及 MongoDB Atlas 4.2 或更高版本集群中可用。
Overview
官方MongoDB4.2 + 兼容驱动程序、mongosh
和MongoDB4.2 或更高版本的旧版mongo
Shell支持在写入操作中自动加密字段。有关官方 4 的完整列表。2+ 支持客户端字段级加密的兼容驱动程序,请参阅驱动程序兼容性表。
应用程序必须创建一个数据库连接对象(例如 MongoClient
)替换为自动加密配置设置。 配置设置必须包括使用 草案的严格子集的自动加密规则JSON schema 4标准语法 和特定于加密的模式关键字。应用程序不必修改与构造读/写操作相关的代码。 有关自动加密规则的完整文档,请参阅自动加密规则。
官方MongoDB 4.2+ 兼容驱动程序mongosh
和MongoDB 4.2 或更高版本的旧版mongo
shell使用自动加密共享库来解析自动加密规则,并在读取或写入文档时应用加密规则:
对于写入操作,驱动程序/shell 会在写入 之前MongoDB database 对字段值进行加密。
对于读操作,驾驶员/ shell在发出读操作之前会对查询中的字段值进行加密。
对于返回加密字段的读操作,shell 仅当 驱动程序/ 配置为可以访问用于保护这些值的密钥时,驱动程序/ 才会 自动解密shell 这些值。
自动加密共享库是mongocryptd的首选替代方案,并且不需要生成新进程。 仍支持mongocryptd
。 要了解有关自动加密共享库的更多信息,请参阅自动加密共享库。
启用客户端字段级自动加密
每个官方MongoDB 4.2 + 兼容驾驶员都引入了支持自动加密和数据加密密钥管理的新功能。 请参阅您首选驱动程序的文档,获取有关实施自动客户端字段级加密的特定于语言的说明。
mongosh
向Mongo()
方法添加了一个附加选项,用于实例化具有自动客户端字段级加密的数据库连接。 有关完整示例,请参阅连接到已启用客户端自动加密的集群。
客户端字段级自动加密需要访问客户端主机上的自动加密共享库。 官方 MongoDB 4.2 + 兼容驱动程序提供了用于管理自动加密共享库的其他选项。 通常,如果共享库位于系统PATH
中,则4.2 + 兼容驱动程序和mongosh
可以访问该共享库。
在实例化数据库连接时,应用程序必须指定以下组件,以启用客户端字段级自动加密:
数据加密密钥的密钥保管库。 密钥保管库可以驻留在远程MongoDB 集群上,也可以驻留在存储客户端加密数据的MongoDB 集群上。
受支持的KMS ( KMS )提供商,用于管理客户主密钥 (CMK)。 MongoDB 在将所有数据加密密钥存储在密钥保管库之前,使用指定的 CMK 对其进行加密,仅元数据未加密。
4.2+ 兼容驱动程序、
mongosh
和MongoDB 4.2 或更高版本的旧版mongo
shell需要访问权限KMS才能加密和解密受保护字段或创建新的数据加密密钥。
服务器端字段级加密实施
从MongoDB 4.2开始,服务器支持使用模式验证对集合中的特定字段实施加密。 执行自动客户端字段级加密的客户端具有特定行为,具体取决于数据库连接配置:
如果连接
ClientSideFieldLevelEncryptionOptions
schemaMap
对象包含指定集合的密钥,则客户端使用该对象执行自动字段级加密,并忽略远程模式。 至少,本地规则必须加密远程模式标记为需要加密的字段。如果连接
ClientSideFieldLevelEncryptionOptions
schemaMap
对象不包含指定集合的密钥,客户端会下载该集合的服务器端远程模式,并使用它来执行自动字段级加密。此配置要求客户端相信服务器具有关于自动字段级加密的有效模式。 客户端仅使用远程模式执行字段级自动加密,而不会执行模式中指定的任何其他验证规则。
有关服务器端客户端字段级加密实施的完整文档,请参阅实施字段级加密模式。