# 09、MongoDB数据库加固

> MongoDB 等保三级安全加固：security.authorization enabled 关闭 localhost exception、首个管理员账户创建顺序、内置角色（read/readWrite/dbAdmin/userAdmin/clusterAdmin/root）最小化授予与自定义角色、net.bindIp 与 net.port 收敛配合主机防火墙、net.tls.mode requireTLS 与 keyFile/x.509 内部认证、authenticationMechanisms SCRAM-SHA-256 并禁用已废弃的 MONGODB-CR、社区版无 auditLog 时的审计替代方案（企业版 auditLog / 数据库审计系统 / 操作系统层审计）、systemLog 目的地与 logRotate、mongodump 配合 oplog 或文件系统快照备份与恢复演练、security.javascriptEnabled false 与以 mongod 低权限账户运行、版本漏洞台账。

---

LLMS index: [llms.txt](/wikis/llms.txt)

---

> 定位：MongoDB（3.6~8.0）等保三级安全加固手册：按启用访问控制、账户与角色最小化、网络限制、登录失败处理、审计、日志管理、数据备份恢复、服务运行安全分节，每节给出配置与命令、验证方法及社区版能力缺失时的替代措施。
>
> 适用版本：MongoDB 3.6~8.0（示例按 4.4+/6.x 写法，版本差异在各节标注）。以社区版为主，企业版差异单独标注。
> 配套测评：[MongoDB 测评](../../../gradeProtection/系统管理软件平台/数据库测评命令/)。

<div class="alert alert-danger" role="alert">

MongoDB **默认不启用访问控制**（无需账号密码即可读写），是等保测评中的高频不符合项，互联网可达时按高风险判定。第一优先级整改就是启用认证。</div>


配置文件（YAML）默认路径 `/etc/mongod.conf`，修改后 `systemctl restart mongod` 生效；命令行客户端 `mongosh`。

> 使用说明：
>
> - 本文为**加固操作手册**：所有命令都会修改配置，可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置（设备 `save` 与 `copy running-config`／`backup startup-configuration`，主机备份 `/etc`、注册表与关键业务数据），并准备**可执行的回滚预案**。
> - 先在测试环境或单台设备灰度验证，确认无业务影响后再批量推广；每完成一项立即用文中「验证」命令核验生效——配置已下发不等于策略已生效（如 H3C 未 `password-control enable`、Linux 未对存量账户 `chage`、Windows 未 `gpupdate /force`）。
> - 示例中的地址、账户名、口令、路径均为演示值（如 `PleaseChange@123`、`192.168.10.20`、`admin123`），现场须替换为符合本单位口令策略与网络规划的真实值，**严禁直接沿用文中示例口令**；对外发布或归档时须对个人信息与内网管理地址脱敏。
> - 命令不存在、视图名或参数与本文不一致时，先用 `display version` / `show version` / `winver` 确认版本与部署形态，再查阅对应版本官方文档换用等效命令；**版本差异不得直接作为「无法整改」的结论**，须给出替代措施并评估其实际效果。
> - 涉及账户、锁定、超时、防火墙与端口收敛的变更存在锁死自身风险：务必保留一条已验证的恢复通道（Console 口、带外管理口、堡垒机会话或另一管理员账户）后再实施。
> - 加固完成后按「16、安全评估加固记录表3.0」逐项留痕（整改前后回显、操作人、时间、验证结论、回退情况），并纳入复测；测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准，本文的「加固要点」不构成最终测评结论。
>
> 不适用标识说明：
>
> - 使用 `【不适用】` 明确标记现场可判定为不适用的控制点，并写明判定依据与承载该能力的上位组件。
> - 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则：控制能力由统一认证平台、堡垒机、日志审计系统、终端管理系统、虚拟化平台或云托管平台承载时，应注明测评单元边界后判定不适用或转由上位组件核查，不得机械按缺失判不符合。
> - 产品版本确实不提供该能力（如老旧设备无 SNMPv3、无可信根、社区版无审计模块、已停止官方支持的操作系统）时，须核查替代措施并按替代措施的实际效果定档，不得直接判不适用；已停止支持的版本应同时提出升级或补偿控制建议。

