# 08、达梦数据库加固

> 达梦数据库 DM8 等保三级安全加固：SYSDBA/SYSSSO/SYSAUDITOR 内置三权分立账户职责划分与默认口令治理、PWD_POLICY 位掩码与 PWD_MIN_LEN 口令复杂度、PASSWORD_LIFE_TIME 与 PASSWORD_REUSE_TIME 老化策略、FAILED_LOGIN_ATTEMPS 与 PASSWORD_LOCK_TIME 登录失败锁定（注意官方关键字拼写少一个 T）、ENABLE_AUDIT 与 SP_AUDIT_STMT/SP_AUDIT_OBJECT 审计项配置、审计日志留存与 SYSAUDITOR 专管、最大会话数与空闲超时、IP 白名单与操作系统层端口限制、对象与系统权限最小化、DMRMAN 备份与归档日志、版本漏洞台账与官方补丁升级。

---

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

---

> 定位：达梦数据库（DM8）等保三级安全加固手册：按内置三权分立、口令策略、会话超时与登录限制、安全审计、网络与访问控制、权限最小化、数据备份恢复、剩余信息保护、版本与漏洞分节，每节给出加固命令、验证方法与测评项对照表。
>
> 适用版本：DM8；三权账户（SYSDBA/SYSSSO/SYSAUDITOR）、资源限制子句与审计过程在 DM7 上同样适用。达梦各小版本对参数名、视图名略有差异，执行前以对应版本《系统管理员手册》《安全管理手册》核对；本文给出的是 V8 通用写法与核查思路。
> 配套测评：[达梦测评](../../../gradeProtection/系统管理软件平台/数据库测评命令/)。

命令行工具为 `disql`（`disql SYSDBA/SYSDBA@192.168.10.10:5236`），默认端口 5236。**首次部署后必须修改 SYSDBA 等默认口令。**

