本文提供了一个较为全面的MongoDB安全基准参考,您完全可以根据组织内部情况开展合理规划使用,参考它们可以更好的保护您的数据安全。

启用访问控制和强制认证

启用访问控制并指定身份验证机制。可以使用默认的MongoDB认证机制或已有的外部框架。身份验证要求所有客户机和服务器在连接到系统之前提供有效凭据。

在部署集群时,确保为每个MongoDB服务器启用了身份认证。

身份验证

访问控制

配置基于角色的访问控制

首先创建一个管理员(administrator)用户,然后再创建其他用户。为每个使用者创建一个独特的MongoDB用户,适用对应的访问控制策略。

创建角色(精确的确定一组用户的访问需求,遵循最小特权原则),然后创建用户,并为他们分配执行操作所需的角色。一个用户可以是一个人或一个客户端应用程序。

基于角色的访问控制

用户和角色管理

加密通信

配置MongoDB使用TLS / SSL处理所有输入和输出的通信。使用TLS / SSL加密mongod 和 mongos组件之间、所有应用程序和MongoDB之间的通信。

配置mongod 和 mongos支持TLS / SSL

加密和保护数据

从MongoDB企业版3.2开始将WiredTiger设置为了默认的存储引擎,本地加密策略可以实现存储层的数据加密。

如果没有使用wiredtiger加密,应当使用文件系统、设备或物理加密的方式对每个主机上的MongoDB数据加密,保护利用MongoDB数据文件系统的访问权限。MongoDB数据包括数据文件、配置文件、审计日志和密钥文件。

加密配置

限制网络曝光

确保MongoDB运行在可信网络环境下,限制MongoDB实例侦听的传入的连接接口。只允许受信任的客户端访问MongoDB实例的网络接口和端口。

安全加固

bindip设置

审计系统活动

跟踪数据哭库配置和数据的访问和更改。MongoDB企业版包括系统审计功能,允许用户记录MongoDB实例的系统事件(如用户操作、连接事件)。这些审计记录允许取证分析,并允许管理员验证适当的控制。

审计功能

配置审计

 

使用一个专用账户运行MongoDB

使用专用的操作系统的用户帐户运行MongoDB。确保帐户具有一定的访问数据的权限,权限的设置遵守最小权限原则,不授予任何不必要的权限。。

安装MongoDB

设置MongoDB的安全配置选项

MongoDB支持某些服务器端的操作,如JavaScript代码执行:mapReduce, group和 $where。如果你不使用这些操作,应当禁用服务器端的脚本执行(在命令行执行 — noscripting选项)。

只在生产部署时使用MongoDB Wire协议。不启用以下内容:net.http.enabled,net.http.jsonpenabled和net.http.restinterfaceenabled,这些都会用到Web服务器接口。把这些禁用掉,除非需要向后兼容。

注意:自V3.2版本后,MongoDB使用HTTP接口

确保启用了输入验证功能。MongoDB可以通过设置 wireobjectcheck 默认开启输入验证。这将确保所有的文件都被mongod实例有效的存储为BSON格式。

安全技术实施指南、安全合规性

MongoDB公司提供了安全技术实施指南(STIG),如果需要,可以索取文件副本;

如果需要遵从HIPAA和PCI-DSS的合规要求,可以参阅MongoDB的安全参考架构以了解更多相关信息。