## 一、启用访问控制（最高优先级）

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)（数据库账户、角色与对象权限；三权分立对应 d) 重命名与 e) 敏感标记、f) 授权主体最小化）
>
> **加固要点**：按最小权限授予：账户只授予其业务所需的库/模式/对象权限与操作类型，禁止对业务账户直接授予 SUPER/SYSDBA/DBA/root 等最高权限；权限变更须经审批并留痕，回收后核验生效。启用数据库自身的访问控制机制限制登录来源（PostgreSQL `pg_hba.conf`、KingbaseES `sys_hba.conf`、MySQL 账户的 host 部分与 `require_secure_transport`、MongoDB `net.bindIp` 配合主机防火墙、达梦与金仓的 IP 白名单或操作系统层限制），并禁止 `trust`、`any`、无口令等无鉴别访问方式。敏感数据（个人身份信息、鉴别信息）须打敏感标记或单独建库建表并限制可访问账户。
>
> **验证方法**：权限授予清单（MySQL `SHOW GRANTS FOR 'u'@'h';`、PostgreSQL `\dp` 与 `information_schema.table_privileges`、MongoDB `db.getUser()` 的 roles 字段、达梦与金仓 `DBA_ROLE_PRIVS`/`DBA_TAB_PRIVS`）与业务需要清单逐项比对；`pg_hba.conf`/`sys_hba.conf` 全文（应无 `trust` 行）；从非授权网段或非授权账户发起连接被拒的实测记录；敏感标记或数据分级分类文档。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


业务应用账户或普通运维账户持有 SUPER/SYSDBA/DBA/root 等最高权限，或 `pg_hba.conf`/`sys_hba.conf` 存在 `trust` 无鉴别放行行（如 `host all all 0.0.0.0/0 trust`），攻击者无需口令即可获得数据库完全控制权，按《高风险判定指引》可直接判高风险。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**

```bash
grep -A2 "security" /etc/mongod.conf
# 未认证连接测试（应被拒绝）
mongosh --host 192.168.10.10 --eval "db.version()"
```


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ grep -A2 &#34;security&#34; /etc/mongod.conf
</span></span><span class="line"><span class="cl">security:
</span></span><span class="line"><span class="cl">  authorization: enabled
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ mongosh --host 192.168.10.10 --eval &#34;db.version()&#34;
</span></span><span class="line"><span class="cl">MongoServerError: command hello requires authentication
</span></span></code></pre></div>
</details>


**加固操作**

1. 配置 `/etc/mongod.conf` 开启访问控制并重启：

```yaml
security:
  authorization: enabled
```

2. 重启后用 **localhost exception** 在本机创建首个管理员账户（仅当系统中尚无用户时生效）：

```javascript
use admin
db.createUser({
  user: "sysadmin",
  pwd: passwordPrompt(),                       // 交互输入，避免口令进 shell 历史
  roles: [ { role: "root", db: "admin" } ]
})
```

3. 验证：未认证连接执行 `show dbs` 报 `Unauthorized`；认证后正常：

```bash
mongosh --host 192.168.10.10 -u sysadmin -p --authenticationDatabase admin
```

## 二、账户与角色最小化

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)（数据库账户、角色与对象权限；三权分立对应 d) 重命名与 e) 敏感标记、f) 授权主体最小化）

**核查方法**

