示意图
下图说明了 MongoDB 驱动程序或mongosh与客户端字段级加密 (CSFLE) 的每个组件之间的关系:
组件
以下部分将讨论上图中的各个组件。
libmongocrypt
libmongocrypt 是经 Apache 许可的开源 核心加密库,官方 MongoDB 驱动程序和 mongosh 使用该库来支持客户端字段级加密。某些驱动程序可能需要特定的集成步骤来安装或链接库。
要查看安装libmongocrypt的步骤,请参阅libmongocrypt 参考页面。
自动加密共享库
自动加密共享库是一个动态库,允许客户端应用程序执行自动加密。
自动加密共享库是 mongocryptd 的首选替代方案,并且不要求您生成另一个进程以执行自动加密。
注意
从 MongoDB 9.0 开始,mongocryptd 已弃用。请改用自动加密共享库。
要学习;了解有关自动加密的更多信息,请参阅 CSFLE 功能。
mongocryptd
重要
mongocryptd 已弃用
从 MongoDB 9.0 开始,mongocryptd 已弃用。请改用自动加密共享库。
mongocryptd 随MongoDB Enterprise Server 一起安装。
当您创建启用了 CSFLE 的 MongoDB 客户端时,默认情况下会自动启动mongocryptd进程。
mongocryptd 进程:
使用指定的自动加密规则对读写操作中的字段进行标记,以便加密。
防止在加密字段上执行不支持的操作。
分析为数据库连接指定的加密模式。自动加密规则使用严格的 JSON Schema 语法子集。如果规则包含无效的自动加密语法或任何
schema validation语法,mongocryptd将返回错误。
mongocryptd 仅执行上述功能,不执行以下任何操作:
mongocryptd不进行加密或解密mongocryptd不访问任何加密密钥材料mongocryptd不监听网络
为了执行字段加密和自动解密,驱动程序使用 Apache 许可的libmongocrypt库。
官方MongoDB驱动程序需要访问权限客户端托管上的 mongocryptd进程。这些客户端默认在系统 PATH 中搜索mongocryptd进程。
密钥保管库集合
密钥保管库集合是标准 MongoDB 集合,其中存储用于加密应用程序数据的所有数据加密密钥。 数据加密密钥本身在存储在密钥保管库集合之前使用客户主密钥 ( CMK ) 进行加密。 您可以将 Key Vault 集合托管在与存储加密应用程序数据的集群不同的MongoDB cluster上。
要学习;了解有关密钥保管库集合的更多信息,请参阅加密密钥和密钥保管库。
密钥管理系统
密钥管理系统 ( KMS ) 存储用于加密数据加密密钥的客户主密钥 ( CMK )。
要查看MongoDB支持的所有KMS提供程序的列表,请参阅KMS提供程序。
MongoDB 集群
存储加密数据的MongoDB 集群也可能实施客户端字段级加密。 有关服务器端模式执行的更多信息,请参阅CSFLE 服务器端模式执行。