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