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

安装和配置 CSFLE 库

本页内容

  • 开始之前
  • 步骤

MongoDB 可以使用两个库之一进行客户端字段级加密 (CSFLE)。推荐的库是自动加密共享库。

要使用带自动加密的CSFLE,您必须首先选择MongoDB用于加密字段的库。

  • crypt_shared,推荐的CSFLE库。

  • mongocryptd,包含在MongoDB企业服务器安装中。

两者都需要libmongocrypt库。更多信息,请参阅为CSFLE安装libmongocrypt.

自动加密共享库是一个 动态库,它使您的客户端应用程序能够执行自动加密。动态库是一组在运行时而不是编译时由应用程序访问的功能。自动加密共享库执行以下任务

  • 读取加密模式以确定要加密或解密哪些字段

  • 防止您的应用程序在加密字段上执行不受支持的操作

自动加密共享库 不会 执行以下操作

  • 执行数据加密或解密

  • 访问加密密钥材料

  • 监听网络上的数据

自动加密共享库是 mongocryptd 的首选替代方案,并且不需要您启动另一个进程来执行自动加密。

注意

虽然我们推荐使用自动加密共享库,但 mongocryptd 仍然得到支持。

要了解更多关于自动加密的信息,请参阅 功能。

mongocryptd使用MongoDB企业版服务器进行安装。

当您创建一个启用CSFLE的MongoDB客户端时,默认情况下mongocryptd进程会自动启动。

mongocryptd进程

  • 使用指定的自动加密规则来标记读和写操作中的字段进行加密。

  • 防止在加密字段上执行不受支持的操作。

  • 解析数据库连接指定的加密模式。自动加密规则使用JSON模式语法的严格子集。如果规则包含无效的自动加密语法或任何文档验证语法,则mongocryptd返回错误。

mongocryptd仅执行以下功能,而不执行以下任何操作

  • mongocryptd不执行加密或解密

  • mongocryptd不访问任何加密密钥材料

  • mongocryptd不通过网络监听

为了执行字段加密和自动解密,驱动程序使用Apache许可证的libmongocrypt库。

官方MongoDB驱动程序需要访问客户端主机上的mongocryptd进程。这些客户端默认情况下在系统PATH中搜索mongocryptd进程。

1

MongoDB 下载中心下载自动加密共享库,选择版本和平台,然后选择库

  1. 版本下拉菜单中,选择标有“当前”的版本。

  2. 平台下拉菜单中,选择您的平台。

  3. 下拉菜单中,选择crypt_shared

  4. 点击下载

提示

要查看可用版本和包的扩展列表,请参阅MongoDB 企业下载。

2

您可以通过以下参数配置驱动程序如何搜索自动加密共享库:

名称
描述
cryptSharedLibPath

指定自动加密共享库包的绝对路径,crypt_shared

默认值: undefined

cryptSharedLibRequired

指定驱动程序是否必须使用自动加密共享库。如果设置为true,当自动加密共享库不可用时,驱动程序会引发错误。如果设置为false,驱动程序将执行以下操作序列:

  1. 尝试使用自动加密共享库。

  2. 如果自动加密共享库不可用,驱动程序尝试启动并连接到mongocryptd

默认值: false

要查看如何配置这些参数的示例,请参阅快速入门。

1

对于支持的 Linux 操作系统: 要安装服务器包,请遵循在 Linux 上安装教程,并安装 mongodb-enterprise 服务器包。或者,指定 mongodb-enterprise-cryptd 以仅安装 mongocryptd 二进制文件。包管理器将二进制文件安装到系统路径中的位置。

对于 OSX: 要安装服务器包,请遵循在 MacOS 上安装教程。包管理器将二进制文件安装到系统路径中的位置。

对于 Windows: 要安装服务器包,请遵循在 Windows 上安装教程。您必须在安装后添加 mongocryptd 包到您的系统路径。遵循您 Windows 安装的文档最佳实践将 mongocryptd 二进制文件添加到系统路径。

从官方 tarball / ZIP 存档安装: 要从官方存档安装,请遵循您操作系统的文档最佳实践,将 mongocryptd 二进制文件添加到您的系统路径。

2

如果驱动程序可以访问 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'])

返回

密码学

本页内容