安装和配置 mongocryptd 以实现 Queryable Encryption
Overview
注意
Enterprise 版功能
字段级加密的自动功能仅在 MongoDB Enterprise 4.2 或更高版本以及 MongoDB Atlas 4.2 或更高版本集群中可用。
mongocryptd
随MongoDB Enterprise MongoDB Server (版本 4.2 及更高版本)一起安装。
当您创建启用了 Queryable Encryption 的 MongoDB 客户端时,默认情况下会自动启动mongocryptd
进程并处理以下职责:
使用指定的自动加密规则对读写操作中的字段进行标记,以便加密。
防止对加密字段执行不支持的操作。
解析为数据库连接指定的加密模式。 自动加密规则使用严格的 JSON schema 语法子集。 如果自动加密规则包含无效的自动加密语法或任何文档验证语法,
mongocryptd
将返回错误。
mongocryptd
仅负责上述功能,不执行以下操作:
mongocryptd
本身不执行加密或解密mongocryptd
不访问任何加密密钥材料mongocryptd
不侦听网络
与MongoDB4.2 及更高版本兼容的驱动程序使用 Apache 许可的 libmongocrypt 用于执行客户端字段级加密和自动解密的库。
官方MongoDB 4.2+ 兼容驱动程序mongosh
和 4.2 或更高版本的旧版mongo
shell需要访问权限客户端托管上的 mongocryptd
进程。 这些客户端默认在系统 PATH 中搜索mongocryptd
进程。
安装
对于支持的 Linux 操作系统,按照在 Linux 上安装教程安装 Server 包,遵循安装文档说明并安装 mongodb-enterprise
Server 包。或者,指定 mongodb-enterprise-cryptd
,仅安装 mongocryptd
二进制文件。包管理器将二进制文件安装到系统 PATH 的某个位置(例如 /usr/bin/
)
对于 OSX,请按照在 MacOS 上安装教程安装 Server 包。包管理器将二进制文件安装到系统 PATH 的某个位置。
对于 Windows,请按照在 Windows 上安装教程安装 Server 包。安装后,您必须将 mongocryptd
包添加到系统 PATH。有关将 mongocryptd
二进制文件添加到系统 PATH 的说明,遵循 Windows 安装文档的最佳实践。
如果通过官方 Tarball 或 ZIP 存档进行安装,请遵循操作系统所记录的最佳实践,向系统路径添加 mongocryptd
二进制文件。
配置
如果 4.2+ 兼容驱动程序可以访问mongocryptd
进程,则默认,驱动程序会托管mongocryptd
进程的生成。
注意
mongocryptd 端口正在使用中
如果mongocryptd
进程已在驱动程序指定的端口上运行,则驱动程序可能会记录警告并继续运行,而不会生成新进程。 驱动程序指定的任何设置仅在现有进程退出并且新的加密客户端尝试连接时适用。
您可以通过以下参数配置驱动程序启动mongocryptd
的方式:
名称 | 说明 |
---|---|
端口 | The port from which mongocryptd listens for messages.Specify this value in the AutoEncryptionSettings .Default: 27020 |
idleShutdownTimeoutSecs | Number of idle seconds in which the mongocryptd process should wait before exiting.Specify this value in the AutoEncryptionSettings .Default: 60 |
重要
引导时启动
如果可能,我们建议在引导时启动mongocryptd
,而不是按需启动。
示例
要查看如何配置 mongocryptd
进程的示例,请单击与应用程序中使用的驱动程序对应的标签页:
以下代码片段设置 mongocryptd
的监听端口配置:
var extraOptions = new Dictionary<string, object>() { { "mongocryptdSpawnArgs", new [] { "--port=30000" } }, }; autoEncryptionOptions.With(extraOptions: extraOptions);
以下代码片段设置 mongocryptd
的默认超时配置:
var extraOptions = new Dictionary<string, object>() { { "idleShutdownTimeoutSecs", 60 }, }; autoEncryptionOptions.With(extraOptions: extraOptions);
以下代码片段设置 mongocryptd
的监听端口配置:
extraOptions := map[string]interface{}{ "mongocryptdSpawnArgs": []string{ "--port=30000", }, }
以下代码片段设置 mongocryptd
的默认超时配置:
extraOptions := map[string]interface{}{ "mongocryptdSpawnArgs": []string{ "--idleShutdownTimeoutSecs=75", }, }
以下代码片段设置 mongocryptd
的监听端口配置:
List<String> spawnArgs = new ArrayList<String>(); spawnArgs.add("--port=30000"); Map<String, Object> extraOpts = new HashMap<String, Object>(); extraOpts.put("mongocryptdSpawnArgs", spawnArgs); AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder() ... .extraOptions(extraOpts);
以下代码片段设置 mongocryptd
的默认超时配置:
List<String> spawnArgs = new ArrayList<String>(); spawnArgs.add("--idleShutdownTimeoutSecs") .add("60"); Map<String, Object> extraOpts = new HashMap<String, Object>(); extraOpts.put("mongocryptdSpawnArgs", spawnArgs); AutoEncryptionSettings autoEncryptionSettings = AutoEncryptionSettings.builder() ... .extraOptions(extraOpts);
以下代码片段设置 mongocryptd
的监听端口配置:
autoEncryption: { ... extraOptions: { mongocryptdSpawnArgs: ["--port", "30000"], mongocryptdURI: 'mongodb://localhost:30000', }
注意
在当前版本 (3.3.4) 的 NodeJS 驱动程序中,您必须指定mongocryptdURI
以匹配侦听端口。
以下代码片段设置 mongocryptd
的默认超时配置:
autoEncryption: { ... extraOptions: { mongocryptdSpawnArgs: ["--idleShutdownTimeoutSecs", "75"] }
以下代码片段设置 mongocryptd
的监听端口配置:
auto_encryption_opts = AutoEncryptionOpts(mongocryptd_spawn_args=['--port=30000'])
以下代码片段设置 mongocryptd
的默认超时配置:
auto_encryption_opts = AutoEncryptionOpts(mongocryptd_spawn_args=['--idleShutdownTimeoutSecs=75'])