```javascript
use admin
db.getUsers()
use appdb
db.getRoles({showPrivileges: true})
```


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="nx">use</span> <span class="nx">admin</span>
</span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">.</span><span class="nx">getUsers</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span> <span class="nx">user</span><span class="o">:</span> <span class="s2">&#34;sysadmin&#34;</span><span class="p">,</span> <span class="nx">db</span><span class="o">:</span> <span class="s2">&#34;admin&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">roles</span><span class="o">:</span> <span class="p">[</span> <span class="p">{</span> <span class="nx">role</span><span class="o">:</span> <span class="s2">&#34;root&#34;</span><span class="p">,</span> <span class="nx">db</span><span class="o">:</span> <span class="s2">&#34;admin&#34;</span> <span class="p">}</span> <span class="p">]</span> <span class="p">},</span>
</span></span><span class="line"><span class="cl">  <span class="p">{</span> <span class="nx">user</span><span class="o">:</span> <span class="s2">&#34;appuser&#34;</span><span class="p">,</span> <span class="nx">db</span><span class="o">:</span> <span class="s2">&#34;appdb&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="nx">roles</span><span class="o">:</span> <span class="p">[</span> <span class="p">{</span> <span class="nx">role</span><span class="o">:</span> <span class="s2">&#34;readWrite&#34;</span><span class="p">,</span> <span class="nx">db</span><span class="o">:</span> <span class="s2">&#34;appdb&#34;</span> <span class="p">}</span> <span class="p">]</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span></code></pre></div>
</details>


**加固操作**

```javascript
// 业务库专用账户：仅授予所需角色，避免 dbAdminAnyDatabase/root
use appdb
db.createUser({
  user: "appuser",
  pwd: passwordPrompt(),
  roles: [ { role: "readWrite", db: "appdb" } ]
})

// 只读账户
db.createUser({ user: "report", pwd: passwordPrompt(), roles: [ { role: "read", db: "appdb" } ] })

// 删除多余账户
use admin
db.dropUser("废弃用户")

// 禁用 MONGODB-CR 旧认证机制（仅保留 SCRAM-SHA-256），写入 /etc/mongod.conf 后重启：
// setParameter:
//   authenticationMechanisms: SCRAM-SHA-256
```

- 判定标准：无空口令/默认口令；账户按库最小授权；无共享账户；禁用 MONGODB-CR 旧机制。

## 三、网络限制

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)（最小安装与组件收敛、监听与端口限制、危险能力关闭、漏洞与补丁管理）
>
> **加固要点**：按最小化原则收敛数据库暴露面：仅安装业务所需组件（去掉示例库、示例脚本、可选的 Web 管理台与客户端工具），关闭不需要的服务与端口；监听地址限定到业务网段（禁止 `0.0.0.0` 或 `bindIp: 0.0.0.0` 直连公网），端口经主机防火墙与边界策略双重限制到应用服务器与运维堡垒机；关闭高危能力（MySQL `local_infile=OFF` 并设置 `secure_file_priv`、启用 `skip_symbolic_links`；PostgreSQL 限制 `COPY ... PROGRAM`、`lo_import`/`lo_export`、`file_fdw`；MongoDB `security.javascriptEnabled: false` 并确认未启用旧版 HTTP 接口）；建立版本与漏洞台账，跟踪官方安全公告并按变更窗口修补，已停止官方支持的版本须提出升级或补偿控制建议。
>
> **验证方法**：已安装组件与版本清单、监听地址与端口回显（`ss -tlnp` 或 `netstat -ano`、MySQL `SHOW VARIABLES LIKE 'bind_address';`、PostgreSQL `SHOW listen_addresses; SHOW port;`、MongoDB `net.bindIp` 配置）、主机防火墙与边界策略截图、高危参数当前值回显、漏洞台账与补丁记录、官方安全公告订阅证据（MySQL Release Notes、PostgreSQL 官方邮件列表与 Release Notes、MongoDB Release Notes、达梦与金仓官网公告）。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


数据库监听地址为 `0.0.0.0` 且端口经边界策略直接对互联网或办公终端区开放，同时存在弱口令或默认口令时，按《高风险判定指引》可直接判高风险；MySQL `local_infile=ON` 且 `secure_file_priv` 为空，攻击者可借恶意服务端读取客户端任意文件，同样按高风险处理。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**

```bash
grep -A4 "^net" /etc/mongod.conf
ss -tlnp | grep 27017
```


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ grep -A4 &#34;^net&#34; /etc/mongod.conf
</span></span><span class="line"><span class="cl">net:
</span></span><span class="line"><span class="cl">  port: 27017
</span></span><span class="line"><span class="cl">  bindIp: 127.0.0.1,192.168.10.10
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ ss -tlnp | grep 27017
</span></span><span class="line"><span class="cl">LISTEN 0 128 192.168.10.10:27017 0.0.0.0:* users:((&#34;mongod&#34;,pid=1826,fd=11))
</span></span></code></pre></div>
</details>


**加固操作**（`/etc/mongod.conf`）：

```yaml
net:
  port: 27017
  bindIp: 127.0.0.1,192.168.10.10      # 只监听本机与业务网卡，禁 0.0.0.0
  tls:
    mode: requireTLS                   # 强制传输加密
    certificateKeyFile: /etc/ssl/mongo.pem
    CAFile: /etc/ssl/ca.pem
```

MongoDB 4.2 起配置键为 `net.tls`（`tlsMode: requireTLS`、`tlsCertificateKeyFile`、`tlsCAFile`）；4.0 及更早为 `net.ssl`（`mode: requireSSL`、`sslPEMKeyFile`）；8.0 起 `net.ssl` 已彻底移除。

客户端连接：`mongosh --tls --host 192.168.10.10 -u appuser -p --authenticationDatabase appdb`

- 配套在主机防火墙限制 27017 来源地址（见 04 号 10 节）；改端口属纵深防御，非判定项。

## 四、登录失败处理

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 b)（提供登录失败处理功能，限制非法登录次数）
>
> **加固要点**：提供并启用登录失败处理功能：MySQL 8.0 用 `connection_control` 插件（`connection_control_failed_connections_threshold` 建议 3~5，`min_connection_delay`/`max_connection_delay` 递增延时）；PostgreSQL **无内置失败锁定**，须以 fail2ban、pgbouncer 或数据库审计系统联动实现，并如实说明替代措施与其实际效果；MongoDB **无内置失败锁定**，以 `net.bindIp` 配合防火墙限制来源、审计与告警联动实现；达梦用 `FAILED_LOGIN_ATTEMPS`（注意官方关键字拼写少一个 T）与 `PASSWORD_LOCK_TIME`；金仓用 PROFILE 的失败次数与锁定时长。策略须覆盖最高权限账户，并保留一条已验证的恢复通道（本地 socket 登录、单用户维护模式或另一管理员账户），避免锁定即失联。
>
> **验证方法**：失败处理参数回显（`SHOW VARIABLES LIKE 'connection_control%';`、`\dx` 确认插件已安装、达梦与金仓的 LIMIT 与 PROFILE 定义）+ 一次真实失败登录实测：连续输错至阈值后确认账户被拒或延时递增，并记录解锁方式与解锁后登录成功；采用替代措施时须附 fail2ban 规则与触发日志（`fail2ban-client status <jail>`）。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


数据库管理入口无任何登录失败处理措施且对全网或互联网开放，可被无限次口令猜测时，按高风险线索记录；失败锁定未覆盖最高权限账户，或未保留本地恢复通道导致锁定即失联，同样记录为高风险线索。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


<div class="alert alert-warning" role="alert">

MongoDB 社区版无原生的"失败 N 次锁定账户"机制，测评时应如实说明并给出替代措施，不可虚构参数。</div>


可落地替代方案：

1. OS 层 fail2ban 监控 mongod.log 认证失败并封禁来源（配置思路同 14 号 PostgreSQL 篇 1.4，filter 匹配 `Authentication failed`）；
2. 应用侧连接池限制重试频率；
3. 企业版/数据库防火墙的连接控制能力（如有采购）。

## 五、审计

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)（数据库审计策略、审计记录内容、留存与保护）
>
> **加固要点**：启用数据库审计并覆盖：用户登录注销、账户与权限变更（DDL/DCL）、对敏感数据与关键表的访问、审计策略自身的修改；审计记录须包含事件日期时间、用户、事件类型、是否成功、客户端地址等要素；审计功能由**独立的安全审计员账户**管理，系统管理员不得删除或篡改审计记录；审计日志留存不少于 6 个月并定期备份，容量写满时按策略告警而非静默覆盖。社区版无原生审计能力时（PostgreSQL 需 pgAudit、MongoDB 社区版无 auditLog、MySQL 社区版无 audit_log），须部署数据库审计系统、堡垒机或操作系统层审计作为替代，并在报告中写明测评单元边界与替代措施的实际效果。
>
> **验证方法**：审计开关与审计策略配置回显（PostgreSQL `SHOW shared_preload_libraries;` 含 pgaudit + `pgaudit.log` 参数 + `\dx` 确认扩展已创建；MySQL `SHOW VARIABLES LIKE '%audit%';` 或企业版 `audit_log_policy`；MongoDB 企业版 `auditLog` 配置段；达梦与金仓的审计参数与审计项/审计对象配置结果）+ 一段真实审计记录样例（含时间、用户、来源 IP、操作对象、结果）+ 审计记录留存起始时间与备份记录 + 用系统管理员账户尝试删除审计记录被拒的实测。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


数据库未启用任何审计且承载敏感数据，或审计记录可由系统管理员账户自行关闭与删除、留存不足 6 个月，安全事件无法溯源时按高风险线索记录（多与访问控制、剩余信息保护不符合项合并判定）。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**：`grep -A6 "auditLog" /etc/mongod.conf`；核查日志服务器采集情况。

**加固操作**

- **企业版**支持原生审计（`auditLog`）：

```yaml
auditLog:
  destination: file
  format: JSON
  path: /var/log/mongodb/audit.json
  filter: '{ atype: { $in: ["authenticate", "createUser", "dropUser", "dropDatabase"] } }'
```

- **社区版**无审计模块：以 mongod 日志（记录连接与慢操作）+ 集中日志服务器采集替代，或前置数据库审计网关。测评判定：社区版仅日志采集一般判部分符合，报告中说明升级/替代计划。

## 六、日志管理

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)（数据库审计策略、审计记录内容、留存与保护）

**核查方法**

```bash
grep -A6 "systemLog" /etc/mongod.conf
```

**加固操作**（`/etc/mongod.conf`）：

```yaml
systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log
  logAppend: true
  logRotate: reopen          # 配合 SIGUSR1 或 logRotate 命令滚动，不丢日志
```

```bash
kill -SIGUSR1 $(pidof mongod)     # 触发日志滚动
```

- 配合 OS logrotate 保留 ≥6 个月并转发集中日志服务器；
- 时间同步：主机 NTP（见 11 号），保证日志时间准确。

## 七、数据备份恢复

> **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)（本地备份、异地实时备份与热冗余）
>
> **加固要点**：建立并**实际执行**备份策略：本地定时全量 + 增量或日志备份（MySQL `mysqldump`/`mysqlpump` 配合 binlog、PostgreSQL `pg_dump`/`pg_basebackup` 配合 WAL 归档、MongoDB `mongodump` 配合 oplog 或文件系统快照、达梦与金仓使用自带备份工具），备份文件与主数据分机存放并异地留存（三级要求异地实时备份或热冗余），备份数据同样加密并限制访问权限；每半年至少一次恢复演练并留存演练记录，RTO/RPO 与业务要求匹配。仅有备份脚本而无恢复验证不判符合。
>
> **验证方法**：备份策略与计划任务配置、最近若干次备份任务的执行日志与产物清单（大小、时间、存放位置）、异地备份或热冗余证据（异地备份目录、流复制或副本集状态：`SHOW REPLICA STATUS\G`、`SELECT * FROM pg_stat_replication;`、`rs.status()`）、恢复演练记录（时间、参与人、恢复耗时、数据一致性校验结果）、备份文件权限与加密方式。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


