Security Checklist

*最后更新:2019-12-05 *

本文档提供了应实施的安全措施列表,以保护 MongoDB 安装。该列表并非详尽无遗。

Pre-production Checklist/Considerations

➤启用访问控制并强制执行身份验证

启用访问控制并指定身份验证机制。您可以使用 MongoDB 的 SCRAM 或 x.509 身份验证机制,也可以与现有的 Kerberos/LDAP 基础结构集成。身份验证要求所有 Client 端和服务器在连接到系统之前都必须提供有效的凭据。


参见AuthenticationEnable Auth

➤配置基于角色的访问控制

首先创建一个用户 Management 员,然后创建其他用户。为访问系统的每个人/应用程序创建一个唯一的 MongoDB 用户。


遵循最小特权原则。创建角色,以定义一组用户所需的确切访问权限。然后创建用户,并仅为其分配执行操作所需的角色。用户可以是个人或 Client 应用程序。

Tip





用户可以在不同的数据库之间拥有特权。如果用户需要对多个数据库的特权,请创建一个具有授予适用数据库特权的角色的单个用户,而不要在不同的数据库中多次创建该用户。



参见基于角色的访问控制Management 用户和角色

➤加密通信(TLS/SSL)

配置 MongoDB 以对所有传入和传出连接使用 TLS/SSL。使用 TLS/SSL 加密 MongoDB 部署的mongodmongos组件之间以及所有应用程序和 MongoDB 之间的通信。

See 为 TLS/SSL 配置 mongod 和 mongos.

➤加密和保护数据

从 MongoDB Enterprise 3.2 开始,您可以使用 WiredTiger 存储引擎的本地静态加密加密存储层中的数据。
如果您不使用 WiredTiger 的加密功能,则应该在每个主机上使用文件系统,设备或物理加密(例如 dm-crypt)对 MongoDB 数据进行加密。使用文件系统权限保护 MongoDB 数据。 MongoDB 数据包括数据文件,配置文件,审核日志和密钥文件。
将日志收集到中央日志存储中。这些日志包含 DB 身份验证尝试,包括源 IP 地址。

➤限制网络曝光

确保 MongoDB 在受信任的网络环境中运行,并配置防火墙或安全组以控制 MongoDB 实例的入站和出站流量。


仅允许受信任的 Client 端访问可使用 MongoDB 实例的网络接口和端口。例如,使用 IP 白名单来允许从受信任的 IP 地址进行访问(请参阅参考资料)

Note





从 MongoDB 3.6 开始,MongoDB 二进制文件mongodmongos默认绑定到localhost。从 MongoDB 版本 2.6 到 3.4,默认情况下,只有来自正式 MongoDB RPM(Red Hat,CentOS,Fedora Linux 和衍生产品)和 DEB(Debian,Ubuntu 和衍生产品)软件包的二进制文件会绑定到localhost。要了解有关此更改的更多信息,请参见Localhost 绑定兼容性更改



See:
Security Hardening
net.bindIp配置设置
security.clusterIpSourceWhitelist配置设置
authenticationRestrictions指定每个用户的 IP 白名单。
| |禁用直接 SSH 根访问。

➤审核系统活动

跟踪对数据库配置和数据的访问和更改。 MongoDB Enterprise包含系统审核工具,可以记录 MongoDB 实例上的系统事件(例如,用户操作,连接事件)。这些审核记录可以进行法医分析,并允许 Management 员验证适当的控制措施。您可以设置过滤器以记录特定事件,例如身份验证事件。


参见AuditingConfigure Auditing

➤用专用用户运行 MongoDB

使用专用的 os 用户帐户运行 MongoDB 进程。确保该帐户具有访问数据的权限,但没有不必要的权限。


有关运行 MongoDB 的更多信息,请参见Install MongoDB

➤使用安全配置选项运行 MongoDB

MongoDB 支持对某些服务器端操作mapReducegroup$where执行 JavaScript 代码。如果不使用这些操作,请使用命令行上的--noscripting选项禁用服务器端脚本。
保持 Importing 验证启用。默认情况下,MongoDB 通过net.wireObjectCheck设置启用 Importing 验证。这样可以确保mongod实例存储的所有文档都是有效的BSON

➤索取《安全技术实施指南》(如果适用)

《安全技术实施指南》(STIG)包含美国国防部内部署的安全指南。 MongoDB Inc.可根据需要提供其 STIG。请索取副本以获取更多信息。

➤考虑符合安全标准

对于需要符合 HIPAA 或 PCI-DSS 要求的应用程序,请参考MongoDB 安全参考架构以了解有关如何使用关键安全功能来构建兼容的应用程序基础结构的更多信息。

定期/正在进行的生产检查

定期检查MongoDB 产品 CVE并升级您的产品。
请咨询MongoDB 生命周期终止日期并升级您的 MongoDB 安装。通常,尝试保持最新版本。
确保您的信息安全 Management 系统策略和过程扩展到您的 MongoDB 安装,包括执行以下操作:


定期将修补程序应用于计算机并查看准则。
查看策略/过程更改,尤其是对网络规则的更改,以防止 MongoDB 意外暴露于 Internet。
查看 MongoDB 数据库用户并定期轮换他们。