本文介绍一些应实施的安全措施,以保护您的MongoDB安全。
1.启用访问控制和强制验证
启用访问控制并指定认证机制。可以使用默认的MongoDB身份验证机制或现有的外部框架。 认证要求所有客户端和服务器在连接到系统之前提供有效的凭据。 在群集部署中,为每个MongoDB服务器启用身份验证。
2.配置基于角色的访问控制
先创建用户管理员,然后创建其他用户。 为访问系统的每个人员和应用程序创建一个唯一的MongoDB用户。
创建定义一组用户需要的确切访问权限的角色。 遵循最低权限的原则。 然后创建用户并分配他们只需要执行其操作所需的角色。用户可以是个人或客户端应用程序。
3.加密通信
配置MongoDB为所有传入和传出连接使用TLS/SSL。 使用TLS/SSL加密MongoDB部署的mongod和mongos组件之间以及所有应用程序和MongoDB之间的通信。
4.加密和保护数据
从MongoDB Enterprise 3.2开始,WiredTiger存储引擎的本机加密在Rest中可以配置为加密存储层中的数据。
如果您没有使用WiredTiger的加密功能,则应使用文件系统,设备或物理加密在每台主机上对MongoDB数据进行加密。 使用文件系统权限保护MongoDB数据。MongoDB数据包括数据文件,配置文件,审核日志和密钥文件。
5.限制网络曝光
确保MongoDB在受信任的网络环境中运行,并限制MongoDB实例监听传入连接的接口。 只允许受信任的客户端访问MongoDB实例可用的网络接口和端口。
6.审计系统活动
跟踪数据库配置和数据的访问和更改。 MongoDB Enterprise包括一个系统审核工具,可以在MongoDB实例上记录系统事件(例如用户操作,连接事件)。 这些审核记录允许进行法证分析,并允许管理员验证正确的控制。
7.使用专用用户运行MongoDB
使用专用的操作系统用户帐户运行MongoDB进程。 确保帐户具有访问数据但没有不必要权限的权限而导致的安全问题。
8.使用安全配置选项运行MongoDB
MongoDB支持执行某些服务器端操作的JavaScript代码:mapReduce
,group
和$where
。 如果不使用这些操作,请使用命令行上的--noscripting
选项禁用服务器端脚本。
在生产部署中仅使用MongoDB线路协议。 不启用以下功能,所有这些都启用了Web服务器接口:net.http.enabled
,net.http.JSONPEnabled
和net.http.RESTInterfaceEnabled
。保持这些禁用,除非向后兼容性要求。
注:自 MongoDB3.2 版本以来已弃用:MongoDB的HTTP接口
保持输入验证有效。 MongoDB默认通过wireObjectCheck
设置启用输入验证。 这确保了mongod实例存储的所有文档都是有效的BSON。
9.请求安全技术实施指南(如适用)
“安全技术实施指南”(STIG)载有美国国防部内部署的安全准则。 MongoDB Inc.根据要求提供其STIG,用于需要的情况。 请索取副本以获取更多信息。