上次更新时间:2019-12-05
本文档提供了应实施的安全措施列表,以保护MongoDB安装。该列表并非详尽无遗。
启用访问控制并指定身份验证机制。您可以使用MongoDB的SCRAM或x.509身份验证机制,也可以与现有的Kerberos / LDAP基础结构集成。身份验证要求所有客户端和服务器在连接到系统之前都必须提供有效的凭据。 |
创建一个用户管理员第一,然后创建更多的用户。为访问系统的每个人/应用程序创建一个唯一的MongoDB用户。 遵循最小特权原则。创建角色,以定义一组用户所需的确切访问权限。然后创建用户,并仅为其分配执行操作所需的角色。用户可以是个人或客户端应用程序。 小费 用户可以在不同的数据库之间拥有特权。如果用户需要对多个数据库的特权,请创建一个具有授予适用数据库特权的角色的单个用户,而不要在不同的数据库中多次创建该用户。 |
配置MongoDB以对所有传入和传出连接使用TLS / SSL。使用TLS / SSL加密MongoDB部署之间 从版本4.0开始,MongoDB使用本机TLS / SSL OS库:
注意 从版本4.0开始,MongoDB在可用TLS 1.1+的系统上禁用对TLS 1.0加密的支持。有关更多详细信息,请参阅禁用TLS 1.0。 |
从MongoDB Enterprise 3.2开始,您可以使用WiredTiger存储引擎的本机“静态加密”对存储层中的数据进行 加密。 | |
如果您不使用WiredTiger的加密功能,则应该在每个主机上使用文件系统,设备或物理加密(例如dm-crypt)对MongoDB数据进行加密。使用文件系统权限保护MongoDB数据。MongoDB数据包括数据文件,配置文件,审核日志和密钥文件。 | |
将日志收集到中央日志存储中。这些日志包含DB身份验证尝试,包括源IP地址。 |
确保MongoDB在受信任的网络环境中运行,并配置防火墙或安全组以控制MongoDB实例的入站和出站流量。 仅允许受信任的客户端访问可使用MongoDB实例的网络接口和端口。例如,使用IP白名单以允许从受信任的IP地址进行访问(请参阅参考资料) 注意 从MongoDB 3.6,MongoDB二进制文件 看到:
|
|
禁用直接SSH根访问。 |
跟踪对数据库配置和数据的访问和更改。 MongoDB Enterprise 包含一个系统审核工具,可以记录MongoDB实例上的系统事件(例如,用户操作,连接事件)。这些审核记录可以进行法医分析,并允许管理员验证适当的控制措施。您可以设置过滤器以记录特定事件,例如身份验证事件。 |
MongoDB支持执行某些服务器端操作的JavaScript代码:mapReduce 和
$where 。如果不使用这些操作,请使用--noscripting 命令行上的选项禁用服务器端脚本。 |
|
保持启用输入验证。默认情况下,MongoDB通过该net.wireObjectCheck 设置启用输入验证。这样可以确保mongod 实例存储的所有文档
都是有效的BSON。 |
看到
对于需要符合HIPAA或PCI-DSS要求的应用程序,请参考MongoDB安全参考架构, 以了解更多有关如何使用关键安全功能来构建兼容的应用程序基础结构的信息。 |
定期检查MongoDB产品CVE并升级您的产品。 | |
请咨询MongoDB生命周期终止日期并升级您的MongoDB安装。通常,尝试保持最新版本。 | |
确保您的信息安全管理系统策略和过程扩展到MongoDB安装,包括执行以下操作:
|