本文介绍一些应实施的安全措施,以保护您的mongodb安全。
启用访问控制并指定认证机制。可以使用默认的mongodb身份验证机制或现有的外部框架。 认证要求所有客户端和服务器在连接到系统之前提供有效的凭据。 在群集部署中,为每个mongodb服务器启用身份验证。
先创建用户管理员,然后创建其他用户。 为访问系统的每个人员和应用程序创建一个唯一的mongodb用户。
创建定义一组用户需要的确切访问权限的角色。 遵循最低权限的原则。 然后创建用户并分配他们只需要执行其操作所需的角色。用户可以是个人或客户端应用程序。
配置mongodb为所有传入和传出连接使用tls/ssl。 使用tls/ssl加密mongodb部署的mongod和mongos组件之间以及所有应用程序和mongodb之间的通信。
从mongodb enterprise 3.2开始,wiredtiger存储引擎的本机加密在rest中可以配置为加密存储层中的数据。
如果您没有使用wiredtiger的加密功能,则应使用文件系统,设备或物理加密在每台主机上对mongodb数据进行加密。 使用文件系统权限保护mongodb数据。mongodb数据包括数据文件,配置文件,审核日志和密钥文件。
确保mongodb在受信任的网络环境中运行,并限制mongodb实例监听传入连接的接口。 只允许受信任的客户端访问mongodb实例可用的网络接口和端口。
跟踪数据库配置和数据的访问和更改。 mongodb enterprise包括一个系统审核工具,可以在mongodb实例上记录系统事件(例如用户操作,连接事件)。 这些审核记录允许进行法证分析,并允许管理员验证正确的控制。
使用专用的操作系统用户帐户运行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。
“安全技术实施指南”(stig)载有美国国防部内部署的安全准则。 mongodb inc.根据要求提供其stig,用于需要的情况。 请索取副本以获取更多信息。