> 使用说明：
>
> - 本文为**加固操作手册**：所有命令都会修改配置，可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置（设备 `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、无可信根、社区版无审计模块、已停止官方支持的操作系统）时，须核查替代措施并按替代措施的实际效果定档，不得直接判不适用；已停止支持的版本应同时提出升级或补偿控制建议。

## 一、内置三权分立（DM 特色）

> **对应控制点**：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>


**核查方法**

```sql
SELECT USERNAME, ACCOUNT_STATUS, CREATED FROM DBA_USERS;
```


<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">USERNAME    ACCOUNT_STATUS   CREATED
</span></span><span class="line"><span class="cl">----------- ---------------- -------------------
</span></span><span class="line"><span class="cl">SYSDBA      OPEN             2026-08-30 10:24:18
</span></span><span class="line"><span class="cl">SYSSSO      OPEN             2026-08-30 10:24:18
</span></span><span class="line"><span class="cl">SYSAUDITOR  OPEN             2026-08-30 10:24:18
</span></span><span class="line"><span class="cl">APPUSER     OPEN             2026-08-30 11:02:45
</span></span></code></pre></div>
</details>


| 账户 | 角色 | 职责 |
| --- | --- | --- |
| SYSDBA | 数据库管理员（DBA） | 实例与对象运维 |
| SYSSSO | 安全管理员 | 账户、口令策略、权限与安全标记 |
| SYSAUDITOR | 审计管理员 | 审计配置与审计记录查询 |

**加固操作**

1. 修改三个默认账户口令（默认值与用户名相同，属等保必查项）：

```sql
ALTER USER SYSDBA IDENTIFIED BY "YourStrong@Passw0rd";
-- SYSSSO、SYSSAO 口令以对应账户登录后同样修改
```

2. 业务账户与三权账户分离，禁止 SYSDBA 直连业务系统：

```sql
CREATE USER APPUSER IDENTIFIED BY "YourStrong@Passw0rd";
GRANT RESOURCE TO APPUSER;
```

- 判定标准：默认口令已修改、三权账户分工明确、业务账户独立。

## 二、口令策略

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)（身份鉴别信息具有复杂度要求并定期更换）
>
> **加固要点**：按「复杂度 + 长度 + 老化 + 历史」四要素配置并对**全部账户**生效：最小长度不低于 8 位（管理账户建议 12~16 位）、至少包含大写字母/小写字母/数字/特殊字符中三类、老化不超过 90 天、历史防重复不少于 5 次。落地方式因产品而异——MySQL 8.0 用 `validate_password` 组件（5.7 为插件，参数名 `validate_password_policy`/`validate_password_length` 与 8.0 的 `validate_password.policy`/`.length` 写法不同）；PostgreSQL 用 contrib 的 `passwordcheck` 扩展（须写入 `shared_preload_libraries` 后重启，能力较弱，长度与字符类组合须辅以应用侧或制度约束）；MongoDB **无内置口令复杂度校验**，须在账户创建流程与配置管理中约束并说明；达梦用 `PWD_POLICY`/`PASSWORD_POLICY` 位掩码与 `PWD_MIN_LEN`；金仓用 PROFILE 机制。无论采用哪种方式，都须核查最高权限账户是否同受约束，并对存量账户逐个下发有效期。
>
> **验证方法**：口令策略参数回显（`SHOW VARIABLES LIKE 'validate_password%';`、`SHOW shared_preload_libraries;` 与 `CREATE EXTENSION passwordcheck` 结果、达梦 `SELECT * FROM V$PARAMETER WHERE NAME LIKE 'PWD%';`、金仓 PROFILE 定义）+ 存量账户有效期抽查（MySQL `SELECT user,host,password_expired,password_lifetime FROM mysql.user;`、PostgreSQL `rolvaliduntil`、达梦 `DBA_USERS.EXPIRY_DATE`）+ 一次弱口令设置被拒的实测记录。

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


数据库管理账户存在弱口令或口令永不过期，且管理端口对非运维网段开放、可被在线口令猜测时，按《高风险判定指引》可直接判高风险；仅在参数模板中配置复杂度而未对存量账户重设口令，属高频「已整改但无效」情形，复测必须重新实测而非只看配置。

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

</div>


**核查方法**

```sql
SELECT USERNAME, ACCOUNT_STATUS, LOCK_DATE, PROFILE FROM DBA_USERS;
SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME LIKE 'PWD%';
```


<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">PARA_NAME                          PARA_VALUE
</span></span><span class="line"><span class="cl">---------------------------------- ----------
</span></span><span class="line"><span class="cl">PWD_POLICY                         2          -- 仅长度≥9（实例级默认）
</span></span><span class="line"><span class="cl">PWD_MIN_LEN                        9
</span></span><span class="line"><span class="cl">PWD_MAX_REPEAT_CHAR                1
</span></span><span class="line"><span class="cl">PWD_MAX_LEN                        48         -- 口令最长 48 字节
</span></span></code></pre></div>
</details>


**加固操作**

1. 口令策略子句（`PASSWORD POLICY`，可叠加）：`0` 无策略、`1` 禁止与用户名相同、`2` 口令长度不小于 9（如 `3` = 1+2 叠加）：

```sql
ALTER USER APPUSER PASSWORD POLICY 3;
```

2. 用户级资源限制（`FAILED_LOGIN_ATTEMPS` 为达梦官方拼写；`PASSWORD_LIFE_TIME`/`PASSWORD_GRACE_TIME` 单位为天，`PASSWORD_LOCK_TIME` 单位为分钟）：

```sql
ALTER USER APPUSER LIMIT
  FAILED_LOGIN_ATTEMPS 5,            -- 连续失败 5 次
  PASSWORD_LOCK_TIME 10,             -- 锁定 10 分钟
  PASSWORD_LIFE_TIME 90,             -- 口令 90 天有效
  PASSWORD_GRACE_TIME 7;             -- 过期后宽限 7 天
