自管理部署的安全检查清单
本文档提供了应实施用以保护 MongoDB 安装的安全措施列表。此列表并非详尽。
预生产检查清单/注意事项
➤ 启用访问控制并强制执行身份验证
启用访问控制并指定身份验证机制。
MongoDB Community 支持多种身份验证机制,客户端可利用这些机制来验证其身份:
除上述机制外,MongoDB Atlas 和 MongoDB Enterprise 还支持以下机制:
这些机制允许 MongoDB 集成到您的当前身份验证系统中。
➤ 配置基于角色的访问控制
首先创建用户管理员,然后再创建其他用户。为访问系统的每个人/应用程序创建唯一的 MongoDB 用户。
遵循最小权限原则。创建角色,用于定义一组用户所需的确切访问权限。然后创建用户,并仅向其分配执行操作所需的角色。用户可以是个人或客户端应用程序。
注意
用户可以拥有跨不同数据库的权限。如果用户需要多个数据库的权限,请创建一个具有授予适用数据库权限的角色的用户,而不是在不同数据库中多次创建用户。
➤ 加密通信 (TLS/SSL)
➤ 加密和保护数据
您可以通过 WiredTiger 存储引擎的原生静态加密来加密存储层中的数据。
如不使用 WiredTiger 的静态加密,则应使用文件系统、设备或物理加密(例如 dm-crypt)在每个主机上对 MongoDB 数据进行加密。还应使用文件系统权限保护 MongoDB 数据。MongoDB 数据包括数据文件、配置文件、审核日志和关键文件。
在通过线路将数据传输到服务器之前,您可以使用 Queryable Encryptio(可查询加密)或 Client-Side Field Level Encryption(客户端字段级加密)对文档应用程序端内的字段进行加密。
将日志收集到中央日志存储中。这些日志包含数据库身份验证尝试,包括源 IP 地址。
➤ 限制网络暴露
确保 MongoDB 在受信任的网络环境中运行,并配置防火墙或安全群组来控制 MongoDB 实例的入站和出站流量。
禁用直接 SSH 根访问权限。
仅允许可信客户端访问 MongoDB 实例可用的网络接口和端口。
➤ 审核系统活动
跟踪数据库配置和数据的访问与更改。MongoDB Enterprise 包含一个系统审核工具,它可记录有关 MongoDB 实例的系统事件(包括用户操作和连接事件)。这些审核记录支持取证分析,并允许管理员进行适当控制。您可将过滤器设为仅记录特定事件,例如身份验证事件。
➤ 使用专用用户来运行 MongoDB
使用专用的操作系统用户帐户运行 MongoDB 进程。确保该帐户具有访问数据的权限,但没有不必要的权限。
➤ 使用安全配置选项运行 MongoDB
MongoDB 支持在某些服务器端操作中执行 JavaScript 代码:
mapReduce
、$where
、$accumulator
和$function
。如果不使用这些操作,请使用--noscripting
选项禁用服务器端脚本。保持启用输入验证。默认情况下,MongoDB 通过
net.wireObjectCheck
设置启用输入验证。这可确保mongod
实例存储的所有文档都是有效的 BSON。
➤ 索取安全技术实施指南(如果适用)
《安全技术实现指南》(STIG) 提供针对美国国防部内部部署的安全准则。MongoDB Inc. 可应要求提供其 STIG。
➤ 考虑安全标准合规性
对于需要 HIPAA 或 PCI-DSS 合规性的应用程序,请参阅 MongoDB 安全参考架构,详细了解如何使用 MongoDB 的关键安全功能来构建合规的应用程序基础架构。
防病毒和端点检测及响应扫描
如果使用防病毒 (AV) 扫描程序或端点检测与响应 (EDR) 扫描程序,请将扫描程序配置为从扫描中排除 database storage path
和 database log path
。
database storage path
中的数据文件已压缩。此外,如果使用加密存储引擎,这些数据文件也会被加密。扫描这些文件的 I/O 和 CPU 成本可能会严重降低性能,同时不提供任何安全优势。
如不排除 database storage path
和 database log path
中的目录,扫描程序可能会隔离或删除重要文件。丢失或隔离的文件可能会损坏数据库并使 MongoDB 实例崩溃。
定期/持续生产检查
定期检查 MongoDB 产品 CVE并升级您的产品。
请参考 MongoDB 生命周期结束日期,并根据需要升级 MongoDB 安装。一般来说,尽量使用最新版本。
确保信息安全管理系统策略和程序扩展到 MongoDB 安装,包括执行以下操作:
定期在计算机上应用补丁。
审核策略/程序更改,尤其网络规则的更改,防止 MongoDB 无意中暴露于互联网。
检查 MongoDB 数据库用户并定期轮换。
报告可疑安全缺陷
如果怀疑自己在任何 MongoDB 产品中发现了安全漏洞,请通过 MongoDB 错误提交表报告问题。