安全检查表
本文档提供了一个安全措施列表,您应该实施这些措施来保护您的 MongoDB 安装。该清单并非详尽无遗。
生产前检查清单/注意事项
启用访问控制并强制执行身份验证
启用访问控制并指定身份验证机制
MongoDB 社区支持多种身份验证机制,客户端可以使用这些机制来验证其身份:
- SCRAM(默认)
- x.509 证书身份验证。
除了上述机制外,MongoDB Atlas 和 MongoDB Enterprise 还支持以下机制:
这些机制允许 MongoDB 集成到您现有的身份验证系统中。
提示:
也可以看看:
配置基于角色的访问控制
先创建用户管理员 ,再创建其他用户。为访问系统的每个人/应用程序创建一个唯一的 MongoDB 用户。
遵循最小特权原则。创建定义一组用户所需的确切访问权限的角色。然后创建用户并仅向他们分配执行操作所需的角色。用户可以是个人或客户端应用程序。
笔记:
一个用户可以拥有跨不同数据库的权限。如果用户需要多个数据库的权限,请创建一个具有授予适用数据库权限的角色的用户,而不是在不同的数据库中多次创建用户。
提示:
也可以看看:
加密通信 (TLS/SSL)
将 MongoDB 配置为对所有传入和传出连接使用 TLS/SSL。使用 TLS/SSL 加密 MongoDB 部署组件之间以及所有应用程序和 MongoDB 之间的
mongod
通信。mongos
MongoDB 使用本机 TLS/SSL 操作系统库:
| 平台 | TLS/SSL 库 | | :----------- | :------------------ | | 视窗 | 安全通道 (Schannel) | | 操作系统/BSD | 打开SSL | | 苹果系统 | 安全运输 |
提示:
也可以看看:
加密和保护数据
- 您可以使用 WiredTiger 存储引擎的本机静态加密对存储层中的数据进行加密。
- 如果您未使用 WiredTiger 的静态加密,则应使用文件系统、设备或物理加密(例如 dm-crypt)在每个主机上对 MongoDB 数据进行加密。您还应该使用文件系统权限来保护 MongoDB 数据。MongoDB数据包括数据文件、配置文件、审计日志和密钥文件。
- 在通过线路将数据传输到服务器之前,您可以使用可查询加密或客户端字段级加密来加密文档应用程序端中的字段。
- 将日志收集到中央日志存储。这些日志包含数据库身份验证尝试,包括源 IP 地址。
限制网络曝光
- 确保 MongoDB 在受信任的网络环境中运行,并配置防火墙或安全组来控制 MongoDB 实例的入站和出站流量。
- 禁用直接 SSH root 访问。
- 只允许受信任的客户端访问 MongoDB 实例可用的网络接口和端口。
提示:
也可以看看:
- 网络和配置强化
- 配置
net.bindIp
设置 - 配置
security.clusterIpSourceAllowlist
设置 - 命令的 authenticationRestrictions 字段 指定每个
db.createUser()
用户的 IP 允许列表。
审核系统活动
- 跟踪对数据库配置和数据的访问和更改。 MongoDB 企业版 包括一个系统审计工具,可以记录 MongoDB 实例上的系统事件(包括用户操作和连接事件)。这些审计记录允许进行取证分析,并允许管理员进行适当的控制。您可以设置过滤器以仅记录特定事件,例如身份验证事件。
提示:
也可以看看:
使用专用用户运行 MongoDB
- 使用专用操作系统用户帐户运行 MongoDB 进程。确保该帐户具有访问数据的权限,但没有不必要的权限。
提示:
也可以看看:
使用安全配置选项运行 MongoDB
- MongoDB 支持为某些服务器端操作 执行 JavaScript 代码:
mapReduce
、、、和。如果您不使用这些操作,请使用该选项禁用服务器端脚本。$where
$accumulator
$function
--noscripting
- 保持输入验证启用。MongoDB 通过
net.wireObjectCheck
设置默认启用输入验证。这确保实例存储的所有文档mongod
都是有效的BSON 。
- MongoDB 支持为某些服务器端操作 执行 JavaScript 代码:
索取安全技术实施指南(如适用)
- 安全技术实施指南 (STIG) 包含美国国防部内部部署的安全指南。MongoDB Inc. 提供其 STIG,基于 要求.
考虑安全标准合规性
- 对于需要 HIPAA 或 PCI-DSS 合规性的应用,请参阅MongoDB 安全参考架构 了解有关如何使用 MongoDB 的关键安全功能构建合规应用程序基础设施的更多信息。
定期/持续的生产检查
- 定期检查MongoDB 产品 CVE并升级您的产品。
- 咨询的MongoDB 生命周期结束日期并根据需要升级您的 MongoDB 安装。一般来说,尽量保持最新版本。
- 确保您的信息安全管理系统策略和程序扩展到您的 MongoDB 安装,包括执行以下操作:
- 定期为您的机器应用补丁。
- 查看策略/程序更改,尤其是对网络规则的更改,以防止无意中将 MongoDB 暴露在 Internet 上。
- 查看 MongoDB 数据库用户并定期轮换他们。
报告可疑的安全漏洞
如果您怀疑您在任何 MongoDB 产品中发现了安全漏洞,请通过 MongoDB 报告该问题错误提交表格.
译者:韩鹏帅