# 数据库

针对安全计算环境中三级条款关联数据库时需要核查的配置参数。

# Oracle 19c

# 身份鉴别

**<span style="color: rgb(224, 62, 45);">测评项：a）应对登录的用户进行身份标识和鉴别，身份标识具有唯一性，身份鉴别信息具有复杂度要求并定期更换；</span>**

测评点：用户名唯一性、弱口令、空口令、口令强度策略、口令过期策略；

核查命令：

```pl/sql
SELECT
  s.sid,            -- 会话 ID（用于跟踪或终止）
  s.serial#,        -- 会话序列号（用于配合 SID 唯一标识）
  s.username,       -- 数据库用户名
  s.osuser,         -- 客户端操作系统用户
  s.machine,        -- 客户端主机名或 IP（某些场景）
  s.program,        -- 客户端使用的程序（如 SQL Developer、JDBC 驱动）
  s.module,         -- 应用程序模块名（可通过 DBMS_APPLICATION_INFO 设置）
  s.status,         -- 当前会话状态（ACTIVE 或 INACTIVE）
  s.logon_time,     -- 登录时间
  s.service_name,   -- 使用的服务名（如 ORCLPDB1）
  s.type            -- 会话类型（通常为 USER，后台为 BACKGROUND）
FROM v$session s
WHERE s.username IS NOT NULL;
```

核查效果：

