静态加密

静态加密与传输加密和保护相关帐户、密码和加密密钥的良好安全策略结合使用时,有助于确保符合安全和隐私标准,包括 HIPAA、PCI-DSS 和 FERPA

加密存储引擎

笔记:

企业版特证

仅在 MongoDB Enterprise 中可用。

重要的:

仅适用于 WiredTiger 存储引擎。

MongoDB Enterprise 3.2 为 WiredTiger 存储引擎引入了本机加密选项。此功能允许 MongoDB 加密数据文件,以便只有拥有解密密钥的方才能解码和读取数据。

加密过程

笔记:

在 4.0 版中更改

Windows 上的 MongoDB Enterprise 不再支持AES256-GCM. 此密码现在仅在 Linux 上可用。

如果启用加密,MongoDB Enterprise 使用的默认加密模式是AES256-CBC(或密码块链接模式下的 256 位高级加密标准)通过 OpenSSL。AES-256 使用对称密钥;即加密和解密文本的相同密钥。MongoDB Enterprise for Linux 还支持经过身份验证的加密 AES256-GCM(或 Galois/Counter 模式下的 256 位高级加密标准)。FIPS 模式加密也可用。

笔记:

AES256-GCM 和文件系统备份

为了加密存储引擎使用AES256-GCM加密模式,AES256-GCM要求每个进程使用唯一的计数器块值和密钥。

为了加密存储引擎 配置AES256-GCM密码:

  • 从热备份恢复

    从 4.2 开始,如果您从通过“热”备份(即正在mongod运行)获取的文件中恢复,MongoDB 可以在启动时检测到“脏”键并自动翻转数据库键以避免 IV(初始化向量)重用。

  • 从冷备份恢复

    但是,如果您从通过“冷”备份(即未mongod运行)获取的文件中恢复,MongoDB 无法在启动时检测到“脏”键,并且 IV 的重用会使机密性和完整性保证失效。

    从 4.2 开始,为了避免从冷文件系统快照恢复后重用密钥,MongoDB 添加了一个新的命令行选项--eseDatabaseKeyRollover。当使用该 --eseDatabaseKeyRollover选项启动时,mongod 实例会滚动使用 AES256-GCM密码配置的数据库密钥并退出。

提示:

  • 一般来说,如果对 MongoDB Enterprise 4.2+ 使用基于文件系统的备份,请尽可能使用“热”备份功能。
  • 对于 MongoDB Enterprise 版本 4.0 及更早版本,如果您使用 AES256-GCM加密模式,请不要复制数据文件或从文件系统快照(“热”或“冷”)恢复。

数据加密过程包括:

  • 生成主密钥。
  • 为每个数据库生成密钥。
  • 使用数据库密钥加密数据。
  • 使用主密钥加密数据库密钥。

加密透明地发生在存储层;即所有数据文件从文件系统的角度来看都是完全加密的,数据仅以未加密状态存在于内存中和传输过程中。

要加密 MongoDB 的所有网络流量,您可以使用 TLS/SSL(传输层安全/安全套接字层)。请参阅 为客户端配置TLS/SSLmongod``mongosTLS/SSL 配置。

密钥管理

重要的:

加密密钥的安全管理至关重要。

数据库密钥在服务器内部,并且仅以加密格式分页到磁盘。MongoDB 在任何情况下都不会将主密钥分页到磁盘。

只有主密钥在服务器外部(即与数据和数据库密钥分开保存),并且需要外部管理。为了管理主密钥,MongoDB 的加密存储引擎支持两种密钥管理选项:

  • 通过密钥管理互操作性协议 (KMIP) 与第三方密钥管理设备集成。受到推崇的
  • 通过密钥文件进行本地密钥管理。

要配置 MongoDB 进行加密并使用两个密钥管理选项之一,请参阅 配置加密。

加密和复制

加密不是复制的一部分:

  • 不复制主密钥和数据库密钥,并且
  • 数据未通过网络进行本地加密。

虽然您可以为节点重复使用相同的密钥,但 MongoDB 建议为每个节点使用单独的密钥以及使用传输加密。

有关详细信息,请参阅轮换加密密钥。

审计日志

仅在 MongoDB Enterprise 中可用。

使用 KMIP 服务器管理用于加密 MongoDB 审计日志的密钥

从 MongoDB 6.0 Enterprise 开始,您可以使用外部密钥管理互操作性协议 (KMIP) 服务器安全地管理用于加密 MongoDB 审计日志的密钥。

KMIP 简化了加密密钥的管理并消除了对非标准密钥管理流程的使用。

默认的 KMIP 协议版本是 1.2。您可以在 MongoDB 服务器配置文件中将 MongoDB 配置为使用 KMIP 版本 1.0 或 1.1

要将 KMIP 服务器与审计日志加密一起使用,请配置以下设置和参数:

要测试审核日志加密,您还可以使用该 auditLog.localAuditKeyFile设置。

auditLog.auditEncryptionKeyIdentifier从 MongoDB 6.0 开始,如果您需要降级到更早的 MongoDB 版本,您必须首先通过删除或 禁用审计日志加密

auditLog.localAuditKeyFile。现有的加密审计日志保持加密状态,您可以保留为存储和处理加密日志而开发的任何程序。

笔记:

对于审计日志加密,审计日志目标必须是一个文件。syslog不能用作目标。

未加密的审计日志和进程日志

如果您没有使用外部密钥管理互操作性协议 (KMIP) 服务器来管理用于加密审计日志的密钥(如上一节所示),则本节适用。

作为 MongoDB 加密存储引擎的一部分,审计日志文件未加密。作为正常操作的一部分,mongod日志记录的运行可能会将潜在的敏感信息输出到日志文件,具体取决于配置的日志详细程度。

使用该security.redactClientLogData设置可防止潜在的敏感信息进入mongod进程日志。设置redactClientLogData会减少日志中的详细信息,并可能使日志诊断复杂化。

有关详细信息,请参阅日志编辑手册条目。

应用层加密

应用层加密在应用层内提供基于每个字段或每个文档的加密。

4.2版新功能:MongoDB 4.2 系列驱动程序提供了客户端字段级加密框架。有关详细信息,请参阅 客户端字段级加密。

要加密完整文档,请编写自定义加密和解密例程或使用商业解决方案。

有关 MongoDB 认证合作伙伴的列表,请参阅合作伙伴名单.

译者:韩鹏帅

原文:Encryption at Rest

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""