自托管部署安全检查表
本文档提供了您应实施的各项安全措施列表,以保护您的 MongoDB 安装。此列表并非详尽无遗。
预生产清单/考虑事项
➤启用访问控制和强制执行身份验证
启用访问控制并指定身份验证机制。
MongoDB社区支持多种身份验证机制,客户端可以使用这些机制来验证其身份
除了上述机制外,MongoDB Atlas和MongoDB Enterprise还支持以下机制
这些机制允许MongoDB集成到您现有的身份验证系统中。
➤配置基于角色的访问控制
首先创建一个用户管理员,然后创建其他用户。为每个访问系统的个人/应用程序创建唯一的MongoDB用户。
遵循最小权限原则。创建定义一组用户所需精确访问权限的角色。然后创建用户并将他们仅分配他们需要执行操作的权限。用户可以是个人或客户端应用程序。
注意
用户可以在不同的数据库中拥有权限。如果用户需要在多个数据库中拥有权限,创建一个具有适用数据库权限的角色而不是在不同数据库中多次创建用户。
➤加密通信(TLS/SSL)
➤加密和保护数据
➤限制网络暴露
确保MongoDB在受信任的网络环境中运行,并配置防火墙或安全组以控制MongoDB实例的入站和出站流量。
禁用直接SSH root访问。
仅允许受信任的客户端访问MongoDB实例可用的网络接口和端口。
➤审计系统活动
跟踪数据库配置和数据访问和变更。MongoDB Enterprise 包含一个系统审计功能,可以记录MongoDB实例上的系统事件(包括用户操作和连接事件)。这些审计记录允许进行取证分析,并允许管理员执行适当的控制。您可以设置过滤器以仅记录特定事件,例如认证事件。
➤使用专用用户运行MongoDB
使用专用操作系统用户帐户运行MongoDB进程。确保帐户有权访问数据,但没有不必要的权限。
➤使用安全配置选项运行MongoDB
MongoDB支持执行JavaScript代码以进行某些服务器端操作:
mapReduce
、$where
、$accumulator
和$function
。如果您不使用这些操作,请使用--noscripting
选项禁用服务器端脚本。保持输入验证启用。MongoDB通过
net.wireObjectCheck
设置默认启用输入验证。这确保了所有由mongod
实例存储的文档都是有效的BSON
。
➤(适用时)请求安全技术实施指南
安全技术实施指南(STIG)包含美国国防部部署中的安全指南。MongoDB Inc.在请求后提供其STIG。
➤考虑符合安全标准
对于需要符合HIPAA或PCI-DSS标准的应用程序,请参阅MongoDB安全参考架构,了解如何使用MongoDB的关键安全功能构建符合标准的应用程序基础设施。
防病毒和终端检测与响应扫描
如果您使用防病毒(AV)扫描仪或终端检测与响应(EDR)扫描仪,请配置您的扫描仪以排除扫描数据库存储路径
和数据库日志路径
。
数据库存储路径中的数据文件是压缩的。此外,如果您使用加密存储引擎,数据文件也是加密的。扫描这些文件可能显著降低I/O和CPU成本,但不会提供任何安全优势,并可能降低性能。
如果您不排除数据库存储路径和数据库日志路径中的目录,扫描仪可能会隔离或删除重要文件。丢失或隔离的文件可能会损坏您的数据库并导致MongoDB实例崩溃。
定期/持续生产检查
定期检查MongoDB 产品 CVE 并升级您的产品。
咨询MongoDB 生命周期结束日期并根据需要升级您的 MongoDB 安装。一般来说,尽量保持在最新版本。
确保您的信息安全管理系统政策和程序扩展到您的 MongoDB 安装,包括以下内容
定期为您的机器打补丁。
审查政策/程序变更,特别是对网络规则的变更,以防止意外将 MongoDB 暴露给互联网。
审查 MongoDB 数据库用户并定期更换。
报告疑似安全漏洞
如果您怀疑您已识别出任何 MongoDB 产品中的安全漏洞,请通过 MongoDB 漏洞提交表单 报告问题。