```

3. 登录 IP 白名单（网络访问控制，非设定 IP 登录报"无效的 IP"）：

```sql
ALTER USER "APPUSER" ALLOW_IP "127.0.0.1", "192.168.10.5";
```

4. 锁定账户解锁：`ALTER USER APPUSER ACCOUNT UNLOCK;`

- 预期现象：弱口令被拒绝、口令到期提示更换、连续失败后账户锁定；`DBA_USERS` 核对生效值。口令最长 48 字节。

## 三、会话超时与登录限制

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 b)（配置并启用结束会话、登录连接超时自动退出）
>
> **加固要点**：所有数据库会话统一配置空闲超时并限制单会话生命周期：MySQL 设 `wait_timeout`/`interactive_timeout`（建议 300~600 秒，不得为默认 28800 秒不收紧）并按账户设 `MAX_USER_CONNECTIONS`；PostgreSQL 用 `idle_session_timeout`（14+）与 `idle_in_transaction_session_timeout`（9.6+，防长事务占锁）配合 `statement_timeout`，13 及更早版本无 `idle_session_timeout` 时以 pgbouncer 的 `server_idle_timeout`/`client_idle_timeout` 或应用侧连接池回收实现并说明；MongoDB 无服务端会话空闲超时，以 `net.maxIncomingConnections` 与应用侧连接池控制；图形客户端与 Web 管理台自身的会话超时同样须配置。超时值不得为 0。
>
> **验证方法**：参数回显（`SHOW VARIABLES LIKE '%timeout%';`、`SHOW idle_session_timeout; SHOW idle_in_transaction_session_timeout;`、`db.adminCommand({getParameter:1,maxIncomingConnections:1})`）+ 一次实测：建立空闲连接静置至阈值后确认被服务端断开（客户端报连接失效）+ 连接池或代理配置截图。

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


数据库会话无任何空闲超时（`wait_timeout` 沿用默认 28800 秒未收紧、PostgreSQL 未设 `idle_session_timeout` 与 `idle_in_transaction_session_timeout`），应用或运维客户端断连后会话长期保持已鉴别状态、可被接管时，按高风险线索记录。

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

</div>


```sql
-- 用户级空闲超时与并发会话限制（参数名以手册为准）
ALTER USER APPUSER LIMIT SESSIONS_PER_USER 10, CONNECT_IDLE_TIME 30;
```

- `CONNECT_IDLE_TIME` 单位为分钟：空闲超时自动断开会话，配合主机层 SSH TMOUT 双保险。

## 四、安全审计（SYSAUDITOR 职责）

> **对应控制点**：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>


**核查方法**

以 SYSAUDITOR 登录 `disql SYSAUDITOR/...@192.168.10.10:5236`，查询审计开关与审计配置；审计记录存于审计系统表（名称以手册为准）。

**加固操作**

1. 以 SYSAUDITOR 登录后打开审计开关并配置审计规则：

```sql
SP_SET_ENABLE_AUDIT(1);                     -- 打开审计开关

-- 语句级审计（参数：审计类型 / 用户（NULL=全部）/ 时机 ALL|SUCCESSFUL|FAIL）
SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');
-- 用户级示例：仅审计 APPUSER 的 INSERT
SP_AUDIT_STMT('INSERT', 'APPUSER', 'ALL');