**[![Snipaste_2025-06-06_11-39-12.png](https://document.nat.ac.cn/uploads/images/gallery/2025-06/scaled-1680-/snipaste-2025-06-06-11-39-12.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-06/snipaste-2025-06-06-11-39-12.png)**

**<span style="color: rgb(224, 62, 45);">测评项：b）应具有登录失败处理功能，应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施；</span>**

测评点：登录失败锁定、登录超时退出；

核查注意：Oracle Database 支持用户定义 profile ，<span style="color: rgb(35, 111, 161);">当 **profile** 为空时则引入 **DEFAULT**</span>

核查命令：

```pl/sql
SELECT username, profile FROM dba_users WHERE username = 'sys';
```

核查效果：

[![Snipaste_2025-07-03_15-09-54.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-03-15-09-54.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-03-15-09-54.png)

核查命令：

```pl/sql
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name IN ('FAILED_LOGIN_ATTEMPTS', 'PASSWORD_LOCK_TIME')
ORDER BY profile, resource_name;
```

核查效果：

[![Snipaste_2025-07-03_15-09-34.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-03-15-09-34.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-03-15-09-34.png)

**<span style="color: rgb(224, 62, 45);">测评项：c）当进行远程管理时，应采取必要措施防止鉴别信息在网络传输过程中被窃听；</span>**

测评点：是否开启TLS传输

核查注意：Oracle支持**<span style="color: rgb(35, 111, 161);">1521</span>**（未通过TLS传输）端口和**<span style="color: rgb(35, 111, 161);">2484</span>**（通过TLSv1.2传输）同时开启

核查命令：

```pl/sql
SELECT SYS_CONTEXT('USERENV', 'NETWORK_PROTOCOL') AS protocol FROM DUAL;
SELECT
    s.sid,
    s.username,
    s.osuser,
    s.program,
    c.network_service_banner
FROM
    v$session s
JOIN
    v$session_connect_info c ON s.sid = c.sid
WHERE
    s.type = 'USER'
    AND s.username IS NOT NULL;
```

核查效果：

[![Snipaste_2025-07-03_16-04-09.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-03-16-04-09.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-03-16-04-09.png)

```mysql
Oracle Advanced Security: AES256 encryption
Oracle Advanced Security: SHA512 crypto-checksumming
TCP/IP NT Protocol Adapter for Linux: Version 19.0.0.0.0
```

**<span style="color: rgb(224, 62, 45);">测评项：d）应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别，且其中一种鉴别技术至少应使用密码技术来实现。</span>**

从 Oracle 19c 和 23ai 开始，数据库支持对本地用户启用多因素组合认证，需至少为2025年7月后的DBRU版本。一般默认不符合。

# 访问控制

**<span style="color: rgb(224, 62, 45);">a）应对登录的用户分配账户和权限；</span>**

核查注意：如果本地形式部署，**<span style="color: rgb(35, 111, 161);">sys</span>**或**<span style="color: rgb(35, 111, 161);">sysdba</span>**是默认账户，无法禁用，此项默认**<span style="color: rgb(35, 111, 161);">部分符合</span>**；如果部署于云平台，不存在默认账户，此项默认**<span style="color: rgb(35, 111, 161);">符合</span>**。

**<span style="color: rgb(224, 62, 45);">b）应重命名或删除默认账户，修改默认账户的默认口令；</span>**

核查注意：须通过访谈确定**<span style="color: rgb(35, 111, 161);">sys</span>**或**<span style="color: rgb(35, 111, 161);">sysdba</span>**是否确定修改口令；

**<span style="color: rgb(224, 62, 45);">c）应及时删除或停用多余的、过期的账户，避免共享账户的存在；</span>**

核查点：**<span style="color: rgb(35, 111, 161);">多余</span>**账户、**<span style="color: rgb(35, 111, 161);">共享</span>**账户；

核查注意：离职员工、停止功能维护的账户须通过**<span style="color: rgb(35, 111, 161);">访谈</span>**确定；Oracle自身存在大量因功能而设但尚未开启而禁用的账户（如SYSBACKUP等）。

**d）应授予管理用户所需的最小权限，实现管理用户的权限分离；**

核查点：**<span style="color: rgb(35, 111, 161);">全局管理</span>**账户；

核查注意：如果本地形式部署，**<span style="color: rgb(35, 111, 161);">sys</span>**或**<span style="color: rgb(35, 111, 161);">sysdba</span>**是最高权限账户，无法禁用，此项默认不**<span style="color: rgb(35, 111, 161);">符合</span>**；如果部署于云平台，须核查高权限账户是否开启，未开启则默认**<span style="color: rgb(35, 111, 161);">符合</span>**。

核查命令：（以DBA权限运行）

```pl/sql
SELECT username, user_id, created, account_status
FROM dba_users
ORDER BY username;
```

核查命令：（以普通权限运行）

```pl/sql
SELECT username, user_id, created
FROM all_users
ORDER BY username;
```

```pl/sql
SELECT * FROM user_users;
```

核查命令：（在CDB环境以云平台管理员角色运行）

```pl/sql
SELECT username, con_id, account_status
FROM cdb_users
WHERE con_id != 0  -- 通常排除系统容器本身(SYSAUX, SYSTEM 等用户通常在 CON_ID=0 或 1 的容器里，具体查询需确认)
ORDER BY con_id, username;
```

核查效果：

[![Snipaste_2025-07-04_14-18-59.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-04-14-18-59.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-04-14-18-59.png)[![Snipaste_2025-07-04_14-20-07.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-04-14-20-07.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-04-14-20-07.png)

<span style="color: rgb(224, 62, 45);">**e）应由授权主体配置访问控制策略，访问控制策略规定主体对客体的访问规则；**</span>

核查注意：通常由**<span style="color: rgb(35, 111, 161);">sys</span>**和**<span style="color: rgb(35, 111, 161);">sysdba</span>**、云平台高权限账户、云控制台数据库管理员账户确定主客体访问规则，本处默认**<span style="color: rgb(35, 111, 161);">符合</span>**，写法固定。

<span style="color: rgb(224, 62, 45);">**f）访问控制的粒度应达到主体为用户级或进程级，客体为文件、数据库表级；**</span>

核查注意：本处默认**<span style="color: rgb(35, 111, 161);">符合</span>**，写法固定。

<span style="color: rgb(224, 62, 45);">**g）应对重要主体和客体设置安全标记，并控制主体对有安全标记信息资源的访问。**</span>

核查注意：本处默认**<span style="color: rgb(35, 111, 161);">不符合</span>**，写法固定。

# 安全审计



# 入侵防范

# MySQL

# 身份鉴别

##### <span style="color: rgb(0, 0, 0);">**<span lang="ZH-CN">测评项：</span>a) <span lang="ZH-CN">应对登录的用户进行身份标识和鉴别，身份标识具有唯一性，身份鉴别信息具有复杂度要求并定期更换。</span>**</span>

<p class="callout info"><span lang="ZH-CN">MySQL通常不存在空口令账户，弱口令须通过<span style="color: rgb(35, 111, 161);">访谈</span>确定。</span></p>

```mysql
# MySQL 5.7及更低版本本命令行不适用。
select * from mysql.user where length(authentication_string) = 0 or authentication_string is null;
```

<span lang="ZH-CN">[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/TfKimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/TfKimage.png)</span>

<p class="callout warning">MySQL通常未预装<span style="color: rgb(35, 111, 161);">**validate\_password**</span>，须先核查是否安装插件后再核查相关参数。</p>

<p class="callout info"><span lang="ZH-CN">云服务客户租用数据库时通过云控制台查看，不适用本条命令。</span></p>

```mysql
# 核查插件形式的validate_password，从MySQL 5.7开始支持
select * from information_schema.plugins where plugin_name = 'validate_password';
# 核查模块形式的validate_password，从MySQL 8.0.2开始支持
select * from mysql.component;
# 核查MySQL当前口令策略，默认策略符合要求。
show variables LIKE 'validate_password%';
```

核查效果：（以<span style="color: rgb(35, 111, 161);">**插件**</span>形式安装validate\_password，从MySQL 5.7开始支持）

[![Snipaste_2025-07-29_16-43-04.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-29-16-43-04.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-29-16-43-04.png)

核查效果：（以<span style="color: rgb(35, 111, 161);">**模块**</span>形式安装validate\_password，从MySQL 8.0.2开始支持）

[![Snipaste_2025-07-30_14-21-58.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-30-14-21-58.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-30-14-21-58.png)

<p class="callout info"><span lang="ZH-CN">MySQL账户通常无法重复，账户名具有唯一性；MySQL支持单个用户名配置口令过期策略，仅在<span style="color: rgb(35, 111, 161);">**缺省**</span>时由全局配置确定。云服务客户租用数据库时通过云控制台查看，不适用本条命令。</span></p>

```mysql
# 查看MySQL全局口令过期策略。
show variables like 'default_password_lifetime';
# 查看MySQL 5.7最近口令更换情况。
select user, host, password_last_changed, password_lifetime from mysql.user;
# 查看MySQL 8.0最近口令更换情况。（支持限制使用重复密码）
select user, host, password_last_changed, password_lifetime,password_expired,password_reuse_history,password_reuse_time from mysql.user;
```

[![Snipaste_2025-07-29_18-06-20.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-29-18-06-20.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-29-18-06-20.png)

核查效果：（在MySQL 5.7）

[![Snipaste_2025-07-30_16-21-52.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-30-16-21-52.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-30-16-21-52.png)

核查效果：（在MySQL 8.0）

[![Snipaste_2025-07-30_16-22-24.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-30-16-22-24.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-30-16-22-24.png)

---

##### <span style="color: rgb(0, 0, 0);">**<span lang="ZH-CN">测评项：</span>b) <span lang="ZH-CN">应具有登录失败处理功能，应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。</span>**</span>

<p class="callout warning">MySQL<span style="color: rgb(35, 111, 161);">**低版本不支持**</span>登录失败锁定策略，从MySQL 8.0开始支持单用户设置失败锁定策略，从MySQL 8.1开始支持锁定时长限制至小时或分钟。</p>

```mysql
select host,user,User_attributes from mysql.user;
# 核查 interactive_timeout参数
show variables like '%timeout';
```

[![Snipaste_2025-07-30_17-44-55.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-30-17-44-55.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-30-17-44-55.png)[![Snipaste_2025-08-01_09-35-21.png](https://document.nat.ac.cn/uploads/images/gallery/2025-08/scaled-1680-/snipaste-2025-08-01-09-35-21.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-08/snipaste-2025-08-01-09-35-21.png)

---

##### <span style="color: rgb(0, 0, 0);">**<span lang="ZH-CN">测评项：</span>c) <span lang="ZH-CN">当进行远程管理时，应采取必要措施防止鉴别信息在网络传输过程中被窃听。</span>**</span>

<p class="callout info">云服务客户租用数据库时仅核查当前会话，其他信息通过云控制台查看。</p>

```mysql
# 查看指定用户名（如root）是否强制使用TLS传输
select user, host, ssl_type from mysql.user where user = 'root';
# 查看是否全局开启强制TLS传输
show variables like 'require_secure_transport';
# 查看MySQL是否已开启TLS传输
show variables like 'have_ssl';
# 查看MySQL当前TLS相关配置信息
show global variables like 'ssl_cipher';
show global variables like 'ssl_ca';
show global variables like 'ssl_cert';
show global variables like 'ssl_key';
# （重点）查看当前会话是否采用TLS传输
show session status like 'ssl_cipher';
show session status LIKE 'Ssl_cipher_list';
show session status like 'ssl_version';
# 查看MySQL当前支持的TLS版本
show variables like 'tls_version';
```

[![Snipaste_2025-07-30_16-44-23.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-30-16-44-23.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-30-16-44-23.png)

[![Snipaste_2025-07-30_16-44-57.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/snipaste-2025-07-30-16-44-57.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/snipaste-2025-07-30-16-44-57.png)

---

##### <span style="color: rgb(0, 0, 0);">**<span lang="ZH-CN">测评项：</span>d) <span lang="ZH-CN">应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别， 且其中一种鉴别技术至少应使用密码技术来实现。</span>**</span>

<p class="callout danger"><span lang="ZH-CN">从MySQL **<span style="color: rgb(35, 111, 161);">8.0.27</span>**起，企业版支持<span style="color: rgb(35, 111, 161);">**FIDO**</span>，社区版支持<span style="color: rgb(35, 111, 161);">**TOTP**</span>，可在完成用户名+口令后支持二次验证。基于实际生产环境，默认不支持。</span></p>

# 访问控制

##### <span style="color: rgb(0, 0, 0);">**<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">测评项：</span><span lang="EN-US">a) </span><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">应对登录的用户分配账户和权限；</span>**</span>

##### <span style="color: rgb(0, 0, 0);">**<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">测评项：</span><span lang="EN-US">b) </span><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">应重命名或删除默认账户，修改默认账户的默认口令；</span>**</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);"><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">云数据库不存在默认账户，安装在本地服务器上则注意root账户是否已修改口令。</span></span></p>

##### <span style="color: rgb(0, 0, 0);">**<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">测评项：</span><span lang="EN-US">c) </span><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">应及时删除或停用多余的、过期的账户，避免共享账户的存在；</span>**</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">多余/共享账户依据客户实际业务判定，但账户数小于3则强制判定共享账户。</span></p>

<p class="callout success"><span style="color: rgb(0, 0, 0);">通过访谈确定账户是否闲置；闲置账户处于锁定状态可视为不存在过期账户。</span></p>

```mysql
select Host,Account_locked,User,Insert_priv,Delete_priv,Alter_priv,Drop_priv,Grant_priv,Super_priv from mysql.user;
```

核查效果：

[![Snipaste_2025-08-01_11-11-35.png](https://document.nat.ac.cn/uploads/images/gallery/2025-08/scaled-1680-/snipaste-2025-08-01-11-11-35.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-08/snipaste-2025-08-01-11-11-35.png)

---

##### **<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">测评项：</span><span lang="EN-US">d) </span><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">应授予管理用户所需的最小权限，实现管理用户的权限分离。</span>**

<p class="callout info"><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">**<span style="font-family: 等线;">MySQL账户除日常使用的增删查改权限较为敏感外，针对等保场景须注意<span style="color: rgb(35, 111, 161);">Grant\_priv</span>和<span style="color: rgb(35, 111, 161);">Super\_priv</span>。前者可以扩展用户/数据库/数据库表的权限，后者可以管理所有的用户/数据库/数据库表。</span>**</span></p>

```mysql
select Host,Db,User,Insert_priv,Delete_priv,Alter_priv,Drop_priv,Grant_priv from mysql.db;
```

<span style="font-family: 等线;">[![Snipaste_2025-08-01_11-12-41.png](https://document.nat.ac.cn/uploads/images/gallery/2025-08/scaled-1680-/snipaste-2025-08-01-11-12-41.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-08/snipaste-2025-08-01-11-12-41.png)</span>

---

##### **<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">测评项：</span><span lang="EN-US">e</span><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">）应由授权主体配置访问控制策略，访问控制策略规定主体对客体的访问规则；</span>**

<p class="callout info">**<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">现场核查优先核查当前用户名所关联的权限，后续查看<span style="color: rgb(53, 152, 219);">mysql.role\_edges</span>表和<span style="color: rgb(53, 152, 219);">infomation\_schema.user\_privileges</span>表所包含的具体内容。当role\_edges表值为<span style="color: rgb(53, 152, 219);">空</span>时，缺省值为<span style="color: rgb(53, 152, 219);">root</span>。</span>**</p>

```
-- show grants for '用户名'@'数据库';
SELECT * FROM `role_edges`;
SELECT * FROM `USER_PRIVILEGES`;
```

[![Snipaste_2025-08-01_14-48-05.png](https://document.nat.ac.cn/uploads/images/gallery/2025-08/scaled-1680-/snipaste-2025-08-01-14-48-05.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-08/snipaste-2025-08-01-14-48-05.png)[![Snipaste_2025-08-01_14-48-26.png](https://document.nat.ac.cn/uploads/images/gallery/2025-08/scaled-1680-/snipaste-2025-08-01-14-48-26.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-08/snipaste-2025-08-01-14-48-26.png)

---

##### **<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">测评项：</span><span lang="EN-US">f</span><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">）访问控制的粒度应达到主体为用户级或进程级，客体为文件、数据库表级；</span>**

<p class="callout success">**<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">数据库与用户间是一对多的关系，因此默认符合。</span>**</p>

---

##### **<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">测评项：</span><span lang="EN-US">g</span><span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">）应对重要主体和客体设置安全标记，并控制主体对有安全标记信息资源的访问。</span>**

<p class="callout danger">**<span style="font-family: 等线; mso-ascii-font-family: Aptos; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Aptos; mso-hansi-theme-font: minor-latin;">MySQL不支持等保场景的安全标记功能，须依赖第三方实现，因此默认不符合。</span>**</p>

# 安全审计

<span style="color: rgb(224, 62, 45);">**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">测评项：<span lang="EN-US">a) </span>应启用安全审计功能，审计覆盖到每个用户，对重要的用户行为和重要安全事件进行审计。</span>**</span>

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">核查点：日志要素</span>**

<p class="callout info"><span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">MySQL不对特定用户执行日志收集策略，默认覆盖所有用户。仅关注MySQL是否收集登录失败（**log\_error**）/ SQL语句执行（**log\_bin**）日志。</span></p>

<p class="callout warning"><span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">非必要**不推荐开启 general\_log** ，开启后MySQL会记录全量日志，极易影响系统的稳定运行。</span></p>

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">核查命令</span>**

```mysql
show variables like 'log%';
```

<span style="font-family: 等线;">**核查效果**</span>

[![](https://cdn.sa.net/2025/08/28/o6aLwtv7GuBnlYe.png)](https://smms.app/image/o6aLwtv7GuBnlYe)

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">测评项：<span lang="EN-US">b) </span>审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。</span>**

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">测评方法</span>**

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">1</span>）执行“<span lang="EN-US">mysql&gt;show variables like ‘log\_%’</span>”命令，查看输出的日志内容是否覆盖所有用户，并核查审计记录覆盖的内容。</span>

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">2</span>）核查是否已使用第三方审计工具增强<span lang="EN-US">MySQL</span>的日志审计功能。如果使用了第三方审计工具，则查看其审计内容是否包含事件的日期和事件、用户、事件类型、事件是否成功及其他与审计相关的信息。</span>

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">操作步骤<span lang="EN-US">&amp;</span>预期结果</span>**

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">1</span>）数据库本地启用了日志审计功能，审计内容覆盖每个用户，能够记录重要的用户行为和重要安全事件。</span>

<span lang="EN-US" style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">①</span><span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;"> <span lang="EN-US">show variables like 'log\_%';</span></span>

<span lang="EN-US" style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;"> </span><span lang="EN-US">[<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast; color: windowtext; mso-no-proof: yes; text-decoration: none; text-underline: none;"><span style="mso-ignore: vglayout;">![](https://document.nat.ac.cn/uploads/images/gallery/2025-08/embedded-image-ogfndk3p.png)</span></span>](https://document.nat.ac.cn/uploads/images/gallery/2025-07/Youimage.png)</span>

<span lang="EN-US" style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">②</span><span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;"> <span lang="EN-US">show global variables like '%general%';</span></span>

<span lang="EN-US">[<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast; color: windowtext; mso-no-proof: yes; text-decoration: none; text-underline: none;"><span style="mso-ignore: vglayout;">![表格

AI 生成的内容可能不正确。](https://document.nat.ac.cn/uploads/images/gallery/2025-08/embedded-image-nuntjbtk.png)</span></span>](https://document.nat.ac.cn/uploads/images/gallery/2025-07/Y0limage.png)</span>

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">2</span>）使用了第三方数据库审计产品，审计内容覆盖每个用户，能够记录重要的用户行为和重要安全事件。</span>

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">测评项：<span lang="EN-US">c) </span>应对审计记录进行保护，定期备份，避免受到未预期的删除、修改或覆盖等。</span>**

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">测评方法</span>**

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">1</span>）访谈管理员，了解审计记录的保护方式。核查审计记录是否定期备份，了解备份策略。</span>

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">2</span>）核查是否已严格限制用户访问审计记录的权限。</span>

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">操作步骤<span lang="EN-US">&amp;</span>预期结果</span>**

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">1</span>）采用备份、转存等手段对审计记录进行保护，避免未预期的删除、修改或覆盖，数据库本地日志保存时间超过<span lang="EN-US">6</span>个月。</span>

<span lang="EN-US">[<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast; color: windowtext; mso-no-proof: yes; text-decoration: none; text-underline: none;"><span style="mso-ignore: vglayout;">![图片包含 表格

AI 生成的内容可能不正确。](https://document.nat.ac.cn/uploads/images/gallery/2025-08/embedded-image-sukv3uft.png)</span></span>](https://document.nat.ac.cn/uploads/images/gallery/2025-07/knhimage.png)</span>

**<span lang="EN-US" style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;"> exprie\_logs\_days</span><span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">为日志存储时间（已经通过“<span lang="EN-US">set global expire\_logs\_days = 180;</span>”命令设置保存时间）</span>**

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">2</span>）采用第三方数据库审计产品审计记录保存时间超过<span lang="EN-US">6</span>个月。</span>

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">测评项：<span lang="EN-US">d) </span>应对审计进程进行保护，防止未经授权的中断。</span>**

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">测评方法</span>**

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">1</span>）核查是否已严格限制管理员、审计员的权限。</span>

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">2</span>）尝试以用户身份重启实例、关闭审计功能，查看是否能成功（应为否）。</span>

**<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">操作步骤<span lang="EN-US">&amp;</span>预期结果</span>**

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">1</span>）非审计员账户无法中断审计进程，审计进程已受到保护。</span>

<span lang="EN-US">[<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast; color: windowtext; mso-no-proof: yes; text-decoration: none; text-underline: none;"><span style="mso-ignore: vglayout;">![](https://document.nat.ac.cn/uploads/images/gallery/2025-08/embedded-image-7pmvf8pq.png)</span></span>](https://document.nat.ac.cn/uploads/images/gallery/2025-07/JSOimage.png)</span>

<span style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;">（<span lang="EN-US">2</span>）非审计员账户无法对审计进程纪念性开启、关闭操作。对这类操作有日志记录。</span>

<span lang="EN-US" style="font-family: 等线; mso-ascii-theme-font: minor-fareast; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-fareast;"></span>

# 入侵防范

<span style="color: rgb(224, 62, 45);">**<span style="font-family: 宋体;">测评项：</span><span style="mso-list: Ignore;">a) </span><span style="font-family: 宋体;">应遵循最小安装的原则，仅安装需要的组件和应用程序</span><span style="font-family: 宋体;">。</span>**</span>

**<span style="font-family: 宋体;">测评点：多余插件</span>**

<span style="font-family: 宋体;">**核查命令：**</span>

```pl/sql
show plugins;
```

**<span style="font-family: 宋体;">预期结果:</span>**

 [![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/OFfimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/OFfimage.png)

<span style="color: rgb(224, 62, 45);">**<span style="font-family: 宋体;">测评项：</span><span style="mso-list: Ignore;">b) </span><span style="font-family: 宋体;">应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。</span>**</span>

**<span style="font-family: 宋体;">测评方法</span>**

<span style="mso-list: Ignore;">（1）</span><span style="font-family: 宋体;">执行</span><span style="font-family: 宋体;">“</span><span style="font-family: Times New Roman;">show grants for root@localhost</span><span style="font-family: 宋体;">”命令，查看用户登录的</span><span style="font-family: Times New Roman;">IP</span><span style="font-family: 宋体;">地址，核查是否给所有用户加上了</span><span style="font-family: Times New Roman;">IP</span><span style="font-family: 宋体;">地址限制以拒绝所有未知主机的连接。</span>

<span style="color: rgb(35, 111, 161);"><span style="font-family: 宋体;">注意：当</span><span style="font-family: Times New Roman;">user</span><span style="font-family: 宋体;">表中的</span><span style="font-family: Times New Roman;">Host</span><span style="font-family: 宋体;">值不在本地主机</span><span style="font-family: Times New Roman;">IP</span><span style="font-family: 宋体;">地址范围内时，应为其指定</span><span style="font-family: Times New Roman;">IP</span><span style="font-family: 宋体;">地址，使其不为“</span><span style="font-family: Times New Roman;">%</span><span style="font-family: 宋体;">”，或者将</span><span style="font-family: Times New Roman;">user</span><span style="font-family: 宋体;">表中的</span><span style="font-family: Times New Roman;">Host</span><span style="font-family: 宋体;">值置为空。在</span><span style="font-family: Times New Roman;">host</span><span style="font-family: 宋体;">表中指定允许用户账户登录访问的若干主机。在非信任的客户端以数据库账户登录的行为应被拒绝。用户从其他子网登录的行为也应被拒绝。</span></span>

**<span style="font-family: 宋体;">操作步骤</span>&amp;<span style="font-family: 宋体;">预期结果</span>**

<span style="mso-list: Ignore;">（1）</span><span style="font-family: 宋体;">已在防火墙上限制特定的终端（</span><span style="font-family: Times New Roman;">IP</span><span style="font-family: 宋体;">地址）连接（访问）数据库。</span>

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/uBZimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/uBZimage.png)

 <span style="color: rgb(224, 62, 45);">**<span style="font-family: 宋体;">测评项：</span><span style="mso-list: Ignore;">c) </span><span style="font-family: 宋体;">应</span><span style="font-family: 宋体;">能发现可能存在的已知漏洞，并在经过充分测试评估后，及时修补漏洞。</span>**</span>

**<span style="font-family: 宋体;">测评方法</span>**

<span style="mso-list: Ignore;">（1）</span><span style="font-family: 宋体;">了解</span><span style="font-family: Times New Roman;">MySQL</span><span style="font-family: 宋体;">数据库的补丁升级机制，查看补丁安装情况。执行“</span><span style="font-family: Times New Roman;">show variables where variable\_name like </span><span style="font-family: Times New Roman;">“</span><span style="font-family: Times New Roman;">version</span><span style="font-family: Times New Roman;">”</span><span style="font-family: 宋体;">”命令查看当前补丁版本。</span>

<span style="mso-list: Ignore;">（2）</span><span style="font-family: 宋体;">核查数据库的版本是否为企业版，是否定期进行漏洞扫描，是否针对高风险漏洞安装了经过评估和测试的补丁。</span>

**<span style="font-family: 宋体;">操作步骤</span>&amp;<span style="font-family: 宋体;">预期结果</span>**

<span style="mso-list: Ignore;">（1）</span><span style="font-family: Times New Roman;">MySQL</span><span style="font-family: 宋体;">数据库目前并不存在高风险漏洞，补丁更新及时。</span>

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/eaeimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/eaeimage.png)

<span style="mso-list: Ignore;">（2）</span><span style="font-family: Times New Roman;">MySQL</span><span style="font-family: 宋体;">数据库为企业版，定期进行漏洞扫描。对发现的数据库漏洞，已在测试和评估后进行修补。</span>

# 可信验证

##### 测评项：**a）可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证，并在应用程序的关键执行环节进行动态可信验证，在检测到其可信性受到破坏后进行报警，并将验证结果形成审计记录送至安全管理中心**。

<p class="callout danger">MySQL无法实现可信验证。</p>

# 数据完整性/保密性

##### 测评项：**a）应采用校验技术或密码技术保证重要数据在传输过程中的完整性，包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等**；  
测评项：**a）应采用密码技术保证重要数据在传输过程中的保密性，包括但不限于鉴别数据、重要业务数据和重要个人信息等**；

<p class="callout info">该项核查与身份鉴别c强相关，即仅允许使用TLS证书进行传输时为符合。</p>

```mysql
# 查看指定用户名（如root）是否强制使用TLS传输
select user, host, ssl_type from mysql.user where user = 'root';
# 查看是否全局开启强制TLS传输
show variables like 'require_secure_transport';
# 查看MySQL是否已开启TLS传输
show variables like 'have_ssl';
# 查看MySQL当前TLS相关配置信息
show global variables like 'ssl_cipher';
show global variables like 'ssl_ca';
show global variables like 'ssl_cert';
show global variables like 'ssl_key';
# （重点）查看当前会话是否采用TLS传输
show session status like 'ssl_cipher';
show session status LIKE 'Ssl_cipher_list';
show session status like 'ssl_version';
# 查看MySQL当前支持的TLS版本
show variables like 'tls_version';
```

[![](https://cdn.sa.net/2025/08/29/mlLfek53w67OnWX.png)](https://smms.app/image/mlLfek53w67OnWX)

[![](https://cdn.sa.net/2025/08/29/WvAU3G8griLPJfl.png)](https://smms.app/image/WvAU3G8griLPJfl)

---

##### 测评项：**b）应采用校验技术或密码技术保证重要数据在存储过程中的完整性，包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等**。  
测评项：**b）应采用密码技术保证重要数据在存储过程中的保密性，包括但不限于鉴别数据、重要业务数据和重要个人信息等**。

<p class="callout warning">MySQL <span style="color: rgb(224, 62, 45);">**5.6**</span> 、MySQL <span style="color: rgb(224, 62, 45);">**5.7**</span>和 MySQL <span style="color: rgb(224, 62, 45);">**8.0.0**</span> ~<span style="color: rgb(224, 62, 45);">**8.0.33**</span> ，MySQL默认采用 <span style="color: rgb(224, 62, 45);">**mysql\_native\_password**</span> 插件。该插件依赖存在安全风险的<span style="color: rgb(224, 62, 45);">**SHA1**</span>算法。</p>

<p class="callout success">MySQL <span style="color: rgb(35, 111, 161);">**5.6**</span> ~ MySQL <span style="color: rgb(35, 111, 161);">**8.0.3**</span> 支持的**<span style="color: rgb(35, 111, 161);">sha256\_password</span>** 或 MySQL <span style="color: rgb(35, 111, 161);">**8.0.4**</span> 开始支持的<span style="color: rgb(35, 111, 161);">**caching\_sha2\_password**</span> 引入<span style="color: rgb(35, 111, 161);">**RSA**</span>公私钥对鉴别数据进行加密，两者均使用<span style="color: rgb(35, 111, 161);">**SHA256**</span>校验算法进行保存，区别在于后者加入缓存机制允许高并发操作。</p>

> The SHA-2 family consists of six hash functions with digests (hash values) that are 224, 256, 384 or 512 bits: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.
> 
> 原文详见：https://security.stackexchange.com/questions/87154/what-is-the-relationship-between-sha-2-and-sha-256
> 
> 翻译：SHA2家族包括SHA224、SHA256、SHA384、SHA512所有算法。

```mysql
-- 查看当前用户@地址口令段加密后的信息和所采用的算法
select user, host, plugin, authentication_string from mysql.user;
-- 查看私钥路径（caching_sha2_password）
show variables like 'caching_sha2_password_private_key_path';
-- 查看公钥路径（caching_sha2_password）
show variables like 'caching_sha2_password_public_key_path';
-- 查看当前通信使用的公钥
show status like 'caching_sha2_password_rsa_public_key';
-- 查看公钥路径（sha256_password）
SHOW VARIABLES LIKE 'sha256_password_public_key_path';
-- 查看私钥路径（sha256_password）
SHOW VARIABLES LIKE 'sha256_password_private_key_path';
-- 查看当前通信使用的公钥
show status like 'rsa_public_key';
```

[![](https://cdn.sa.net/2025/08/29/xbSN1U2Lzpi3FIP.png)](https://smms.app/image/xbSN1U2Lzpi3FIP)

# 数据备份恢复



# 剩余信息保护



# 核查与访谈（mysql）

##### MySQL 5.6 ~ MySQL 8.4 可核查的命令：

```mysql
-- 核查插件形式的validate_password，从MySQL 5.7开始支持
select * from information_schema.plugins where plugin_name = 'validate_password';
-- 核查MySQL当前口令策略，默认策略符合要求。
show variables LIKE 'validate_password%';
-- 查看MySQL全局口令过期策略。
show variables like 'default_password_lifetime';
-- 查看MySQL 5.7最近口令更换情况。
select user, host, password_last_changed, password_lifetime from mysql.user;
-- 核查 interactive_timeout参数
show variables like '%timeout';
-- 查看指定用户名（如root）是否强制使用TLS传输
select user, host, ssl_type from mysql.user where user = 'root';
-- 查看是否全局开启强制TLS传输
show variables like 'require_secure_transport';
-- 查看MySQL是否已开启TLS传输
show variables like 'have_ssl';
-- 查看MySQL当前TLS相关配置信息
show global variables like 'ssl_cipher';
-- 查看当前会话是否采用TLS传输
show session status like 'ssl_cipher';
show session status LIKE 'Ssl_cipher_list';
show session status like 'ssl_version';
-- 查看MySQL当前支持的TLS版本
show variables like 'tls_version';
-- 查看用户授权情况
select Host,Account_locked,User,Insert_priv,Delete_priv,Alter_priv,Drop_priv,Grant_priv,Super_priv from mysql.user;
-- 查看用户与数据库间授权关联
SELECT * FROM `role_edges`;
SELECT * FROM `USER_PRIVILEGES`;
-- 查看日志开启情况
show variables like 'log%';
-- 查看当前已安装的插件
-- 查看当前用户@地址口令段加密后的信息和所采用的算法
select user, host, plugin, authentication_string from mysql.user;
-- 查看公钥路径（sha256_password）
SHOW VARIABLES LIKE 'sha256_password_public_key_path';
-- 查看私钥路径（sha256_password）
SHOW VARIABLES LIKE 'sha256_password_private_key_path';
-- 查看当前通信使用的公钥
show status like 'rsa_public_key';
```

##### MySQL 8.0 ~MySQL 8.4的命令：  


```mysql
-- MySQL 5.7及更低版本本命令行不适用。
select * from mysql.user where length(authentication_string) = 0 or authentication_string is null;
-- 核查模块形式的validate_password，从MySQL 8.0.2开始支持
select * from mysql.component;
-- 查看MySQL 8.0最近口令更换情况。（支持限制使用重复密码）
select user, host, password_last_changed, password_lifetime,password_expired,password_reuse_history,password_reuse_time from mysql.user;
-- 核查 MySQL 8.0登录失败锁定情况
select host,user,User_attributes from mysql.user;
-- 查看私钥路径（caching_sha2_password）
show variables like 'caching_sha2_password_private_key_path';
-- 查看公钥路径（caching_sha2_password）
show variables like 'caching_sha2_password_public_key_path';
-- 查看当前通信使用的公钥
show status like 'caching_sha2_password_rsa_public_key';
```

##### MySQL 9.0 ~MySQL 9.5的命令：

```mysql
-- ========== 1. 密码验证策略检查 ==========
-- 1.1 核查密码验证组件（MySQL 8.0+ 从插件改为组件）
-- 注意：MySQL 8.0+ 使用 component_validate_password 组件替代旧的插件
SELECT * FROM mysql.component 
WHERE component_urn = 'file://component_validate_password';
-- 如果组件未安装，可使用以下命令安装：
-- INSTALL COMPONENT 'file://component_validate_password';

-- 1.2 核查MySQL当前口令策略（MySQL 8.0+ 变量名改为带点号格式）
SHOW VARIABLES LIKE 'validate_password.%';
-- 常见密码策略变量说明：
-- validate_password.length                 - 密码最小长度（默认8）
-- validate_password.policy                 - 策略等级（LOW/MEDIUM/STRONG）
-- validate_password.mixed_case_count       - 大小写字母最小数量
-- validate_password.number_count           - 数字最小数量
-- validate_password.special_char_count     - 特殊字符最小数量
-- validate_password.dictionary_file        - 字典文件路径

-- 1.3 查看MySQL全局口令过期策略
SHOW VARIABLES LIKE 'default_password_lifetime';
-- 说明：单位为天，0表示永不过期，建议设置为90天

-- 1.4 查看所有用户的密码更换情况和过期策略
SELECT user, host, 
       password_last_changed AS '最后修改时间',
       password_lifetime AS '密码有效期(天)',
       CASE 
           WHEN password_lifetime IS NULL THEN '使用全局策略'
           WHEN password_lifetime = 0 THEN '永不过期'
           ELSE CONCAT(password_lifetime, '天')
       END AS '过期策略说明'
FROM mysql.user
ORDER BY user, host;

-- ========== 2. 连接超时与会话检查 ==========
-- 2.1 核查所有超时相关参数
SHOW VARIABLES LIKE '%timeout';
-- 重点关注：
-- interactive_timeout    - 交互式连接超时（默认28800秒/8小时）
-- wait_timeout          - 非交互式连接超时
-- connect_timeout       - 连接握手超时

-- ========== 3. TLS/SSL 加密传输检查 ==========
-- 3.1 查看指定用户（如root）是否强制使用TLS传输
SELECT user, host, ssl_type,
       CASE ssl_type
           WHEN '' THEN '不要求TLS'
           WHEN 'ANY' THEN '要求TLS（任意加密）'
           WHEN 'X509' THEN '要求X509证书'
           WHEN 'SPECIFIED' THEN '要求指定证书'
       END AS 'TLS要求说明'
FROM mysql.user 
WHERE user = 'root';

-- 3.2 查看所有用户的TLS配置
SELECT user, host, ssl_type
FROM mysql.user
WHERE ssl_type != ''
ORDER BY user, host;

-- 3.3 查看是否全局开启强制TLS传输
SHOW VARIABLES LIKE 'require_secure_transport';
-- 说明：ON表示所有连接必须使用TLS，OFF表示可选

-- 3.4 查看MySQL是否已开启TLS传输能力
SHOW VARIABLES LIKE 'have_ssl';
-- 说明：YES表示已启用，DISABLED表示未启用

-- 3.5 查看MySQL当前TLS相关配置信息
SHOW GLOBAL VARIABLES LIKE 'ssl_%';
-- 重点关注：
-- ssl_ca        - CA证书路径
-- ssl_cert      - 服务器证书路径
-- ssl_key       - 服务器私钥路径
-- ssl_cipher    - 允许的加密套件

-- 3.6 查看当前会话是否采用TLS传输
SHOW SESSION STATUS LIKE 'ssl_cipher';
SHOW SESSION STATUS LIKE 'Ssl_cipher_list';
SHOW SESSION STATUS LIKE 'ssl_version';
-- 说明：如果ssl_cipher为空，表示当前会话未使用TLS

-- 3.7 查看MySQL当前支持的TLS版本
SHOW VARIABLES LIKE 'tls_version';
-- 建议：至少支持 TLSv1.2, TLSv1.3，禁用TLSv1和TLSv1.1

-- ========== 4. 用户权限与授权检查 ==========
-- 4.1 查看所有用户的基本权限（MySQL 9.0 兼容写法）
SELECT Host, User, Account_locked AS '账户锁定',
       Insert_priv AS '插入', 
       Delete_priv AS '删除', 
       Alter_priv AS '修改', 
       Drop_priv AS '删除表', 
       Grant_priv AS '授权', 
       Super_priv AS '超级权限',
       Create_role_priv AS '创建角色',
       Drop_role_priv AS '删除角色'
FROM mysql.user
ORDER BY User, Host;
-- 注意：Super_priv 在 MySQL 8.0+ 逐步被动态权限替代

-- 4.2 查看用户与角色的关联关系
SELECT FROM_HOST AS '来源主机', 
       FROM_USER AS '来源用户', 
       TO_HOST AS '目标主机', 
       TO_USER AS '目标用户',
       WITH_ADMIN_OPTION AS '可再授权'
FROM mysql.role_edges
ORDER BY FROM_USER, TO_USER;

-- 4.3 查看所有用户的全局权限
SELECT GRANTEE AS '授权对象', 
       PRIVILEGE_TYPE AS '权限类型', 
       IS_GRANTABLE AS '可授权'
FROM information_schema.USER_PRIVILEGES
ORDER BY GRANTEE, PRIVILEGE_TYPE;

-- 4.4 查看数据库级别的权限
SELECT Host, User, Db AS '数据库',
       Select_priv, Insert_priv, Update_priv, Delete_priv,
       Create_priv, Drop_priv, Grant_priv
FROM mysql.db
ORDER BY Db, User;


-- ========== 5. 日志审计检查 ==========

-- 5.1 查看所有日志相关配置
SHOW VARIABLES LIKE 'log%';
-- 重点关注：
-- log_error              - 错误日志路径
-- general_log            - 通用查询日志（性能影响大，生产环境慎用）
-- slow_query_log         - 慢查询日志
-- log_bin                - 二进制日志（主从复制必需）
-- log_bin_trust_function_creators - 二进制日志函数创建权限

-- 5.2 查看审计日志插件状态（如果安装了审计插件）
SELECT PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE, PLUGIN_LIBRARY
FROM information_schema.PLUGINS
WHERE PLUGIN_NAME LIKE '%audit%';

-- ========== 6. 用户认证与加密检查 ==========
-- 6.1 查看所有用户的认证插件和加密信息
SELECT user, host, 
       plugin AS '认证插件',
       CASE plugin
           WHEN 'mysql_native_password' THEN 'MySQL 5.7 原生认证'
           WHEN 'caching_sha2_password' THEN 'MySQL 8.0+ 缓存SHA2认证（推荐）'
           WHEN 'sha256_password' THEN 'SHA256认证'
           WHEN 'auth_socket' THEN 'Socket认证（仅本地）'
           ELSE plugin
       END AS '认证方式说明',
       CHAR_LENGTH(authentication_string) AS '密文长度'
FROM mysql.user
ORDER BY user, host;
-- 建议：MySQL 9.0 推荐使用 caching_sha2_password

-- 6.2 查看 sha256_password 公钥路径
SHOW VARIABLES LIKE 'sha256_password_public_key_path';

-- 6.3 查看 sha256_password 私钥路径
SHOW VARIABLES LIKE 'sha256_password_private_key_path';

-- 6.4 查看当前通信使用的RSA公钥
SHOW STATUS LIKE 'rsa_public_key';


-- ========== 7. 组件与插件检查（MySQL 8.0+/9.0 推荐） ==========
-- 7.1 查看所有已安装的组件（MySQL 8.0+ 新特性）
SELECT component_id, component_group_id, component_urn
FROM mysql.component
ORDER BY component_id;

-- 7.2 使用 SHOW COMPONENTS 命令（MySQL 8.0.17+）
SELECT component_id AS '组件ID', 
       component_group_id AS '组件组ID', 
       component_urn AS '组件URN'
FROM mysql.component
ORDER BY component_id;

-- 7.3 查看所有已安装的插件
SELECT PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_STATUS, PLUGIN_TYPE, PLUGIN_LIBRARY
FROM information_schema.PLUGINS
WHERE PLUGIN_STATUS = 'ACTIVE'
ORDER BY PLUGIN_TYPE, PLUGIN_NAME;


-- ========== 8. 动态权限检查（MySQL 8.0+/9.0 新特性） ==========
-- 8.1 查看所有动态权限（替代部分Super_priv功能）
SELECT USER AS '用户', HOST AS '主机', PRIV AS '动态权限'
FROM mysql.global_grants
ORDER BY USER, HOST, PRIV;

-- 常见动态权限：
-- ROLE_ADMIN                    - 角色管理
-- BINLOG_ADMIN                  - 二进制日志管理
-- CONNECTION_ADMIN              - 连接管理
-- REPLICATION_SLAVE_ADMIN       - 复制从库管理
-- SYSTEM_VARIABLES_ADMIN        - 系统变量管理
-- BACKUP_ADMIN                  - 备份管理


-- ========== 9. 安全相关系统变量检查 ==========
SHOW VARIABLES WHERE Variable_name IN (
    'local_infile',                    -- 禁止加载本地文件（安全风险）
    'secure_file_priv',               -- 限制文件导入导出路径
    'skip_name_resolve',              -- 跳过DNS解析（提升性能和安全）
    'sql_mode',                       -- SQL模式
    'max_connect_errors',             -- 最大连接错误次数
    'max_connections',                -- 最大连接数
    'max_user_connections'            -- 单用户最大连接数
);


-- ========== 10. 空密码和弱密码用户检查 ==========
-- 10.1 检查空密码用户（严重安全隐患）
SELECT user, host, '!!!空密码账户!!!' AS '安全风险'
FROM mysql.user
WHERE authentication_string = '' OR authentication_string IS NULL;

-- 10.2 检查通配符主机用户（安全风险）
SELECT user, host, '允许任意主机连接' AS '安全风险'
FROM mysql.user
WHERE host = '%'
ORDER BY user;


-- ============================================================
-- 脚本执行完毕
-- ============================================================

SELECT '
============================================================
MySQL 9.0 安全审计检查完成！

建议操作：
1. 确保 caching_sha2_password 组件已安装
2. 所有用户密码长度应 >= 8 位，包含大小写字母、数字和特殊字符
3. 启用密码过期策略（建议90-180天）
4. 生产环境强制启用 TLS/SSL 传输
5. 移除空密码账户和不必要的通配符主机授权
6. 定期审计用户权限，遵循最小权限原则
7. 启用慢查询日志和错误日志
8. 禁用 local_infile，设置 secure_file_priv
9. 使用角色管理权限，避免直接授予过高权限
10. MySQL 9.0 推荐使用动态权限替代 Super_priv
============================================================
' AS '审计建议';

```

# 达梦

# 身份鉴别

##### <span style="color: rgb(224, 62, 45);">**测评项：a）应对登录的用户进行身份标识和鉴别，身份标识具有唯一性，身份鉴别信息具有复杂度要求并定期更换；**</span>

1）应核查用户在登录时是否采用了身份鉴别措施；

使用**<span style="color: rgb(35, 111, 161);">DM管理工具</span>**进行登录时提供了四种身份验证方式，四种身份鉴别方式均需要提供登录口令，如图：

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/G3fimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/G3fimage.png)

2）应核查用户列表确认用户身份标识是否具有唯一性；

无法创建同名账户，一般默认符合；

```
SELECT USERNAME FROM DBA_USERS;
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/jhDimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/jhDimage.png)

3）应核查用户配置信息或测试验证是否不存在空口令用户；

<p class="callout info">注意：使用SYSDBA查看用户表发现所有账户password字段均为NULL，通过网上查询似乎是数据库为了安全性隐藏了这些信息。在配置向导中可以配置SYSDBA用户口令为空（但是仅能通过DIsql.exe空口令登录），使用SYSDBA创建其他普通账户时强制要求了口令，其他管理账户默认均有口令，建议手动测试账户是否配置了登录口令。</p>

查看用户以及口令信息：

```
SELECT USERNAME, PASSWORD FROM DBA_USERS;
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/MCSimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/MCSimage.png)

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/sqGimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/sqGimage.png)

4）应核查用户鉴别信息是否具有复杂度要求并定期更换。

<p class="callout info">口令策略：除了在创建用户语句中指定该用户的口令策略，DM 的 INI 参数 PWD\_POLICY 可以指定系统的默认口令策略，缺省值为 ≥2。</p>

```
SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY';
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/NGhimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/NGhimage.png)

> PWD\_POLICY的数值策略含义（位掩码组合）
> 
> <table id="bkmrk-%E6%95%B0%E5%80%BC-%E7%AD%96%E7%95%A5%E5%90%AB%E4%B9%89%EF%BC%88%E4%BD%8D%E6%8E%A9%E7%A0%81%E7%BB%84%E5%90%88%EF%BC%89-%E8%AF%B4%E6%98%8E-0-"><thead><tr><th>数值</th><th>策略含义（位掩码组合）</th><th>说明</th></tr></thead><tbody><tr><td>`0`</td><td>无策略（不启用密码策略）</td><td>密码无复杂度、有效期等限制</td></tr><tr><td>`1`</td><td>密码长度 ≥8 位</td><td>仅限制长度</td></tr><tr><td>`2`</td><td>密码含大写、小写、数字、标点 **至少三类**</td><td>强制复杂度</td></tr><tr><td>`4`</td><td>启用密码有效期（需结合 `PWD_MAX_LIFE_TIME`）</td><td>密码到期需修改</td></tr><tr><td>`8`</td><td>密码 **禁止与用户名相同**</td><td>防弱密码</td></tr><tr><td>`16`</td><td>登录失败锁定（需结合 `PWD_LOCK_TIME`）</td><td>防暴力破解</td></tr><tr><td>`32`</td><td>密码重用限制（需结合 `PWD_HISTORY`）</td><td>禁止重复使用历史密码</td></tr></tbody></table>

使用自带的<span style="color: rgb(35, 111, 161);">**DM 控制台工具**</span>查看（开发版没查出来）：

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/kw7image.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/kw7image.png)

登录超时：使用自带的DM管理工具，SYSDBA登录后查看用户，点击用户属性，在DLL中查看口令有效期“password\_life\_time”的值（密码有效期30天）。

注意：<span style="color: rgb(35, 111, 161);">**修改系统参数需要 SYSDBA 或 PUBLIC 角色的 ALTER SYSTEM 权限**</span>。若当前用户权限不足，会提示参数错误

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/Yakimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/Yakimage.png)

##### <span style="color: rgb(224, 62, 45);">**测评项：b）应具有登录失败处理功能，应配置并启用结束会话、限制非法登录次数和当登录连 接超时自动退出等相关措施。**</span>

1）应核查是否配晋并启用了登录失败处理功能；

```
SELECT 
    so.NAME AS "达梦数据库用户名",--列名都需要查表，so 是 SYSOBJECTS 表的别名（通过 JOIN SYSOBJECTS so 指定）。
    su.FAILED_NUM AS "失败次数限制",--su 是 SYSUSERS 表的别名（通过 FROM SYSUSERS su 指定）。
    su.FAILED_ATTEMPS AS "失败尝试次数",
    su.LOCK_TIME AS "锁定时间（min）"
FROM SYSUSERS su
JOIN SYSOBJECTS so ON su.ID = so.ID
WHERE so.SUBTYPE$ = 'USER';--这个subtype字段需要查表
```

> 参数解释：
> 
> PASSWORD\_LOCK\_TIME：锁定账户的时间，默认值为1，系统预设管理员用户默认无限制。
> 
> FAILED\_LOGIN\_ATTEMPTS：允许的失败登录尝试次数，默认值为3，系统预设管理员用户默认无限制。

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/BXsimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/BXsimage.png)

2）应核查是否配置并启用了限制非法登录功能，非法登录达到一定次数后采取特定动作，如账户锁定等；

同上第一小点

3）应核查是否配置并启用了登录连接超时及自动退出功能；

> 参数解释：
> 
> CONNECT\_TIME：会话连接的总时长限制，默认无限制。
> 
> CONNECT\_IDLE\_TIME：会话空闲状态的时长限制，默认无限制。

登录超时命令行查询：

```
SELECT PROFILE, RESOURCE_NAME, LIMIT 
FROM DBA_PROFILES 
WHERE RESOURCE_NAME IN ('CONNECT_TIME', 'CONNECT_IDLE_TIME');
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/0K0image.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/0K0image.png)

> 如果上述命令查询失败，可使用如下两条命令替换： ---- 查看连接存活超时（死连接检测）配置  
> SELECT \* FROM V$PARAMETER WHERE NAME = 'SQLNET\_EXPIRE\_TIME';
> 
> \-- 查看会话空闲超时（自动退出）配置  
> SELECT \* FROM V$PARAMETER WHERE NAME = 'IDLE\_TIME';

##### <span style="color: rgb(224, 62, 45);">**测评项：c）当进行远程管理时，应采取必要措施防止鉴别信息在网络传输过程中被窃听；**</span>

> DM 提供两种通信加密方式：一基于传输层的 SSL 协议加密；二基于应用层的消息包加密。当未采用通信加密时，为了提高安全性，数据库系统自动对登录消息中的用户名密码使用内部算法进行了简单的加解密操作。
> 
> 详情查阅：https://eco.dameng.com/document/dm/zh-cn/pm/communication-encryption.html

##### <span style="color: rgb(224, 62, 45);">**测评项：d）应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别，且其中一种鉴别技术至少应使用密码技术来实现。**</span>

通过访谈以及验证，确认是否采用了其他的身份鉴别技术。

# 访问控制

##### <span style="color: rgb(224, 62, 45);">**测评项：a）应对登录的用户分配账户和权限；**</span>

1）应核查是否为分配了账户和权限及相关设置情况；

查看所有用户：

```
SELECT USERNAME FROM DBA_USERS;
```

查看系统权限：

```
SELECT * FROM DBA_SYS_PRIVS ORDER BY GRANTEE;  //所有用户
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'SYSDBA';   //单个用户
```

查看对象权限：

```
SELECT * FROM DBA_TAB_PRIVS ORDER BY GRANTEE;   //所有用户
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE='SYSDBA';  //单个用户
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/T9timage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/T9timage.png)

> 注：
> 
> **<span style="color: rgb(35, 111, 161);">系统权限：</span>**指用户在整个数据库系统层面上的权限，允许用户执行特定的系统级操作，如：
> 
> CREATE SESSION：允许用户连接到数据库。
> 
> CREATE TABLE：允许用户创建表。
> 
> ALTER USER：允许用户修改其他用户的属性。
> 
> DROP ANY TABLE：允许用户删除任何表。
> 
> DBA：数据库管理员权限，几乎所有操作都可以执行。
> 
> <span style="color: rgb(35, 111, 161);">**对象权限：**</span>指用户对特定数据库对象（如表、视图、序列等）上的权限，如：
> 
> SELECT：允许用户查询（选择）数据。
> 
> INSERT：允许用户插入数据。
> 
> UPDATE：允许用户更新数据。
> 
> DELETE：允许用户删除数据。
> 
> EXECUTE：允许用户执行存储过程或函数。
> 
> REFERENCES：允许用户创建外键引用。
> 
> <span style="color: rgb(35, 111, 161);">**详情可查阅：https://eco.dameng.com/document/dm/zh-cn/pm/discretionary-access-control.html#3.3**</span>

<span style="color: rgb(0, 0, 0);">2）应核查是否已禁用或限制匿名、默认账户的访问权限。</span>

<span style="color: rgb(0, 0, 0);">DM 数据库默认按照三权分立的机制进行权限划分，另外可以通过 SYSSSO 安全员账户设置安全标记限制SYSDBA的访问权限，添加标记后</span><span style="color: rgb(0, 0, 0);">DBA 就不能直接访问添加有安全标记的数据限制，默认无（非安全版本SYSSSO账户无法登录）。</span>

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/TZQimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/TZQimage.png)

##### <span style="color: rgb(224, 62, 45);">**测评项：b）应重命名或删除默认账户，修改默认账户的默认口令；**</span>

1）应核查是否已经重命名默认账户或默认账户已被删除；

2）应核查是否已修改默认账户的默认口令。

<p class="callout info">用户名和密码：DM 数据库会预设数据库管理员账号 SYSDBA、数据库安全员账号 SYSSSO 和数据库审计员账号 SYSAUDITOR，其缺省口令都与用户名一致。若为DM 安全版本提供“四权分立”安全机制，新增数据库对象操作员账户 SYSDBO，其缺省口令为 SYSDBO。</p>

##### <span style="color: rgb(224, 62, 45);">**测评项：c）应及时删除或停用多余的、过期的账户，避免共享账户的存在；**</span>

1）应核查是否不存在多余或过期账户，管理员用户与账户之间是否一一对应；

2）应测试验证多余的、过期的账户是否被删除或停用。

查看所有账户，访谈管理员：

```
SELECT USERNAME FROM DBA_USERS;
```

##### <span style="color: rgb(224, 62, 45);">**测评项：d）应授予管理用户所需的最小权限，实现管理用户的权限分离；**</span>

1）应核查是否进行角色划分；

2）应核查管理用户的权限是否已进行分离；

3）应核查管理用户权限是否为其工作任务所需的最小权限。

<p class="callout info">DM 数据库会预设数据库管理员账号 SYSDBA、数据库安全员账号 SYSSSO 和数据库审计员账号 SYSAUDITOR。若为DM 安全版本提供“**<span style="color: rgb(35, 111, 161);">四权分立</span>**”安全机制，新增数据库对象操作员账户 SYSDBO。默认已对账户进行了管理账户的权限分离，如：系统管理员无权限管理安全审计相关配置等。</p>

##### <span style="color: rgb(224, 62, 45);">**测评项：e）应由授权主体配置访问控制策略，访问控制策略规定主体对客体的访问规则；**</span>

1）应核查是否由授权主体（如管理用户）负责配置访问控制策略；

2）应核查授权主体是否依据安全策略配登了主体对客体的访问规则；

3）应测试验证用户是否有可越权访问情形。

访谈管理员是否制定数据库的访问控制策略，并通过专门的管理员账户（授权主体一般为数据库管理员客体为表、库）进行配置访问控制策略。

使用命令查看账号对象权限：

```
SELECT * FROM DBA_TAB_PRIVS ORDER BY GRANTEE;  //所有用户
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'TEST_USER'; //单个用户
```

##### <span style="color: rgb(224, 62, 45);">**测评项：f）访问控制的粒度应达到主体为用户级或进程级，客体为文件、数据库表级；**</span>

DM 支持对数据库中的表、视图、索引等对象扩展客体标记，一旦一个对象被应用了扩展客体标记，则用户只有在支配相应标记的情况下，才能访问客体。

##### <span style="color: rgb(224, 62, 45);">**测评项：g）应对重要主体和客体设置安全标记，并控制主体对有安全标记信息资源的访问。**</span>

1）应核查是否对主体、客体设置了安全标记；

2）应测试验证是否依据主体、客体安全标记控制主体对客体访问的强制访问控制策略。

DM数据库支持自主访问控制以及强制访问控制，在强制访问控制中，系统给主体和客体都分配一个特殊的安全标记，主体的安全标记反映了该主体可信的程度，客体的安全标记则与其包含信息的敏感度一致，且主体不能改变他自己及任何其它客体的安全标记，主体是否可以对客体执行特定的操作取决于主体和客体的安全标记之间的支配关系。

<p class="callout warning">**<span style="color: rgb(35, 111, 161);">强制访问控制功能仅在 DM 安全版中提供，DM 中与强制访问控制相关的数据字典表，只有具有 SSO 类型的用户才能查询。</span>**</p>

<p class="callout info">详情查阅：https://eco.dameng.com/document/dm/zh-cn/pm/mandatory-access-control.html</p>

# 安全审计

##### <span style="color: rgb(224, 62, 45);">**测评项：a）应启用安全审计功能，审计覆盖到每个用户，对重要的用户行为和重要安全事件进行审计；**</span>

1）应核查是否开启了安全审计功能；

> DM 具有一个灵活的审计子系统，可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。审计开关由过程 VOID SP\_SET\_ENABLE\_AUDIT（param int）;控制，过程执行完后会立即生效，param 有三种取值：
> 
> 0：关闭审计，缺省值为 0。
> 
> 1：打开普通审计
> 
> 2：打开普通审计和实时审计

使用**<span style="color: rgb(35, 111, 161);">数据库数据库审计员</span>**查询审计开关当前的值：

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/vdRimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/vdRimage.png)

2）应核查安全审计范围是否覆盖到每个用户；

默认覆盖到数据库上的每一个用户账户。

3）应核查是否对重要的用户行为和重要安全事件进行审计。

> 审计级别说明如下：  
> **<span style="color: rgb(35, 111, 161);">系统级</span>**：系统的启动、关闭、部分系统事件以及一些系统过程和函数的调用，此级别的审计无法也无需由用户进行设置，只要审计开关打开就会自动生成对应审计记录  
> <span style="color: rgb(35, 111, 161);">**语句级**</span>：导致影响特定类型数据库对象的特殊 SQL 或语句组的审计。如 AUDIT TABLE 将审计 CREATE TABLE、ALTER TABLE 和 DROP TABLE 等语句  
> <span style="color: rgb(35, 111, 161);">**对象级**</span>：审计作用在特殊对象上的语句。如 test 表上的 INSERT 语句

开启ENABLE\_AUDIT以及针对语句级查询后查看日志记录；

```
select * from V$AUDITRECORDS；
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/FTyimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/FTyimage.png)

另外在配置文件dm.ini中添加参数 AUD\_PATH 指定审计文件保存位置后，可在对应log目录下找到日志记录文件。

##### <span style="color: rgb(224, 62, 45);">**测评项：b）审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相 关的信息**</span>

审计记录内容包括操作者的用户名、所在站点、所进行的操作、操作的对象、操作时间、当前审计条件等。

##### <span style="color: rgb(224, 62, 45);">**测评项：c）应对审计记录进行保护，定期备份，避免受到未预期的删除、修改或覆盖等；**</span>

<p class="callout info">单个审计文件的大小可以通过 DM 的 INI 参数 AUDIT\_MAX\_FILE\_SIZE 指定。当单个审计文件超过指定大小时，系统会自动切换审计文件，自动创建新的审计文件，审计记录将写入新的审计文件中。AUDIT\_MAX\_FILE\_SIZE 为动态系统级参数，有效值范围为 1~4096M，缺省值为 100M。</p>

<p class="callout info">极限情况下，审计记录可能会因为磁盘空间不足而无法写入审计文件，最终导致系统无法正常运行。对这种情况的处理有两种策略，通过设置 DM 的 INI 参数 **<span style="color: rgb(35, 111, 161);">AUDIT\_FILE\_FULL\_MODE </span>**进行配置。当将 AUDIT\_FILE\_FULL\_MODE 置为 1 时，将删除最老的审计文件，直至有足够的空间创建新审计文件。当将 AUDIT\_FILE\_FULL\_MODE 置为 2 时，将不再写审计记录；缺省值为 1。</p>

> 不同AUDIT\_FILE\_FULL\_MODE的含义如下：
> 
> <table id="bkmrk-%E5%8F%82%E6%95%B0%E5%80%BC-%E5%90%AB%E4%B9%89-0-%E5%BD%93%E5%AE%A1%E8%AE%A1%E6%96%87%E4%BB%B6%E5%86%99%E6%BB%A1%E6%97%B6%EF%BC%8C%E5%81%9C%E6%AD%A2"><thead><tr><th>参数值</th><th>含义</th></tr></thead><tbody><tr><td>`0`</td><td>当审计文件写满时，**停止写入新的审计记录**，并可能触发报错（严格模式，确保记录不丢失，但可能影响业务）。</td></tr><tr><td>`1`</td><td>写满后 **切换到新的审计文件**（需提前配置文件路径和滚动策略，如按大小或时间分割）。</td></tr><tr><td>`2`</td><td>写满后 **覆盖最早的审计记录**（但可能仅覆盖部分旧记录，策略较简单）。</td></tr><tr><td>`3`</td><td>写满后 **循环覆盖最早的审计记录**（持续滚动写入，始终保留最新的审计记录，旧记录逐步被覆盖）。</td></tr></tbody></table>
> 
> 两种策略都会导致审计记录的缺失，因此，管理员应该及时对审计文件进行备份。

```
SELECT * FROM V$PARAMETER WHERE NAME = 'AUDIT_FILE_FULL_MODE';
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/YSgimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/YSgimage.png)

##### <span style="color: rgb(224, 62, 45);">**测评项：d）应对审计进程进行保护，防止未经授权的中断。**</span>

默认普通用户以及非审计员管理账户无权限关闭日志记录进程。

<p class="callout info">更多和审计相关的信息请查阅：**<span style="color: rgb(35, 111, 161);">https://eco.dameng.com/document/dm/zh-cn/pm/audit.html</span>**  
</p>

# 入侵防范

##### <span style="color: rgb(224, 62, 45);">**测评项：a）应遵循最小安装的原则，仅安装需要的组件和应用程序。**</span>

1）应核查是否遵循最小安装原则；

2）应核查是否未安装非必要的组件和应用程序。

数据库默认最小化安装，无多余扩展。

##### **<span style="color: rgb(224, 62, 45);">测评项：b）应关闭不需要的系统服务、默认共享和高危端口；</span>**

参考《GB/T 28448-2019 信息安全技术 网络安全等级保护测评要求》，该要求项，不适用于数据库。

##### <span style="color: rgb(224, 62, 45);">**测评项：c）应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。**</span>

<p class="callout info">测评点：**<span style="color: rgb(35, 111, 161);">ALLOW\_ADDR字段</span>**</p>

查看所有账户的访问规则：

```
Select A.allow_addr,A.not_allow_addr,A.allow_dt,A.not_allow_dt,B.USERNAME from SYSUSERS A ,DBA_USERS B WHERE A.ID=B.USER_ID;
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/Vm1image.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/Vm1image.png)

##### <span style="color: rgb(224, 62, 45);">**测评项：d）应提供数据有效性检验功能，保证通过人机接口输入或通过通信接口输入的内容符 合系统设定要求。**</span>

参考《GB/T 28448-2019 信息安全技术 网络安全等级保护测评要求》，该要求项，不适用于数据库。

##### <span style="color: rgb(224, 62, 45);">**测评项：e）应能发现可能存在的已知漏洞，并在经过充分测试评估后，及时修补漏洞；**</span>

根据现场漏洞扫描结果进行判断。

##### <span style="color: rgb(224, 62, 45);">**测评项：f）应能够检测到对重要节点进行入侵的行为，并在发生严重入侵事件时提供报警。**</span>

参考《GB/T 28448-2019 信息安全技术 网络安全等级保护测评要求》，该要求项，不适用于数据库。

<p class="callout info">补充：**<span style="color: rgb(35, 111, 161);">DM数据库SP\_SET\_ENABLE\_AUDIT为 (2)时可以实时侵害检测</span>**，根据侵害检测结果做出相应（安全策略）的安全审计响应，结合审计告警工具dmamon，将报警信息以邮件的形式发送给指定邮箱。  
</p>

# 可信验证

##### <span style="color: rgb(224, 62, 45);">**测评项：a）可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证，并在应用程序的关键执行环节进行动态可信验证，在检测到其可信性受到破坏后进行报警，并将验证结果形成审计记录送至安全管理中心。**</span>

参考《GB/T 28448-2019 信息安全技术 网络安全等级保护测评要求》，该要求项，不适用于数据库。

# 数据完整性

##### **<span style="color: rgb(224, 62, 45);">测评项：a）应采用校验技术或密码技术保证重要数据在传输过程中的完整性，包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等；</span>**

根据保密性查询的算法判断是否具有完整性校验

##### <span style="color: rgb(224, 62, 45);">**测评项：b）应采用校验技术或密码技术保证重要数据在存储过程中的完整性，包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。**</span>

根据保密性查询的算法判断是否具有完整性校验

# 数据保密性

> <span style="color: rgb(0, 0, 0);">**参考文档：[通信加密 | 达梦技术文档](https://eco.dameng.com/document/dm/zh-cn/pm/communication-encryption.html)**</span>

##### <span style="color: rgb(224, 62, 45);">**测评项：a）应采用密码技术保证重要数据在传输过程中的保密性，包括但不限于鉴别数据、重要业务数据和重要个人信息等；**</span>

<p class="callout success">达梦数据库的SSL模式运行于**TCP/IP四层**模式时，在传统双向认证的基础上区分为**SSL认证**（证书验证）和**SSL加密**（数据传输）</p>

<table border="1" id="bkmrk-enable_encrypt-%E6%95%B0%E5%80%BC-ss" style="border-collapse: collapse; width: 82.5%; height: 164.8px;"><colgroup><col style="width: 26.2923%;"></col><col style="width: 26.738%;"></col><col style="width: 46.94%;"></col></colgroup><tbody><tr style="height: 46.4px;"><td style="height: 46.4px;">**ENABLE\_ENCRYPT 数值**</td><td style="height: 46.4px;">**SSL认证（鉴别数据）**</td><td style="height: 46.4px;">**SSL加密（业务数据等）**</td></tr><tr style="height: 29.6px;"><td style="height: 29.6px;">0</td><td style="height: 29.6px;"><span style="color: rgb(22, 145, 121);">**aes-256-cfb**</span></td><td style="height: 29.6px;">无</td></tr><tr style="height: 29.6px;"><td style="height: 29.6px;"><span style="color: rgb(22, 145, 121);">1</span></td><td style="height: 29.6px;"><span style="color: rgb(22, 145, 121);">启用，以SSL证书算法为准</span></td><td style="height: 29.6px;"><span style="color: rgb(22, 145, 121);">启用，以当前会话为准</span></td></tr><tr style="height: 29.6px;"><td style="height: 29.6px;"><span style="color: rgb(22, 145, 121);">2</span></td><td style="height: 29.6px;"><span style="color: rgb(22, 145, 121);">启用，以SSL证书算法为准</span></td><td style="height: 29.6px;">无</td></tr><tr style="height: 29.6px;"><td style="height: 29.6px;">4</td><td style="height: 29.6px;"><span style="color: rgb(22, 145, 121);">**aes-256-cfb**</span></td><td style="height: 29.6px;">启用，以当前会话为准（客户端未配置则不加密）</td></tr></tbody></table>

```
SELECT * FROM V$PARAMETER WHERE NAME='ENABLE_ENCRYPT';
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/pvtimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/pvtimage.png)

<p class="callout info">达梦数据库的SSL模式支持低版本TLS，建议手动核查 **dm.ini** 的会话版本。**MIN\_SSL\_VERSION** 应取值为 **0x0303** 或 **0x0304** 。</p>

<p class="callout warning">达梦数据库的SSL模式也支持运行于**TCP/IP七层**模式。当SSL证书未配置时，应用层也存在未加密的可能性。</p>

<table border="1" id="bkmrk-comm_encrypt_name-%E6%95%B0%E5%80%BC" style="border-collapse: collapse; width: 42.2619%;"><colgroup><col style="width: 60.1641%;"></col><col style="width: 39.7794%;"></col></colgroup><tbody><tr><td>**COMM\_ENCRYPT\_NAME 数值**</td><td>**业务数据等**</td></tr><tr><td>NULL</td><td>未加密</td></tr><tr><td>数值不规范</td><td>**aes-256-cfb**</td></tr><tr><td>数值规范</td><td>以实际为准</td></tr></tbody></table>

```
// 当前会话已采用的加密算法
SELECT * FROM V$PARAMETER WHERE NAME='COMM_ENCRYPT_NAME';
// 达梦数据库可支持的算法
SELECT CYT_NAME FROM V$CIPHERS WHERE (CYT_TYPE=1 OR CYT_TYPE=2 ) AND （WORK_MODE!='ECB_NOPAD' AND WORK_MODE!='CBC_NOPAD'）;
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/V9zimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/V9zimage.png)

##### <span style="color: rgb(224, 62, 45);">**测评项：b）应采用密码技术保证重要数据在存储过程中的保密性，包括但不限于鉴别数据、重要业务数据和重要个人信息等。**</span>

<p class="callout warning">数据库创建时支持定义 **ENCRYPT\_NAME** 进行全库加密，但未定义则**不加密**。</p>

```
select SF_GET_ENCRYPT_NAME();
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/N1bimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/N1bimage.png)

> 参考文档：[登录用户名密码增强加密 | 达梦技术文档](https://eco.dameng.com/document/dm/zh-cn/pm/user-name-password.html)

<p class="callout info">当全盘加密未开启时，达梦数据库支持使用**公私钥**对称加密对鉴别数据进行保存。相关公私钥保存路径查阅 **dm\_svc.conf** 中 **LOGIN\_CERTIFICATE** 的配置路径（通常在 SYSTEM\_PATH ），常见名称有 **dm\_login.prikey** 等。</p>

# 数据备份恢复

<span style="color: rgb(224, 62, 45);">**测评项：a）应提供重要数据的本地数据备份与恢复功能；**</span>

通过访谈管理员数据备份策略以及核查是否备份到指定的存储介质中。

<span style="color: rgb(224, 62, 45);">**测评项：b）应提供异地实时备份功能，利用通信网络将重要数据实时备份至备份场地；**</span>

通过访谈管理员数据备份策略是否存在异地备份。

<span style="color: rgb(224, 62, 45);">**测评项：c）应提供重要数据处理系统的热冗余，保证系统的高可用性。**</span>

访谈管理员数据库所在服务器服务器采用热冗余方式部署，保障系统的可用性。

# 剩余信息保护

<span style="color: rgb(224, 62, 45);">**测评项：a）应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除；**</span>

用户注销后重新登录，会重新调用接口，用户的鉴别信息会重新从数据库中提取，保证了鉴别信息所在存储空间被释放或重新分配前得到完全清除。

<span style="color: rgb(224, 62, 45);">**测评项：b）应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。**</span>

用户注销后重新登录，会重新调用接口，用户的鉴别信息会重新从数据库中提取，保证了敏感数据所在存储空间被释放或重新分配前得到完全清除。

# 核查与访谈

核查命令：

```mysql
-- 核查用户列表确认用户身份标识是否具有唯一性；
SELECT USERNAME FROM DBA_USERS;
-- 核查用户配置信息或测试验证是否不存在空口令用户；
SELECT USERNAME, PASSWORD FROM DBA_USERS;
-- 核查用户鉴别信息是否具有复杂度要求并定期更换；
SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY';
-- 核查是否配晋并启用了登录失败处理功能；
-- subtype$参考实际环境
SELECT 
    so.NAME AS "达梦数据库用户名",--列名都需要查表，so 是 SYSOBJECTS 表的别名（通过 JOIN SYSOBJECTS so 指定）。
    su.FAILED_NUM AS "失败次数限制",--su 是 SYSUSERS 表的别名（通过 FROM SYSUSERS su 指定）。
    su.FAILED_ATTEMPS AS "失败尝试次数",
    su.LOCK_TIME AS "锁定时间（min）"
FROM SYSUSERS su
JOIN SYSOBJECTS so ON su.ID = so.ID
WHERE so.SUBTYPE$ = 'USER';
-- 核查是否配置并启用了登录连接超时及自动退出功能；
SELECT PROFILE, RESOURCE_NAME, LIMIT 
FROM DBA_PROFILES 
WHERE RESOURCE_NAME IN ('CONNECT_TIME', 'CONNECT_IDLE_TIME');
-- 查看所有用户
SELECT USERNAME FROM DBA_USERS;
-- 查看系统/对象权限（所有用户）
SELECT * FROM DBA_SYS_PRIVS ORDER BY GRANTEE;
-- 查看系统/对象权限（单个用户）
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'SYSDBA';
-- 使用数据库数据库审计员查询审计开关当前的值
SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';
-- 开启ENABLE_AUDIT以及针对语句级查询后查看日志记录；
select * from V$AUDITRECORDS；
-- 查询审计记录是否进行保护，定期备份
SELECT * FROM V$PARAMETER WHERE NAME = 'AUDIT_FILE_FULL_MODE';
-- 查看所有账户的访问规则
Select A.allow_addr,A.not_allow_addr,A.allow_dt,A.not_allow_dt,B.USERNAME from SYSUSERS A ,DBA_USERS B WHERE A.ID=B.USER_ID;
-- 系统管理员可通过查询 V$PARAMETER 动态视图查询 ENABLE_ENCRYPT 的当前值
SELECT * FROM V$PARAMETER WHERE NAME='ENABLE_ENCRYPT';
-- 用户可通过 V$PARAMETER 动态视图查询 COMM_ENCRYPT_NAME 的当前值
SELECT * FROM V$PARAMETER WHERE NAME='COMM_ENCRYPT_NAME';
-- 查看是否指定全库加密
select SF_GET_ENCRYPT_NAME();
-- 查看表空间透明加密（与全库加密冲突，二者只能选择其一）
SELECT TABLESPACE_NAME, ENCRYPTED FROM DBA_TABLESPACES;
-- 查看表列透明加密
SELECT * FROM DBA_ENCRYPTED_COLUMNS;
```

访谈内容：

# MongoDB数据库

# 身份鉴别

<span style="color: rgb(224, 62, 45);">**测评项：a）应对登录的用户进行身份标识和鉴别，身份标识具有唯一性，身份鉴别信息具有复杂度要求并定期更换；**</span>

1\) 访谈数据库管理员系统用户是否已设置密码，并查看登录过程中系统账户是否使用了密码进行验证登录，

（方法 1）Windows系统中查看 **<span style="color: rgb(35, 111, 161);">mongod.cfg </span>**文件中 security.authorization 是否为 enabled，若无则需要配置；

[![5902e6cff7cfcf74651bdf5e1320db8.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/5902e6cff7cfcf74651bdf5e1320db8.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/5902e6cff7cfcf74651bdf5e1320db8.png)

  
（方法 2）Linux系统中则通过命令查看：cat /etc/**<span style="color: rgb(35, 111, 161);">mongod.conf</span>** | grep "Auth=" 如果有返回行说明安全，否则需要进行修复

2\) 确保 MongoDB 本地用户也不能绕过身份验证，查询是否含有配置项 cat /etc/mongod.conf | grep "enableLocalhostAuthBypass" 如果没有返回行说明安全，否则需要进行修复

3\) 确保 MongoDB 身份验证在集群环境下正常使用，集群环境中身份验证依赖于密钥。如果不使用密钥，在集群的环境中会出现绕过身份验证，非授权用户登录到 MongoDB.  
查询是否含有配置项 cat /etc/mongod.conf | grep "keyFile=" 如果有返回行说明安全，否则需要进行修复

访谈数据库管理员是否启用口令复杂度配置，Linux系统检查配置命令如下：

```json
#!/bin/bash

# 1. 访谈数据库管理员是否启用口令复杂度配置:  

# 查看MongoDB的主配置文件，获取当前的配置设置  
cat /etc/mongod.conf  

# 检查配置文件中是否启用了安全授权（security.authorization）  
cat /etc/mongod.conf | grep security.authorization  

# 查找配置文件中关于认证模式（Auth=）的设置  
cat /etc/mongod.conf | grep "Auth="  

# 检查是否允许本地访问绕过身份验证（enableLocalhostAuthBypass）的设置  
cat /etc/mongod.conf | grep "enableLocalhostAuthBypass"  

# 查看配置文件中关于密钥文件（keyFile）的设置  
cat /etc/mongod.conf | grep "keyFile="  
```

<span style="color: rgb(224, 62, 45);">**测评项：b）应具有登录失败处理功能，应配置并启用结束会话、限制非法登录次数和当登录连 接超时自动退出等相关措施。**</span>

1)查看是否启用**<span style="color: rgb(35, 111, 161);">登录失败限制</span>**策略 ;

**<span style="color: rgb(35, 111, 161);">MongoDB 默认不直接提供登录失败限制 / 锁定功能</span>**，需通过以下方式实现：

**<span style="color: rgb(35, 111, 161);">Windows系统：</span>**

（方法1）检查MongoDB配置文件

```json
 Get-Content "C:\Program Files\MongoDB\Server\版本号\bin\mongod.cfg" | Select-String -Pattern "retryFailedAuthenticationAttempts"
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/iatimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/iatimage.png)

若配置文件中完全没有 retryFailedAuthenticationAttempts 字段，命令会静默返回空结果（不报错）。

原因：**<span style="color: rgb(35, 111, 161);">MongoDB 默认不启用登录失败限制策略</span>**，或使用了其他方式实现（如系统防火墙）。

若 MongoDB 已启用登录失败限制策略（即配置了 retryFailedAuthenticationAttempts 参数），这段 PowerShell 命令会返回配置文件中包含该参数的行。例如：

示例输出：

```json
# 假设配置文件中有如下配置：
security:
  authorization: enabled
  retryFailedAuthenticationAttempts: 5  # 限制 5 次失败尝试

# 命令执行结果：
retryFailedAuthenticationAttempts: 5
```

参数含义：retryFailedAuthenticationAttempts: 5 表示允许 5 次失败的认证尝试，超过后会临时锁定账户（需<span style="color: rgb(35, 111, 161);"> **MongoDB 5.0+**</span> 版本支持）。

（方法2）检查Windows防火墙规则

```json
# 查看是否有针对 MongoDB 端口的失败连接限制规则
Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*MongoDB*" -or $_.LocalPort -eq 27017} | Format-Table DisplayName,Direction,Action,Enabled
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/mWoimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/mWoimage.png)

若无显示，则表明系统未配置与 MongoDB 端口相关的防火墙规则；

若返回规则列表，需进一步检查是否包含失败连接限制条件（如使用高级安全防火墙自定义规则）。

示例输出（有规则时）：

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/sgqimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/sgqimage.png)

输出字段说明  
DisplayName：防火墙规则的显示名称（如管理员自定义的规则名称）。  
Direction：规则方向（Inbound 入站 / Outbound 出站）。  
Action：规则动作（Allow 允许 / Block 阻止）。  
Enabled：规则是否启用（True 启用 / False 禁用）。

<span style="color: rgb(35, 111, 161);">**Linux系统：**</span>

```json
#（1）检查 MongoDB 自身配置（适用于 MongoDB 5.0+）
# 检查是否配置了 retryFailedAuthenticationAttempts 参数（需在 mongod.conf 中配置）
cat /etc/mongod.conf | grep -i "retryFailedAuthenticationAttempts"
#若返回类似 retryFailedAuthenticationAttempts: 5，表示启用了失败重试限制（示例为 5 次）。

#（2）或者检查系统级防火墙规则（如 iptables）
# 查看是否有针对 MongoDB 端口（默认 27017）的失败连接限制规则
iptables -L -n | grep 27017
#若返回类似 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:27017 state INVALID,NEW recent: SET name: DEFAULT side: source，表示通过防火墙限制了失败连接。

```

2)查看是否启用登录失败锁定策略 ;

<span style="color: rgb(35, 111, 161);">**MongoDB 默认不提供会话超时自动退出功能**</span>，需通过以下方式实现：

（方法 1）：检查客户端连接超时配置

javascript  
// 在 MongoDB Shell 中执行，查看当前会话的 idleSessionTimeoutMinutes 参数  
db.adminCommand({ getParameter: 1, idleSessionTimeoutMinutes: 1 })

  
若返回 { "idleSessionTimeoutMinutes": 30, ok: 1 }，表示会话空闲 30 分钟后自动超时（需 MongoDB 4.4+）。

（方法 2）：检查 MongoDB 配置文件

bash  
\# Linux 系统  
cat /etc/mongod.conf | grep -i "idleSessionTimeoutMinutes"

\# Windows 系统  
Get-Content "C:\\Program Files\\MongoDB\\Server\\{版本号}\\bin\\mongod.cfg" | Select-String -Pattern "idleSessionTimeoutMinutes"

若返回类似配置项，说明已启用会话超时策略。

  
3)查看是否启用登录超时退出策略;