核心业务数据库无任何备份，或备份与主数据同机同盘存放、从未做过恢复演练导致备份实际不可用，一旦数据被破坏或遭勒索加密即无法恢复，按《高风险判定指引》可直接判高风险。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。

</div>


**核查方法**：备份任务与文件时效、恢复演练记录。

**加固操作**

```bash
# 逻辑备份
mongodump --host 192.168.10.10 -u sysadmin -p '口令' --authenticationDatabase admin \
  --db appdb --gzip --out /backup/mongo_$(date +%F)
chmod -R 600 /backup/mongo_*

# 副本集增量/时间点恢复依赖 oplog；文件系统快照适合大库
mongorestore --host 192.168.10.10 -u sysadmin -p --authenticationDatabase admin \
  --gzip --drop /backup/mongo_2026-08-30/appdb     # 恢复演练
```

- 备份异地存放；三级系统应有副本集（`rs.status()` 核查）与异地备份。

## 八、服务运行安全

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~f)（最小安装与组件收敛、监听与端口限制、危险能力关闭、漏洞与补丁管理）

**核查方法**

```bash
ps -ef | grep mongod          # 应以专用系统账户 mongod 运行，而非 root
ls -ld /var/lib/mongodb       # 数据目录权限 750/700
```


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">$ ps -ef | grep mongod
</span></span><span class="line"><span class="cl">mongod   1826     1  0 10:02 ?        00:00:12 /usr/bin/mongod --config /etc/mongod.conf
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ ls -ld /var/lib/mongodb
</span></span><span class="line"><span class="cl">drwxr-xr-x 4 mongod mongod 4096 8月 30 10:02 /var/lib/mongodb
</span></span></code></pre></div>
</details>


