等保三级要求MongoDB必须落实身份鉴别、访问控制、传输加密、审计日志四项:需启用security.authorization、限制bindIp、强制TLS、配置JSON审计日志并设chattr+a防篡改,且所有节点(mongod/mongos/config server)须统一认证与加密策略。

mongod启动时若未显式启用认证、绑定 IP 或加密,就直接暴露在内网甚至公网,等保测评中基本过不了「安全计算环境」这一关。等保三级明确要求身份鉴别、访问控制、传输加密、审计日志四项必须落地,缺一不可。
如何确认 mongod 是否已启用认证和最小权限
等保最常卡在「默认无认证」和「admin 用户权限过大」两个点上。先连上去看现状:
- 执行
mongosh --eval "db.runCommand({connectionStatus: 1})",检查authInfo. authenticatedUsers是否为空 —— 空则说明当前连接未走认证流程 - 查用户:运行
use admin; db.system.users.find().pretty(),重点看是否存在密码为空、角色含root或__system的账户 - 验证权限粒度:用普通用户连接后执行
db.runCommand({listDatabases: 1}),若返回所有库列表,说明该用户被误授了clusterAdmin类高危角色
修复动作不是加个 --auth 就完事。必须配合配置文件中的 security.authorization: enabled,且所有节点(包括 mongos、config server)都得统一开启。副本集成员之间通信还要额外配 clusterauthmode: x509 或 keyfile,否则选举会失败。
为什么只开 TLS 不够,还必须限制 bindIp 和防火墙规则
等保要求「网络区域边界防护」,而 mongod 默认监听 0.0.0.0:27017,等于把门敞开。哪怕启用了 net.tls.mode: requireTLS,只要没限制 IP,攻击者仍可尝试证书爆破或中间人劫持。
-
bindIp必须显式设为内网地址,例如192.168.10.5或127.0.0.1,192.168.10.0/24;禁用0.0.0.0,否则测评直接判「高风险」 - 操作系统防火墙要精确放行:仅允许应用服务器 IP 访问
mongos的30000端口,mongod的10000/10001/10002端口只对同集群其他节点开放 - 分片集群里
config server的20000端口绝不能对外,它存的是整个集群的元数据,一旦沦陷,等于交出控制权
注意:mongos 节点本身不存数据,但它是唯一对外接口,它的 bindIp 和 TLS 配置必须和后端 mongod 严格对齐,否则客户端连得上却查不出数据。
审计日志怎么配才满足「三个月留存+不可篡改」
等保明确要求操作日志留存 ≥90 天且防删改。mongod 自带审计功能,但默认关闭,且输出到文件后若没做权限隔离,运维人员仍可手动清空。
- 启用方式必须是启动参数
--auditDestination file --auditFormat JSON --auditPath /var/log/mongodb/audit.log,不能只靠配置文件里的auditLog块(旧版驱动可能不识别) - 日志路径所在目录需设为
root:mongodb所有者,权限750,并用chattr +a追加属性,防止rm或truncate - 日志内容必须覆盖
createUser、dropDatabase、insert、update等敏感操作,可通过auditLog.filter指定 JSON 规则,例如{ "users": { "$ne": [] } }表示记录所有用户操作
别忽略时间同步问题:所有节点必须 NTP 校时,否则审计日志时间戳错乱,溯源时无法关联事件链。
WiredTiger 加密和字段级加密(FLE)到底该选哪个
等保要求「重要数据加密存储」,但没指定层级。实际选择取决于数据敏感程度和部署能力:
-
enableEncryption是存储引擎层加密,对整个数据库文件生效,需配encryptionKeyFile。但它属于企业版功能,社区版不支持;且密钥若明文写在配置里,反而引入新风险 - 字段级加密(FLE)由客户端驱动完成,敏感字段(如身份证号)在写入前就加密,服务端只存密文。但要求应用代码集成
clientEncryption,且密钥必须通过 KMIP 或本地 HSM 管理,不能硬编码 - 政务/金融类系统建议组合使用:WiredTiger 加密防磁盘被盗,FLE 防 DBA 权限滥用。但切记 FLE 不兼容某些聚合操作(如
$group),上线前必须实测业务查询逻辑
最容易被忽略的是密钥轮换 —— 等保要求密钥定期更新,但 mongod 重启才能加载新密钥文件,这会导致短暂不可用。生产环境必须规划滚动重启窗口,并提前验证新密钥解密旧数据的能力。