SELECT * FROM SYSAUDITOR.SYSAUDIT;          -- 核查审计设置
SP_NOAUDIT_STMT('TABLE', 'NULL', 'ALL');    -- 取消审计
```


<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">SUBSTR(ID)   OBJ    USER_NAME   WHEN_OP       AUDIT_OP
</span></span><span class="line"><span class="cl">------------ ------ ----------- ------------- ------------------
</span></span><span class="line"><span class="cl">1            TABLE  NULL        ALL           CREATE, DROP, ALTER, TRUNCATE
</span></span><span class="line"><span class="cl">2            *      APPUSER     ALL           INSERT
</span></span></code></pre></div>
</details>


2. 审计规则存于字典表 SYSAUDIT，审计记录可用 Manager 工具的"审计日志查看器"查看或导出；
3. 审计记录定期归档，留存 ≥6 个月，转发集中日志服务器。

- 判定标准：审计开关开启、覆盖重要用户行为与安全事件、记录可查且留存满足要求；仅开启不配置规则或无留存，判部分符合。

补充参数：`AUDIT_MAX_FILE_SIZE`（审计文件上限，默认 100M，1~4096M）、`AUDIT_FILE_FULL_MODE`（文件满处理：1 删除、2 停记不删）。

## 五、网络与访问控制

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

**核查方法**

```sql
SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN ('PORT_NUM','ENABLE_ENCRYPT');
```


<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">PARA_NAME      PARA_VALUE
</span></span><span class="line"><span class="cl">-------------- ----------
</span></span><span class="line"><span class="cl">PORT_NUM       5236
</span></span><span class="line"><span class="cl">ENABLE_ENCRYPT 1            -- 1=SSL 加密、2=SSL 认证、0=不加密（默认 1）
</span></span></code></pre></div>
</details>


**加固操作**

1. 端口：dm.ini `PORT_NUM = 5236`（改端口属纵深防御，需同步防火墙）；
2. 数据库服务仅监听业务网卡，主机层用防火墙限制来源地址（见 04 号 10 节）；
3. 传输加密：DM8 支持通信加密与 SSL（dm.ini `COMM_ENCRYPT`/SSL 相关参数，以手册为准），远程管理应走加密通道；
4. 传输加密实证口径：dm.ini `ENABLE_ENCRYPT` 取 0/1/2 分别为不加密、SSL 加密、SSL 认证（默认 1）；`COMM_ENCRYPT_NAME` 指定消息加密算法，算法清单查 `V$CIPHERS`；
5. 数据文件目录权限收敛：`ls -l /dm8/data`，属主应为 dmdba 且组/其他用户无写权限。

## 六、权限最小化

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)d)f)（数据目录与关键文件权限、运行账户、特权存储过程与外部命令执行能力）
>
> **加固要点**：数据库运行账户与文件权限最小化：实例不得以 root 或 Administrator 运行（PostgreSQL 强制非 root 启动、MySQL 使用 `mysql` 系统账户、MongoDB 使用 `mongod` 账户、Windows 侧使用低权限专用服务账户）；数据目录、配置文件、备份目录与日志目录权限收敛到运行账户（Linux 0700/0600，Windows 移除 Users 的完全控制），防止其他本地账户直接读写数据文件绕过数据库鉴权；数据库内特权能力（外部命令执行、文件读写、链接服务器、`SUPER`、`COPY ... PROGRAM`、达梦与金仓的系统包）按账户逐一收敛，禁止业务账户持有。
>
> **验证方法**：`ps -ef | grep -E "mysqld|postgres|mongod|dmserver"` 与 `Get-CimInstance Win32_Service` 确认运行账户、`ls -ld` 或 `stat` 输出数据目录与关键文件权限、Windows 侧 `icacls` 输出、数据库内特权账户清单与特权能力授予情况（`SHOW GRANTS`、`pg_roles.rolsuper`、MongoDB 持有 `root`/`clusterAdmin` 角色的账户）。

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


数据库实例以 root 或 Administrator 运行，或数据目录与备份目录对普通本地账户可写，攻击者取得任一本地低权限账户即可直接改写数据文件绕过数据库鉴权，按高风险线索记录。

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

</div>


**核查方法**

```sql
SELECT GRANTEE, PRIVILEGE, ADMIN_OPTION FROM DBA_SYS_PRIVS WHERE GRANTEE='APPUSER';
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='APPUSER';
```

**加固操作**

```sql
REVOKE DBA FROM APPUSER;                    -- 收回过高权限
GRANT SELECT ON APP.T_ORDER TO APPUSER;     -- 按需对象授权
DROP USER 废弃用户 CASCADE;                 -- 清理多余账户（CASCADE 连带对象，谨慎）
```

- 判定标准：无 DBA/SYSDBA 级业务账户、无多余过期账户、对象权限按需授予。

## 七、数据备份恢复

> **对应控制点**：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>


**核查方法**：备份作业与文件时效（`SELECT * FROM V$BACKUPSET` 或备份目录）、恢复演练记录。

**加固操作**

```bash
# 逻辑备份
dexp SYSDBA/口令@192.168.10.10:5236 FILE=app_$(date +%F).dmp LOG=exp.log SCHEMAS=APP
# 物理备份（联机/脱机）与还原使用 dmrman，建议配置定时全量+增量
```

- 备份文件权限 600、异地存放；定期用 dmrman 做恢复演练并记录；三级系统具备异地备份与实例冗余。

## 剩余信息保护（补充）

> **对应控制点**：GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)（鉴别信息与敏感数据所在存储空间释放前清除；数据库侧含会话历史文件、临时表、回收站对象与导出中间文件）
>
> **加固要点**：鉴别信息与敏感数据所在存储空间在释放或重新分配前须清除：核查会话历史与客户端记录文件不含明文口令与敏感查询（MySQL 的 `.mysql_history` 须禁用或重定向、PostgreSQL 的 `.psql_history`、客户端脚本与 CI 日志中的连接串）；删除的敏感表、表空间与数据文件须确认物理文件已移除而非仅逻辑删除（PostgreSQL `DROP TABLESPACE` 后核验目录、达梦与 Oracle 系的回收站对象须 `PURGE`）；临时表、导出中间文件与过期备份按周期清理；口令散列不得以明文形式出现在配置、脚本与日志中。
>
> **验证方法**：`MYSQL_HISTFILE` 与 `--histignore` 配置、`~/.mysql_history` 与 `~/.psql_history` 抽样检索是否存在明文口令的结果、数据目录与备份目录中残留中间文件清单、删除敏感对象后物理文件不存在的核验截图、口令散列存储方式回显。

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


客户端历史文件（`.mysql_history`/`.psql_history`）、备份导出的中间文件或代码仓库中存在明文口令与敏感数据，其他本地账户或离职人员可直接读取时，按高风险线索记录。

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

</div>


```sql
select * from v$dm_ini where para_name = 'ENABLE_OBJ_REUSE';   -- 0=不启用（默认）
sp_set_para_value(2, 'ENABLE_OBJ_REUSE', 1);                   -- 启用客体重用
```

- `ENABLE_OBJ_REUSE=1` 后内存分配/释放与文件生成/删除时均做内容清除，保证鉴别信息与敏感数据在存储空间释放或重分配前被清除；静态参数，修改后需重启实例生效。

## 八、版本与漏洞

> **对应控制点**：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>


```sql
SELECT * FROM V$VERSION;
SELECT BUILD_VERSION FROM V$INSTANCE;      -- 具体视图以手册为准
```


<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">BANNER
</span></span><span class="line"><span class="cl">--------------------------------------------------------------------------------
</span></span><span class="line"><span class="cl">DM Database Server 64 V8.1.1.190 build(2023.10.25)  ...
</span></span></code></pre></div>
</details>


对照达梦安全通告升级至最新小版本。

## 测评项对照表

| 控制点 | 对应章节 |
| --- | --- |
| 身份鉴别：默认口令修改、复杂度、有效期 | 一、二 |
| 身份鉴别：登录失败处理与超时 | 二、三 |
| 访问控制：三权分立、权限最小化 | 一、六 |
| 安全审计：审计开启、覆盖与留存 | 四 |
| 通信完整性/保密性：加密传输 | 五 |
| 剩余信息保护：ENABLE_OBJ_REUSE | 五（补充） |
| 数据备份恢复 | 七 |

## 参考依据

- 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/)
- 达梦数据库官方站点（DM8 产品文档与《DM8 安全管理》手册入口）：[https://eco.dameng.com/](https://eco.dameng.com/)
- 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准）——高风险情形判定口径，站内对照表：[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)
- 命令核验说明：达梦 DM8 命令与参数以达梦官方站点公开的《DM8 系统管理员手册》《DM8 安全管理手册》与产品文档核验（核验日期 2026-09-02）。四处须留意：① 登录失败锁定参数的官方拼写为 `FAILED_LOGIN_ATTEMPS`（少一个 T），按标准英文拼写 `ATTEMPTS` 执行会直接报错，配置后须以 `SELECT * FROM DBA_PROFILES;` 回显确认；② 达梦的口令策略位掩码在不同小版本上参数名存在 `PWD_POLICY` 与 `PASSWORD_POLICY` 两种写法，报错时改用 `SELECT * FROM V$PARAMETER WHERE NAME LIKE 'PWD%';` 查实际可配置项；③ 三权分立须在实例初始化时启用相关安全特性，若安装时未开启，SYSDBA 仍集中持有安全与审计权限，此时应通过独立建账 + 权限回收 + 操作系统层审计作补偿控制并如实记录，不得直接判符合；④ 审计功能开启会带来性能与存储开销，`ENABLE_AUDIT` 变更后须重启或按手册要求生效，实施前确认业务窗口与归档目录容量，并保留 `SYSAUDITOR` 账户的独立恢复通道。

## 关联文章

- 本板块相关篇：[09、MongoDB数据库加固](../09mongodb数据库加固/)、[12、MySQL数据库加固](../12mysql数据库加固/)、[14、PostgreSQL数据库加固](../14postgresql数据库加固/)、[15、KingbaseES人大金仓数据库加固](../15kingbasees人大金仓数据库加固/)、[21、Web中间件安全加固](../21web中间件安全加固/)
- [30、达梦数据库测评（现场取证）](../../../gradeprotection/系统管理软件平台/30达梦数据库测评/)
- [达梦数据库测评命令单](../../../gradeprotection/系统管理软件平台/数据库测评命令/07-达梦/)
- [数据库服务器 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高风险判定指引与加固对照表/)