**加固操作**

```bash
chown -R mongod:mongod /var/lib/mongodb /var/log/mongodb
```

- 版本核查与升级：`db.version()`，对照官方安全通告升级至 LTS 版本（4.4/6.0/7.0）。

## 测评项对照表

| 控制点 | 对应章节 |
| --- | --- |
| 身份鉴别：启用身份鉴别、口令唯一与复杂度 | 一、二 |
| 身份鉴别：登录失败处理 | 四 |
| 身份鉴别：远程管理防窃听（TLS） | 三 |
| 访问控制：角色最小化、多余账户清理 | 二 |
| 安全审计：审计与日志留存 | 五、六 |
| 数据备份恢复 | 七 |
| 入侵防范：服务收敛与版本维护 | 三、八 |

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》（8.1.4 安全计算环境各控制点（数据库管理系统自身安全）；涉客户端与服务端通信时另含 8.1.2 安全通信网络）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（测评对象边界认定、单元测评实施与结果判定：符合/部分符合/不符合/不适用）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)
- GB/T 22240-2020《信息安全技术 网络安全等级保护定级指南》、GB/T 25070-2019《安全设计技术要求》、GB/T 28449-2018《测评过程指南》，可在全国标准信息公共服务平台检索：[http://openstd.samr.gov.cn/bzgk/gb/](http://openstd.samr.gov.cn/bzgk/gb/)
- MongoDB 官方手册（Security / Authentication / TLS / Backup）：[https://www.mongodb.com/docs/](https://www.mongodb.com/docs/)
- 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准）——高风险情形判定口径，站内对照表：[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)
- 命令核验说明：MongoDB 配置项与命令以 MongoDB 官方手册（Security / Configuration File Options / Backup）核验（核验日期 2026-09-02）。五处须留意：① 启用鉴权前必须先创建管理员账户，否则 `localhost exception` 关闭后将无人可登录，须用单节点维护方式（临时移除 `authorization`、本地创建账户、再开启并重启）恢复，实施前务必确认已建账；② `net.bindIp` 在 3.6 之前的默认值为 `127.0.0.1`，3.6 及以后默认**不绑定**（等效全网可达），升级到新版本后若未显式配置 `bindIp`，数据库会直接暴露，须逐台核查 `db.serverCmdLineOpts()`；③ 社区版**不提供** `auditLog`，也**无内置登录失败锁定与口令复杂度校验**，测评时不得据「参数不存在」判不符合，应核查替代措施（企业版审计、数据库审计系统、堡垒机、fail2ban、应用侧策略）并按替代措施的实际效果定档；④ `keyFile` 要求文件权限 600 且属主为运行账户，权限不满足时副本集内部认证会静默失效，配置后须以 `rs.status()` 确认节点健康；⑤ 3.6 起已移除 HTTP 状态接口，若沿用旧配置文件中的 `net.http.enabled`，新版本会启动失败，升级前须清理废弃参数。

## 关联文章

- 本板块相关篇：[08、达梦数据库加固](../08达梦数据库加固/)、[12、MySQL数据库加固](../12mysql数据库加固/)、[14、PostgreSQL数据库加固](../14postgresql数据库加固/)、[15、KingbaseES人大金仓数据库加固](../15kingbasees人大金仓数据库加固/)、[21、Web中间件安全加固](../21web中间件安全加固/)
- [29、MongoDB测评（现场取证）](../../../gradeprotection/系统管理软件平台/29mongodb测评/)
- [MongoDB 测评命令单](../../../gradeprotection/系统管理软件平台/数据库测评命令/06-mongodb/)
- [31、Redis数据库测评（同为 NoSQL，鉴权与网络限制思路一致）](../../../gradeprotection/系统管理软件平台/31redis数据库测评/)
- [数据库服务器 Linux 主机层加固（配套）](../../服务器/11linux操作系统加固手册/)
- 板块目录：[系统管理软件·平台](/wikis/docs/reinforce/%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86%E8%BD%AF%E4%BB%B6%E5%B9%B3%E5%8F%B0/)
- 通用加固方案：[17、加固方案总纲](../../其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录模板：[16、安全评估加固记录表3.0](../../其他系统或设备/16安全评估加固记录表3.0/)
- 高风险判定口径：[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)
