Configure Encryption

在本页面

3.2 版中的新功能。

Overview

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

Important

仅适用于 WiredTiger 存储引擎。

MongoDB Enterprise 3.2 为 WiredTiger 存储引擎引入了本机加密选项。对于存储加密,加密密钥的安全 Management 至关重要。

只有主密钥在服务器外部,并且需要外部 Management。为了 Management 主密钥,MongoDB 的加密存储引擎支持两个密钥 Management 选项:

  • 通过密钥 Management 互操作性协议(KMIP)与第三方密钥 Management 设备集成。 推荐的

  • 通过密钥文件使用本地密钥 Management。

以下教程概述了配置 MongoDB 进行加密和密钥 Management 的过程。

Key Manager

MongoDB Enterprise 通过兼容的密钥 Management 设备支持密钥的安全传输。使用密钥 Management 器允许将密钥存储在密钥 Management 器中。

MongoDB Enterprise 支持符合密钥 Management 互操作性协议(KMIP)的密钥 Management 设备的密钥安全传输。任何支持 KMIP 的设备供应商都应该兼容。

有关 MongoDB 认证合作伙伴的列表,请参阅Partners List。要查看安全伙伴,请从“技术”过滤器中选择“安全”,然后从“认证”过滤器中选择“已认证”。

Recommended

使用密钥 Management 器符合法规密钥 Management 准则,例如 HIPAA,PCI-DSS 和 FERPA,建议在本地密钥 Management 上使用。

Prerequisites

  • 您的密钥 Management 员必须支持 KMIP 通信协议。

  • 要将 MongoDB 认证到 KMIP 服务器,您必须具有密钥 Management 设备颁发的有效证书。

使用新密钥加密

要创建新密钥,请使用以下选项通过启动mongodmongod连接到密钥 Management 器:

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

以下操作在您的密钥 Management 器中创建一个新的主密钥,mongod用来加密mongod为每个数据库生成的密钥。

mongod --enableEncryption --kmipServerName <KMIP Server HostName> \
  --kmipPort <KMIP server port> --kmipServerCAFile ca.pem \
  --kmipClientCertificateFile client.pem

连接到 KMIP 服务器时,mongod验证指定的--kmipServerName是否与 KMIP 服务器提供的证书中的主题备用名称SAN(或者,如果不存在SAN,则为通用名称CN)匹配。如果存在SAN,则mongodCN不匹配。如果主机名与SAN(或CN)不匹配,则mongod将无法连接。

要验证密钥创建和使用是否成功,请检查日志文件。如果成功,该过程将记录以下消息:

[initandlisten] Created KMIP key with id: <UID>
[initandlisten] Encryption key manager initialized using master key with id: <UID>

使用现有密钥加密

您可以使用 KMIP 服务器创建和 Management 的现有主密钥。要使用现有密钥,请使用以下选项通过启动mongodmongod连接到密钥 Management 器:

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

mongod --enableEncryption --kmipServerName <KMIP Server HostName> \
  --kmipPort <KMIP server port> --kmipServerCAFile ca.pem \
  --kmipClientCertificateFile client.pem --kmipKeyIdentifier <UID>

连接到 KMIP 服务器时,mongod验证指定的--kmipServerName是否与 KMIP 服务器提供的证书中的主题备用名称SAN(或者,如果不存在SAN,则为通用名称CN)匹配。如果存在SAN,则mongodCN不匹配。如果主机名与SAN(或CN)不匹配,则mongod将无法连接。

本地密钥 Management

Important

使用密钥文件方法不符合大多数法规密钥 Management 准则,并且要求用户安全地 Management 自己的密钥。

密钥文件的安全 Management 至关重要。

要使用密钥文件进行加密,您必须具有包含 16 或 32 个字符串的 base64 编码密钥文件。密钥文件只能由mongod进程的所有者访问。

  • 使用 16 或 32 个字符串创建 base64 编码的密钥文件。您可以使用任何喜欢的方法来生成编码的密钥文件。例如,
openssl rand -base64 32 > mongodb-keyfile
  • 更新文件权限。
chmod 600 mongodb-keyfile
  • 要使用密钥文件,请使用以下选项以mongod开头:

  • --enableEncryption ,

  • --encryptionKeyFile <path to keyfile> ,

mongod --enableEncryption --encryptionKeyFile  mongodb-keyfile

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

  • 验证加密密钥 Management 器是否已成功使用密钥文件初始化。如果操作成功,则该过程将记录以下消息:
[initandlisten] Encryption key manager initialized with key file: <path to keyfile>