安装和配置 CSFLE 库
MongoDB 可以使用两个库之一进行客户端字段级加密 (CSFLE)。推荐的库是自动加密共享库。
开始之前
要使用带自动加密的CSFLE,您必须首先选择MongoDB用于加密字段的库。
crypt_shared,推荐的CSFLE库。
mongocryptd,包含在MongoDB企业服务器安装中。
两者都需要libmongocrypt
库。更多信息,请参阅为CSFLE安装libmongocrypt.
自动加密共享库
自动加密共享库是一个 动态库,它使您的客户端应用程序能够执行自动加密。动态库是一组在运行时而不是编译时由应用程序访问的功能。自动加密共享库执行以下任务
读取加密模式以确定要加密或解密哪些字段
防止您的应用程序在加密字段上执行不受支持的操作
自动加密共享库 不会 执行以下操作
执行数据加密或解密
访问加密密钥材料
监听网络上的数据
自动加密共享库是 mongocryptd
的首选替代方案,并且不需要您启动另一个进程来执行自动加密。
注意
虽然我们推荐使用自动加密共享库,但 mongocryptd
仍然得到支持。
要了解更多关于自动加密的信息,请参阅 功能。
mongocryptd
mongocryptd
使用MongoDB企业版服务器进行安装。
当您创建一个启用CSFLE的MongoDB客户端时,默认情况下mongocryptd
进程会自动启动。
mongocryptd
进程
使用指定的自动加密规则来标记读和写操作中的字段进行加密。
防止在加密字段上执行不受支持的操作。
解析数据库连接指定的加密模式。自动加密规则使用JSON模式语法的严格子集。如果规则包含无效的自动加密语法或任何
文档验证
语法,则mongocryptd
返回错误。
mongocryptd
仅执行以下功能,而不执行以下任何操作
mongocryptd
不执行加密或解密mongocryptd
不访问任何加密密钥材料mongocryptd
不通过网络监听
为了执行字段加密和自动解密,驱动程序使用Apache许可证的libmongocrypt库。
官方MongoDB驱动程序需要访问客户端主机上的mongocryptd
进程。这些客户端默认情况下在系统PATH
中搜索mongocryptd
进程。
步骤
下载自动加密共享库
从MongoDB 下载中心下载自动加密共享库,选择版本和平台,然后选择库
在版本下拉菜单中,选择标有“当前”的版本。
在平台下拉菜单中,选择您的平台。
在包下拉菜单中,选择
crypt_shared
。点击下载。
提示
要查看可用版本和包的扩展列表,请参阅MongoDB 企业下载。
配置自动加密共享库
您可以通过以下参数配置驱动程序如何搜索自动加密共享库:
名称 | 描述 |
---|---|
cryptSharedLibPath | 指定自动加密共享库包的绝对路径, 默认值: |
cryptSharedLibRequired | 指定驱动程序是否必须使用自动加密共享库。如果设置为
默认值: |
要查看如何配置这些参数的示例,请参阅快速入门。
安装 mongocryptd
对于支持的 Linux 操作系统: 要安装服务器包,请遵循在 Linux 上安装教程,并安装 mongodb-enterprise
服务器包。或者,指定 mongodb-enterprise-cryptd
以仅安装 mongocryptd
二进制文件。包管理器将二进制文件安装到系统路径中的位置。
对于 OSX: 要安装服务器包,请遵循在 MacOS 上安装教程。包管理器将二进制文件安装到系统路径中的位置。
对于 Windows: 要安装服务器包,请遵循在 Windows 上安装教程。您必须在安装后添加 mongocryptd
包到您的系统路径。遵循您 Windows 安装的文档最佳实践将 mongocryptd
二进制文件添加到系统路径。
从官方 tarball / ZIP 存档安装: 要从官方存档安装,请遵循您操作系统的文档最佳实践,将 mongocryptd
二进制文件添加到您的系统路径。
配置 mongocryptd
如果驱动程序可以访问 mongocryptd
进程,则默认会启动该进程。
重要
开机启动
如果可能,请在开机时启动 mongocryptd
,而不是按需启动。
通过以下参数配置驱动程序如何启动 mongocryptd
名称 | 描述 |
---|---|
端口号 | mongocryptd 监听消息的端口。默认: 27020 |
空闲关闭超时秒数 | mongocryptd 进程在退出前等待的空闲秒数。默认: 60 |
mongocryptdURI | 运行 mongocryptd 进程的 URI。默认: "mongodb://127.0.0.1:27020" |
mongocryptdBypassSpawn | 当为 true 时,防止驱动程序自动启动 mongocryptd 。默认: false |
mongocryptdSpawnPath | 到 mongocryptd 的完整路径。默认: 默认为空字符串,从系统路径启动。 |
如果驱动程序指定的端口上已经运行着 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://127.0.0.1:30000', }
注意
在 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'])