# 12-TiDB测评命令

> TiDB测评取证命令单：mysql 客户端连接 4000 端口与 tidb_version() 基础信息核查，validate_password.* 复杂度与账户级登录锁定身份鉴别核查，SHOW GRANTS 与 mysql.role_edges 访问控制核查，tidb_general_log、慢查询日志与 CLUSTER_LOG 安全审计核查，require_secure_transport 传输加密与 TiKV 静态加密数据保密性核查，tiup cluster display 多副本与 br log status 备份恢复核查，附版本支持策略、与 MySQL 参数差异及现场取证注意事项。

---

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

---

> TiDB数据库三级等级保护现场核查命令脚本（统一编号版）
>
> 定位：三级等保现场测评取证命令单，按功能小节组织核查命令、预期现象与判定要点。
> 适用范围：TiDB v7.x/v8.x 自建集群（TiUP 部署为主），经 MySQL 协议登录核查；TiDB 与 MySQL 的安全参数体系差异较大，严禁照搬 MySQL 口径，云上能力差异见「主流版本差异说明」。

## 基础信息

```bash
# TiDB 兼容 MySQL 协议，用 mysql 客户端登录；默认 SQL 端口 4000（非 3306）
mysql -h192.168.10.21 -P 4000 -uroot -p -A     # 登录 TiDB（客户端来源、账号记录入底稿）
tiup cluster list                              # TIUP 部署工具：列出本中控机管理的集群（只读）
tiup cluster display <集群名>                   # 展示各节点组件、端口、版本与运行状态（只读）
tiup cluster display <集群名> --dashboard      # 查询 TiDB Dashboard 实际服务地址（经 PD Client 端口提供）
```

```sql
select version();          -- MySQL 兼容格式版本号，形如 8.0.11-TiDB-v<真实版本>（官方示例：TiDB v7.5.1 将自身标识为 MySQL 8.0.11），真实版本看 -TiDB-v 之后的串
select tidb_version()\G    -- TiDB 真实版本与构建信息：Release Version / Edition / Git Commit Hash / Store 等
select user(), current_user();   -- 当前登录用户与生效账户
show databases;            -- 数据库列表
```

- **对应控制点**：无对应条款（测评准备项：确认测评对象、版本与部署形态，据此选定后续核查命令）。
- **判定要点**：仅记录事实，不下符合性结论；先确认 TiDB 真实版本（v7.x/v8.x 具体 LTS 小版本）与部署形态（单 TiDB/TiUP 多节点拓扑、TiKV 副本数、是否含 TiFlash），并以 `tiup cluster display` 输出固定组件清单（差异见「重点差异」）。
- **取证要求**：`version()`、`tidb_version()`、`tiup cluster list/display` 查询截图，登录账号与来源记录，部署形态（拓扑图、组件清单：TiDB/PD/TiKV/TiFlash/PD 监控）说明。
- **备注**：`select version()` 返回以 `8.0.11-TiDB-v` 开头（旧版本存在 `5.7.25-TiDB-v` 前缀）是为兼容 MySQL 协议而伪造的版本串，不得据此判定对象为 MySQL，真实版本一律以 `-TiDB-v` 之后的串为准，并与 `tidb_version()`、`tiup cluster display` 的 Cluster version 互证。TiDB 为分布式数据库，操作系统级控制点（最小安装、恶意代码防范等）由宿主服务器测评覆盖，本分册不重复取证。
- **预期证据**：版本查询结果截图、集群拓扑截图、部署架构图或 tiup 集群清单截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="k">version</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">-----------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">version</span><span class="p">()</span><span class="w">             </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">-----------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="mi">8</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">11</span><span class="o">-</span><span class="n">TiDB</span><span class="o">-</span><span class="n">v8</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="mi">1</span><span class="w">    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">-----------------------+
</span></span></span><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">tidb_version</span><span class="p">()</span><span class="err">\</span><span class="k">G</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">***************************</span><span class="w"> </span><span class="mi">1</span><span class="p">.</span><span class="w"> </span><span class="k">row</span><span class="w"> </span><span class="o">***************************</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">TIDB_VERSION</span><span class="p">():</span><span class="w"> </span><span class="n">Release</span><span class="w"> </span><span class="k">Version</span><span class="p">:</span><span class="w"> </span><span class="n">v8</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="mi">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Edition</span><span class="p">:</span><span class="w"> </span><span class="n">Community</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Git</span><span class="w"> </span><span class="k">Commit</span><span class="w"> </span><span class="n">Hash</span><span class="p">:</span><span class="w"> </span><span class="mi">7</span><span class="n">d16cc79e81bbf573124df3fd9351c26963f3e70</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Git</span><span class="w"> </span><span class="n">Branch</span><span class="p">:</span><span class="w"> </span><span class="n">heads</span><span class="o">/</span><span class="n">refs</span><span class="o">/</span><span class="n">tags</span><span class="o">/</span><span class="n">v8</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="mi">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">UTC</span><span class="w"> </span><span class="n">Build</span><span class="w"> </span><span class="n">Time</span><span class="p">:</span><span class="w"> </span><span class="mi">2025</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">08</span><span class="w"> </span><span class="mi">03</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">02</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">GoVersion</span><span class="p">:</span><span class="w"> </span><span class="n">go1</span><span class="p">.</span><span class="mi">23</span><span class="p">.</span><span class="mi">4</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Race</span><span class="w"> </span><span class="n">Enabled</span><span class="p">:</span><span class="w"> </span><span class="k">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">Check</span><span class="w"> </span><span class="k">Table</span><span class="w"> </span><span class="k">Before</span><span class="w"> </span><span class="k">Drop</span><span class="p">:</span><span class="w"> </span><span class="k">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Store</span><span class="p">:</span><span class="w"> </span><span class="n">tikv</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 身份鉴别

- **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别（a 标识唯一/复杂度/定期更换，b 登录失败处理，c 远程管理防窃听，d 组合鉴别）。
- **判定要点**：TiDB 自 v6.5.0 起内置密码管理框架，但 `validate_password.enable` 默认 OFF、`default_password_lifetime` 默认 0（永不过期），未配置且无补偿判 a) 部分符合；登录失败锁定为**账户级**属性（FAILED_LOGIN_ATTEMPTS 与 PASSWORD_LOCK_TIME 均不为 0 才生效，逐账户核对），全部账户未配置且无堡垒机等补偿判 b) 部分符合；`require_secure_transport` 默认 OFF、TLS 未启用且无密码技术补偿判 c) 不符合；TiDB 不支持多因素身份验证（官方安全差异文档口径），未实现双因素判 d) 不符合。新部署集群 root 默认无口令（官方文档口径），现场须核实已设置强口令。
- **取证要求**：密码复杂度与有效期变量查询截图、账户清单及各账户锁定策略截图、SSL/TLS 配置截图、双因素认证截图、账号管理制度。

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


**高风险提示**：root 账户保留默认空口令/弱口令（新部署集群 root 默认无口令，且该口令同时可无验证登录 TiDB Dashboard）、密码复杂度与有效期保持默认关闭且无外围补偿，均属高风险情形。对应判定详见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


### A. 身份标识唯一、口令复杂度、定期更换

```sql
select user, host, plugin from mysql.user order by user, host;   -- 账户清单与认证插件（字段以现场版本实测为准），核查账户唯一性与共享账户
show variables like 'validate_password%';   -- TiDB 内置密码复杂度变量（v6.5.0 起，点分形式 validate_password.*）：enable 默认 OFF、length 默认 8、policy 默认 MEDIUM
show variables like 'default_password_lifetime';   -- 口令自动过期（天），默认 0=永不过期；配置后过期须重置口令方可继续登录
show variables like 'password_history';            -- 密码重用：不得与最近 N 次重复，默认 0=不限制
show variables like 'password_reuse_interval';     -- 密码重用：N 天内不得重复，默认 0=不限制
```

- **备注**：validate_password.* 为 TiDB **内置系统变量**（点分形式），无需安装插件（区别于 MySQL 5.7 的 validate_password 插件与 8.0 的组件），开箱默认全部不做复杂度校验（enable=OFF），policy 默认 MEDIUM 但仅在 enable=ON 后生效。口令过期、密码重用均为 v6.5.0 起的账户级/全局级能力，默认关闭。未启用复杂度校验时应核查是否由堡垒机、统一身份认证或口令管理制度补偿。`SET GLOBAL validate_password.enable`、`SET GLOBAL default_password_lifetime` 属变更操作，现场只记录不执行。
- **预期证据**：账户列表截图、validate_password.* 与 default_password_lifetime 截图、账号管理制度或账号台账。
- **整改对照（由 DBA 执行，属变更操作）**：`SET GLOBAL validate_password.enable = ON;`、`SET GLOBAL validate_password.length = 8;`、`SET GLOBAL default_password_lifetime = 90;`，随后对存量账户重设口令使其接受复杂度校验。此类语句会改变全部新设口令的校验行为，须走变更审批并在业务低峰执行。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">variables</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;validate_password%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------------------+--------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w">                        </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w">  </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------------------+--------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="n">check_user_name</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="k">ON</span><span class="w">     </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="k">dictionary</span><span class="w">         </span><span class="o">|</span><span class="w">        </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="n">enable</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="k">ON</span><span class="w">     </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="k">length</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="mi">8</span><span class="w">      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="n">mixed_case_count</span><span class="w">   </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w">      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="n">number_count</span><span class="w">       </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w">      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="n">policy</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">MEDIUM</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">validate_password</span><span class="p">.</span><span class="n">special_char_count</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w">      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------------------+--------+
</span></span></span><span class="line"><span class="cl"><span class="mi">8</span><span class="w"> </span><span class="k">rows</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="k">set</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">00</span><span class="w"> </span><span class="n">sec</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">（</span><span class="n">enable</span><span class="w"> </span><span class="err">默认</span><span class="w"> </span><span class="k">OFF</span><span class="err">，示例中</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="err">为现场已配置值；字段清单以现场版本实测为准）</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">variables</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;default_password_lifetime&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">default_password_lifetime</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">90</span><span class="w">    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="err">（默认值为</span><span class="w"> </span><span class="mi">0</span><span class="o">=</span><span class="err">永不过期，示例中</span><span class="w"> </span><span class="mi">90</span><span class="w"> </span><span class="err">为现场已配置值）</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 登录失败处理、会话超时退出

```sql
select user, host, password_expired, account_locked from mysql.user;   -- 口令过期与账户锁定状态（含失败锁定）；字段以现场版本实测为准
show create user 'appuser'@'%';       -- 抽查账户锁定策略语句回显（只读）：关注 FAILED_LOGIN_ATTEMPTS N 与 PASSWORD_LOCK_TIME N|UNBOUNDED 子句
show variables like 'wait_timeout';           -- 非交互连接空闲超时（秒），默认 28800（8 小时，v5.4 起）
show variables like 'interactive_timeout';    -- 交互连接空闲超时（秒），会话建立时按客户端类型选用其一
show variables like 'max_execution_time';     -- 语句最长执行时间（毫秒），默认 0=不限制；属执行超时，不属空闲退出口径
```

- **备注**：TiDB 不提供 MySQL 的 connection_control 插件变量，登录失败处理由**账户级** FAILED_LOGIN_ATTEMPTS（连续失败 N 次，取值 0–32767）与 PASSWORD_LOCK_TIME（锁定 N 天，取值 0–32767 或 UNBOUNDED 需手动解锁）实现，v6.5.0 起提供，仅当两者均不为 0 时才生效——判定 b) 时应逐账户核对 `SHOW CREATE USER` 回显，未配置的账户不具失败锁定能力。锁定状态可查 mysql.user（account_locked 列）；锁定/解锁与策略修改属变更操作，现场只记录不执行。wait_timeout 默认 28800（8 小时），现场应核查是否已调小；max_execution_time 为语句执行超时，勿混作空闲退出口径。
- **预期证据**：各账户锁定策略截图、口令过期状态截图、会话超时变量截图、堡垒机/运维平台超时与锁定策略截图、访谈记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="k">create</span><span class="w"> </span><span class="k">user</span><span class="w"> </span><span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">----------------------------------------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">USER</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">appuser</span><span class="o">@%</span><span class="w">                                                                    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">----------------------------------------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">USER</span><span class="w"> </span><span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="w"> </span><span class="n">IDENTIFIED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="s1">&#39;****&#39;</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="n">FAILED_LOGIN_ATTEMPTS</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">PASSWORD_LOCK_TIME</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">----------------------------------------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="err">（官方示例语法：</span><span class="k">CREATE</span><span class="w"> </span><span class="k">USER</span><span class="w"> </span><span class="s1">&#39;test&#39;</span><span class="o">@</span><span class="s1">&#39;localhost&#39;</span><span class="w"> </span><span class="n">FAILED_LOGIN_ATTEMPTS</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">PASSWORD_LOCK_TIME</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="err">即失败</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="err">次锁定</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="err">天）</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">variables</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;wait_timeout&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">wait_timeout</span><span class="w">  </span><span class="o">|</span><span class="w"> </span><span class="mi">600</span><span class="w">   </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="err">（默认</span><span class="w"> </span><span class="mi">28800</span><span class="err">，示例中</span><span class="w"> </span><span class="mi">600</span><span class="w"> </span><span class="err">为现场已配置值）</span><span class="w">
</span></span></span></code></pre></div>
</details>



### C. 远程管理传输保密

```sql
show variables like 'require_secure_transport';   -- 要求全部连接使用加密连接；v6.1.0 起引入，默认 OFF
show status like '%Ssl%';                          -- Ssl_cipher 非空即当前会话已加密（mysql 客户端亦可用 \s / STATUS 查看）
show config where type = 'tidb' and name like '%ssl%';   -- 服务端 TLS 配置项（配置文件 [security]）：ssl-cert/ssl-key 必配、ssl-ca 可选
```

```bash
# 客户端侧取证：--ssl-mode 为 mysql 客户端选项（现场以实际客户端为准）
mysql -h192.168.10.21 -P 4000 -uroot -p --ssl-mode=VERIFY_CA --ssl-ca=/data/ssl/ca.pem
```

- **备注**：TiDB 支持 TLSv1.2 与 TLSv1.3；启动时至少配置 security.ssl-cert 与 security.ssl-key 即开启服务端 TLS（ssl-ca 配置后可校验客户端证书，v5.2.0 起还支持 auto-tls 自动生成证书，配置文件可经 tls-version 限定最低 TLS 版本）。仅“支持 TLS”不等于“已强制使用”：需结合 require_secure_transport（默认 OFF）与账户级 REQUIRE SSL / REQUIRE X509 判定，配置了证书鉴权的账户隐式要求加密连接。取证时应以加密方式重连后截取 Ssl_cipher（其只反映当前会话）。ssl-cert/ssl-key 为**配置项**，用 SHOW CONFIG 查询，勿用 SHOW VARIABLES（见「重点差异」A）。
- **预期证据**：require_secure_transport 与 SHOW CONFIG 的 ssl 配置截图、当前连接 Ssl_cipher 截图、证书文件截图、堡垒机/远程管理链路说明。
- **高风险提示**：三级系统远程管理时鉴别信息明文传输（未启用 TLS 且无其他密码技术补偿）属高风险情形，见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">variables</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;require_secure_transport&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w">            </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">require_secure_transport</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">ON</span><span class="w">    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">status</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;%Ssl%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+--------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w">              </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+--------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Ssl_cipher</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="n">TLS_AES_128_GCM_SHA256</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+--------------------+
</span></span></span><span class="line"><span class="cl"><span class="err">（其余行以现场输出为准）</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">config</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;tidb&#39;</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;%ssl%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+-------------------+-----------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">Type</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Instance</span><span class="w">           </span><span class="o">|</span><span class="w"> </span><span class="n">Name</span><span class="w">              </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w">           </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+-------------------+-----------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">security</span><span class="p">.</span><span class="n">ssl</span><span class="o">-</span><span class="n">ca</span><span class="w">   </span><span class="o">|</span><span class="w"> </span><span class="o">/</span><span class="k">data</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">ca</span><span class="p">.</span><span class="n">pem</span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">security</span><span class="p">.</span><span class="n">ssl</span><span class="o">-</span><span class="n">cert</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">/</span><span class="k">data</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">tidb</span><span class="p">.</span><span class="n">pem</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">security</span><span class="p">.</span><span class="n">ssl</span><span class="o">-</span><span class="k">key</span><span class="w">  </span><span class="o">|</span><span class="w"> </span><span class="o">/</span><span class="k">data</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">tidb</span><span class="p">.</span><span class="k">key</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+-------------------+-----------------+
</span></span></span></code></pre></div>
</details>



### D. 组合鉴别

```sql
select user, host, plugin from mysql.user;   -- 认证插件口径：默认 mysql_native_password；支持 caching_sha2_password（v5.2.0 起）、tidb_sm3_password（v6.3.0 起）、tidb_auth_token（v6.4.0 起）、LDAP 类（v7.1.0 起）、TLS 证书认证
show grants for 'appuser'@'%';               -- 抽查账户是否配置 REQUIRE X509（证书双向认证可作第二鉴别要素的支撑证据）
```

- **备注**：TiDB 原生不支持多因素身份验证（官方与 MySQL 安全特性差异文档口径），双因素通常由堡垒机、统一身份认证、MFA 平台实现，应在记录中注明，其中一种鉴别技术须基于密码技术；TLS 客户端证书双向认证（REQUIRE X509）与 JWT 类认证（tidb_auth_token）可作为第二鉴别要素的支撑证据，以现场版本文档核实后取证。
- **预期证据**：双因素登录界面截图、堡垒机认证策略截图、统一认证平台策略截图、访谈记录。


## 访问控制

- **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制（a 分配账户权限，b 默认账户，c 多余/过期账户，d 最小权限与权限分离，e 授权策略，f 授权粒度，g 安全标记）。
- **判定要点**：TiDB 无安全标记能力（g 一般判不符合或由上位措施说明）；权限粒度为全局/库/表级（**不支持列级权限**，官方安全差异文档口径），动态权限自 v5.1 起、角色自 v3.0 起（类 MySQL 8.0 RBAC）；重点查 `host='%'` 宽来源账户、GRANT OPTION 转授、多人共用 root、TiDB Dashboard 账户与 root 同源问题。
- **取证要求**：mysql.user 查询截图、SHOW GRANTS 输出、授权表明细截图、角色关系截图、账号权限台账与审批记录。

### A. 账户、角色、权限分配

```sql
select user, host from mysql.user order by user, host;        -- 账户与允许登录来源主机
show grants for 'root'@'%';                                   -- 默认账户权限（用户与 host 写全，host 省略时默认 '%'）
show grants for 'appuser'@'192.168.10.%';                     -- 抽查业务账户权限（以现场实际账户替换）
select * from mysql.db\G                                      -- 库级权限明细（兼容表）
select * from mysql.tables_priv\G                             -- 表级权限明细（兼容表）
```

- **备注**：TiDB 权限体系与 MySQL 语法兼容，全局权限看 mysql.user、库级看 mysql.db、表级看 mysql.tables_priv，均可由 `SHOW GRANTS` 逐账户印证；角色自 TiDB v3.0 起、动态权限自 v5.1 起支持。重点核查 ALL PRIVILEGES、GRANT OPTION、DROP/PROCESS 类高危权限与 `host='%'` 的宽来源授权。TiDB 不支持列级权限，也不支持 max_questions/max_updated 等账户资源限制属性（官方安全差异文档口径），相关核查不得照抄 MySQL 的 columns_priv 口径。
- **预期证据**：账户与权限截图、SHOW GRANTS 输出、角色分工说明、账号权限审批记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">grants</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="s1">&#39;root&#39;</span><span class="o">@</span><span class="s1">&#39;%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Grants</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">root</span><span class="o">@%</span><span class="w">                                            </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">GRANT</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="k">PRIVILEGES</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="o">*</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">`</span><span class="n">root</span><span class="o">`@`%`</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="k">GRANT</span><span class="w"> </span><span class="k">OPTION</span><span class="w">  </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">--------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">grants</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="s1">&#39;appuser&#39;</span><span class="o">@</span><span class="s1">&#39;192.168.10.%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------------------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Grants</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">appuser</span><span class="o">@</span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="o">%</span><span class="w">                                        </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------------------------------------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">GRANT</span><span class="w"> </span><span class="k">SELECT</span><span class="p">,</span><span class="w"> </span><span class="k">INSERT</span><span class="p">,</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="o">`</span><span class="n">appdb</span><span class="o">`</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">`</span><span class="n">appuser</span><span class="o">`@`</span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="o">%`</span><span class="w">  </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------------------------------------------------------------------------+
</span></span></span></code></pre></div>
</details>



### B. 默认账户、多余账户、来源地址限制

```sql
select user, host from mysql.user where host = '%';                  -- 限定来源为任意主机的账户清单，重点核实是否经网络层收紧
select user, host from mysql.user where user = '' or user is null;  -- 匿名账户排查（返回 Empty set 为预期）
select user, host, password_expired, account_locked from mysql.user; -- 过期/锁定/遗留账户排查
```

- **备注**：新部署 TiDB 集群默认仅 root 账户且**默认无口令**（官方 Dashboard 安全文档口径：默认部署下 root 无密码，TiDB Dashboard 亦无需密码验证），现场须核实已按制度设置强口令并收紧 host；root 仅作管理用途不应承载业务应用。删除多余账户（DROP USER）属变更操作，现场只记录不执行。TiDB 数据库层面无独立客户端 IP 白名单配置项，来源控制以 user@host 限定的同时，应结合主机/网络防火墙、安全组与 PD Client 端口（2379）的访问限制取证。
- **预期证据**：账户来源地址截图、多余/过期账户清理记录、账号台账、网络层访问控制策略截图。
- **高风险提示**：默认账户未改默认口令、空口令/弱口令或共享账户属高风险情形，见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="k">user</span><span class="p">,</span><span class="w"> </span><span class="k">host</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">mysql</span><span class="p">.</span><span class="k">user</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="k">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------+------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">user</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="k">host</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------+------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">root</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="o">%</span><span class="w">    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">appuser</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">%</span><span class="w">    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------+------+
</span></span></span><span class="line"><span class="cl"><span class="err">（</span><span class="k">host</span><span class="o">=</span><span class="s1">&#39;%&#39;</span><span class="w"> </span><span class="err">账户应在网络层或部署形态上说明等效来源控制）</span><span class="w">
</span></span></span></code></pre></div>
</details>



### C. 细粒度授权与最小权限

```sql
select * from mysql.role_edges;      -- 角色与用户的授权关系（RBAC，类似 MySQL 8.0）
show grants;                         -- 当前登录账户权限，与授权台账互证
show databases;                      -- 核对业务账户可见库范围与授权范围是否一致
```

- **备注**：TiDB 权限最细到表级（无列级权限），敏感字段的最小授权需在表级拆分或由应用层实现，现场应如实记录该能力边界；重点抽查重要业务库、重要表的授权是否最小化，是否存在超范围的全库授权；角色需经 SET ROLE/SET DEFAULT ROLE 启用后才对用户生效（mandatory_roles 可设强制角色），核查角色继承链是否清晰、是否存在过度授权。
- **预期证据**：库级/表级授权截图、角色关系截图、敏感表权限抽查记录、权限申请审批记录。


### D. 权限分离与管理员账户划分

- **备注**：TiDB 无 openGauss 式三权分立开关，管理员权限分离主要靠部署与制度实现：root 负责数据库管理、TiDB Dashboard 建议单独创建最小权限只读账户（其账号体系与 SQL 用户一致）、监控与运维平台账户单独管理。注意 PD Client 端口（2379）承载的 Dashboard 及 PD 内部特权接口不受 SQL 权限体系约束，官方要求用防火墙将 2379 限制在可信域内——该端口的管理面权限分离应一并取证。现场未实现技术性分离时，应核查是否以岗位分工、堡垒机会话授权等外围措施补偿并在记录中说明。
- **预期证据**：管理员账户清单与用途说明、Dashboard 专用账户截图、岗位分工文件、堡垒机授权策略截图、访谈记录。


## 安全审计

- **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计（启用审计并覆盖每个用户、记录要素、记录保护与定期备份、审计进程保护）。
- **判定要点**：TiDB 自建版**无内置完整审计日志功能**（官方审计日志能力目前见于 TiDB Cloud 云服务），可用的原生留痕为：tidb_general_log（全量 SQL 记录至运行日志，默认 OFF，属调试口径）、慢查询日志（默认记录 ≥300ms 语句）、tidb.log 运行日志与 tiup 侧运维命令历史。仅有慢日志/运行日志而无第三方数据库审计、日志外发集中存储等补偿判“部分符合”；无任何审计措施判“不符合”。
- **取证要求**：审计相关变量与配置截图、日志记录样例（时间/用户/来源/语句/结果）、日志目录与留存策略截图、第三方审计或日志平台截图。

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


**高风险提示**：数据库无任何安全审计措施（无第三方审计、无日志外发集中存储）属高风险情形。对应判定详见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


### A. 审计功能是否开启

```sql
show variables like 'tidb_general_log';        -- 全量 SQL 记录开关，默认 OFF：开启后所有 SQL 写入 TiDB 运行日志，属诊断能力，不宜长期开启
show variables like 'tidb_enable_slow_log';    -- 慢查询日志开关，默认 ON
show variables like 'tidb_slow_log_threshold'; -- 慢查询记录阈值（毫秒），默认 300
```

```bash
tiup cluster audit    # tiup 中控机侧：历史运维命令与执行日志（运维操作留痕，只读）
```

- **备注**：tidb_general_log 默认 OFF，开启会显著增大日志量并影响性能，不能作为常态审计方案；慢查询日志仅覆盖超过阈值的语句，非全量。等保口径的审计留存（不少于 6 个月）通常需以第三方数据库审计（旁路镜像）、堡垒机审计或日志外发平台补偿取证，现场应核查并截图。`SET GLOBAL tidb_general_log = ON` 属变更操作，现场只记录不执行。
- **预期证据**：审计变量截图、第三方数据库审计界面截图、日志平台采集任务截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">variables</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;tidb_general_log&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb_general_log</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">OFF</span><span class="w">   </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">variables</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;tidb_slow_log_threshold&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">-------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w">           </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">-------------------------+-------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb_slow_log_threshold</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">300</span><span class="w">   </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">-------------------------+-------+
</span></span></span></code></pre></div>
</details>



### B. 审计范围与审计对象

```sql
select * from information_schema.slow_query limit 10;              -- 本节点慢查询明细（解析 tidb-slow.log，字段以现场版本为准）
select time, user, host, db, query
  from information_schema.cluster_slow_query
 order by time desc limit 10;     -- 全集群慢查询：时间、用户、来源主机、库、SQL 文本（字段名以现场版本实测为准）
select * from information_schema.cluster_log
 where time >= '2026-09-02 00:00:00' and message like '%error%' limit 20;   -- 集群日志 SQL 化下推查询（降低日志检索影响，条件按现场调整）
```

- **备注**：慢查询与 CLUSTER_LOG 查询覆盖用户、来源、语句、时间等审计记录基本要素，可作为辅助取证，但均属性能诊断定位口径而非专用审计：慢日志只留超阈值语句，cluster_log 依赖运行日志滚动留存。核查登录失败、权限变更等安全事件时，应在日志平台按关键字（如 `Access denied`、`GRANT`、`CREATE USER`）检索并截图留痕。
- **预期证据**：慢查询/集群日志记录样例截图（含用户、来源、语句、结果）、审计覆盖范围说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">time</span><span class="p">,</span><span class="w"> </span><span class="k">user</span><span class="p">,</span><span class="w"> </span><span class="k">host</span><span class="p">,</span><span class="w"> </span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">information_schema</span><span class="p">.</span><span class="n">cluster_slow_query</span><span class="w"> </span><span class="k">limit</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------------+---------+---------------+-------+--------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">time</span><span class="w">                </span><span class="o">|</span><span class="w"> </span><span class="k">user</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="k">host</span><span class="w">          </span><span class="o">|</span><span class="w"> </span><span class="n">db</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="w">                                      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------------+---------+---------------+-------+--------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="mi">2026</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="w"> </span><span class="mi">22</span><span class="p">:</span><span class="mi">11</span><span class="p">:</span><span class="mi">03</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">appuser</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">30</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">appdb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_order</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">order_id</span><span class="o">=</span><span class="mi">10086</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="mi">2026</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="w"> </span><span class="mi">22</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">47</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">appuser</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">30</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">appdb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">t_order</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="p">...</span><span class="w">      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="mi">2026</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">02</span><span class="w"> </span><span class="mi">22</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">12</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">report</span><span class="w">  </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">31</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">appdb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="p">...</span><span class="w">                    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------------+---------+---------------+-------+--------------------------------------------+
</span></span></span><span class="line"><span class="cl"><span class="err">（列名与格式以现场版本实测为准，节选示意）</span><span class="w">
</span></span></span></code></pre></div>
</details>



### C. 审计日志保护与留存

```sql
show config where type = 'tidb' and name like 'log.file%';   -- log.file.max-size（单文件上限，默认 300MB）/max-days（默认 0=不清理）/max-backups（默认 0=全保留）
```

```bash
ls -lh <部署目录>/log/ | head -20    # 主机侧只读查看 tidb.log、tidb-slow.log 等日志文件与滚动切片
```

- **备注**：TiDB 运行日志位于部署目录 log/ 下（tidb.log 主运行日志、tidb-slow.log 慢查询日志），单文件默认超过 300MB 切片，max-days/max-backups 默认 0 即不做自动清理——留存周期依赖集中日志平台或备份策略，等保口径留存不少于 6 个月时应核查外发留存是否满足。日志文件权限、防篡改措施需在操作系统侧取证；日志中可能含敏感信息，官方在静态加密文档中建议配合日志脱敏（脱敏变量以现场版本文档为准）。
- **预期证据**：日志目录与文件权限截图、log.file.* 配置截图、集中日志平台留存策略截图、备份策略说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">config</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;tidb&#39;</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;log.file%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+--------------------+--------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">Type</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Instance</span><span class="w">           </span><span class="o">|</span><span class="w"> </span><span class="n">Name</span><span class="w">               </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w">  </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+--------------------+--------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">log</span><span class="p">.</span><span class="n">file</span><span class="p">.</span><span class="k">max</span><span class="o">-</span><span class="k">size</span><span class="w">  </span><span class="o">|</span><span class="w"> </span><span class="mi">300</span><span class="w">    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">log</span><span class="p">.</span><span class="n">file</span><span class="p">.</span><span class="k">max</span><span class="o">-</span><span class="n">days</span><span class="w">  </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w">      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">log</span><span class="p">.</span><span class="n">file</span><span class="p">.</span><span class="k">max</span><span class="o">-</span><span class="n">backups</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w">    </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+--------------------+--------+
</span></span></span><span class="line"><span class="cl"><span class="err">（默认值口径：</span><span class="k">max</span><span class="o">-</span><span class="k">size</span><span class="w"> </span><span class="mi">300</span><span class="n">MB</span><span class="err">、</span><span class="k">max</span><span class="o">-</span><span class="n">days</span><span class="w"> </span><span class="mi">0</span><span class="err">、</span><span class="k">max</span><span class="o">-</span><span class="n">backups</span><span class="w"> </span><span class="mi">0</span><span class="err">）</span><span class="w">
</span></span></span></code></pre></div>
</details>



### D. 审计失效告警

- **备注**：通常需通过监控平台、日志平台与 tiup 侧留痕证明：Grafana/TiDB Dashboard 监控告警策略覆盖日志服务与采集进程异常、集中日志平台对采集中断的告警、tiup cluster audit 可回溯运维操作历史。审计员独立性与告警核销流程以制度与访谈佐证。
- **预期证据**：监控告警规则与样例截图、日志平台采集任务截图、tiup cluster audit 输出截图、审计管理制度、访谈记录。


## 数据完整性

- **对应控制点**：GB/T 22239-2019 8.1.4.7 数据完整性（a 传输过程、b 存储过程）。
- **判定要点**：传输完整性以 TLS 证据为准（Ssl_cipher 非空、require_secure_transport=ON、组件间内部 TLS 配置）；存储完整性 TiDB 依托 Raft 多副本多数派写入实现强一致与自动校验，可作架构支撑证据，但管理措施（备份校验、变更控制、权限与审计）仍需综合判定，仅有数据库参数判“部分符合”。
- **取证要求**：TLS 配置与加密连接截图、多副本拓扑截图、备份校验记录、制度材料。

### A. 传输过程完整性

```sql
show variables like 'require_secure_transport';
show status like '%Ssl%';
```

- **备注**：使用 TLS 可作为传输完整性的重要证据，还应结合客户端连接方式、组件间内部 TLS（见数据保密性节 B 与「重点差异」D）与远程管理流程判断是否全链路生效。
- **预期证据**：TLS 参数截图、加密连接截图、网络传输加密说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">status</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;%Ssl%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+--------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Variable_name</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w">              </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+--------------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">Ssl_cipher</span><span class="w">    </span><span class="o">|</span><span class="w"> </span><span class="n">TLS_AES_128_GCM_SHA256</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">---------------+--------------------+
</span></span></span><span class="line"><span class="cl"><span class="err">（同身份鉴别节</span><span class="w"> </span><span class="k">C</span><span class="w"> </span><span class="err">小节输出）</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 存储过程完整性

```bash
tiup cluster display <集群名>    -- 各节点组件状态与拓扑：TiKV 多节点多副本分布为 Raft 多副本强一致的架构证据（只读）
```

- **备注**：重点说明鉴别数据（口令以哈希存储于 mysql.user，不可逆查明文）、重要配置数据（集群配置变更管理）、审计数据（日志目录权限与外发留存）是否具备防篡改或一致性保护措施；TiKV 三副本由 Raft 协议同步写入、多数派确认，可作为存储完整性的技术支撑，但仍需结合备份校验（备份集验证记录）、变更管理与制度说明综合判定。
- **预期证据**：集群拓扑与副本分布截图、配置变更管理制度、备份校验记录、技术说明。


## 数据保密性

- **对应控制点**：GB/T 22239-2019 8.1.4.8 数据保密性（a 传输过程、b 存储过程）。
- **判定要点**：传输保密性看 require_secure_transport 与服务端/客户端 TLS 配置（客户端—TiDB 链路）；组件间（TiDB/PD/TiKV/TiFlash 内部）链路需单独配置内部 TLS；存储保密性看 TiKV 静态加密（security.encryption.data-encryption-method，默认 plaintext=关闭）或磁盘/应用层加密，均无措施判“不符合”。
- **取证要求**：TLS 配置与加密连接截图、静态加密配置与主密钥管理说明、磁盘加密证明材料。

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


**高风险提示**：远程管理与重要业务连接明文传输（未启用 TLS 且无其他密码技术补偿）属高风险情形。对应判定详见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


### A. 传输过程保密性

```sql
show variables like 'require_secure_transport';    -- 默认 OFF，ON 表示拒绝非加密连接
show config where type = 'tidb' and name like '%ssl%';   -- 服务端 TLS 证书配置项
```

- **备注**：应证明数据库管理连接、重要业务连接在传输过程中采用密码技术保护；配合账户级 REQUIRE SSL/REQUIRE X509 与客户端加密重连取证。自 v5.2.0 起支持 auto-tls，生产环境建议使用受控 CA 签发证书并经 tls-version 限定 TLSv1.2 及以上。
- **预期证据**：TLS 配置截图、证书文件截图、客户端加密连接截图、远程运维链路说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">config</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;tidb&#39;</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;%ssl%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+-------------------+-----------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">Type</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Instance</span><span class="w">           </span><span class="o">|</span><span class="w"> </span><span class="n">Name</span><span class="w">              </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w">           </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+-------------------+-----------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">security</span><span class="p">.</span><span class="n">ssl</span><span class="o">-</span><span class="n">ca</span><span class="w">   </span><span class="o">|</span><span class="w"> </span><span class="o">/</span><span class="k">data</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">ca</span><span class="p">.</span><span class="n">pem</span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">security</span><span class="p">.</span><span class="n">ssl</span><span class="o">-</span><span class="n">cert</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">/</span><span class="k">data</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">tidb</span><span class="p">.</span><span class="n">pem</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tidb</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">21</span><span class="p">:</span><span class="mi">4000</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">security</span><span class="p">.</span><span class="n">ssl</span><span class="o">-</span><span class="k">key</span><span class="w">  </span><span class="o">|</span><span class="w"> </span><span class="o">/</span><span class="k">data</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">tidb</span><span class="p">.</span><span class="k">key</span><span class="w"> </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+--------------------+-------------------+-----------------+
</span></span></span><span class="line"><span class="cl"><span class="err">（同身份鉴别节</span><span class="w"> </span><span class="k">C</span><span class="w"> </span><span class="err">小节输出）</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 存储过程保密性

```sql
show config where type = 'tikv' and name like '%encryption%';   -- security.encryption.data-encryption-method：默认 plaintext=未开启；可取 aes128-ctr/aes192-ctr/aes256-ctr（sm4-ctr 自 v6.3.0）
```

- **备注**：TiKV 静态加密（TDE）默认关闭，开启需同时配置主密钥（KMS 或密钥文件，256 位），数据密钥由主密钥加密保护并定期轮换（默认每周），判定时应结合密钥管理制度取证；PD 静态加密为实验特性，以现场版本文档为准；运行日志不参与加密，官方建议配合日志脱敏。BR 备份到兼容 S3 的存储支持服务端加密（SSE）。未启用 TDE 时，以磁盘加密（LVM/云盘加密）或应用层加密补充判定。鉴别数据方面，口令以哈希存储（不可逆查明文），认证插件默认 mysql_native_password、支持 caching_sha2_password（v5.2.0 起）与 tidb_sm3_password（v6.3.0 起，SM3 国密），可结合插件口径记录。修改 encryption.data-encryption-method 需重启 TiKV，属变更操作，现场只记录不执行。
- **预期证据**：data-encryption-method 截图、主密钥与密钥管理说明、磁盘加密或应用层加密证明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="n">mysql</span><span class="o">&gt;</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">config</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;tikv&#39;</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;%encryption%&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+---------------------+--------------------------------------------+-------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="k">Type</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Instance</span><span class="w">            </span><span class="o">|</span><span class="w"> </span><span class="n">Name</span><span class="w">                                       </span><span class="o">|</span><span class="w"> </span><span class="n">Value</span><span class="w">       </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+---------------------+--------------------------------------------+-------------+
</span></span></span><span class="line"><span class="cl"><span class="o">|</span><span class="w"> </span><span class="n">tikv</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">24</span><span class="p">:</span><span class="mi">20160</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">security</span><span class="p">.</span><span class="n">encryption</span><span class="p">.</span><span class="k">data</span><span class="o">-</span><span class="n">encryption</span><span class="o">-</span><span class="k">method</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">aes256</span><span class="o">-</span><span class="n">ctr</span><span class="w">  </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">+</span><span class="c1">------+---------------------+--------------------------------------------+-------------+
</span></span></span><span class="line"><span class="cl"><span class="err">（默认值为</span><span class="w"> </span><span class="n">plaintext</span><span class="o">=</span><span class="err">未开启，示例中</span><span class="w"> </span><span class="n">aes256</span><span class="o">-</span><span class="n">ctr</span><span class="w"> </span><span class="err">为现场已配置值；列名以现场输出为准）</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 备份恢复

- **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复（a 本地备份与恢复，b 异地实时备份，c 热冗余）。
- **判定要点**：具备快照（全量）备份与日志备份的定期策略（备份集目录/对象存储有成功备份记录、br log status 显示日志备份任务 NORMAL）且经恢复演练验证判 a) 符合，无备份或从未演练判“不符合”；TiKV 多副本随事务实时同步，副本跨机房/跨地域分布（tiup cluster display 与网络拓扑互证）判 b)；多副本部署、故障切换有演练记录判 c) 符合。
- **取证要求**：备份策略与任务记录截图、备份集清单与 br log status 截图、恢复演练记录、集群拓扑与机房说明、高可用架构图。

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


**高风险提示**：重要数据无本地备份、有备份但从未验证恢复属高风险情形。对应判定详见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


### A. 本地数据备份与恢复

```bash
tiup br log status --pd http://192.168.10.23:2379    # 日志备份（PiTR 的前提）任务状态查询（只读）：任务存在且状态 NORMAL、checkpoint 持续推进
ls -lh /data/backup/                                  # 只读查看备份集目录（NFS 挂载或对象存储挂载点，路径以现场为准）
```

```bash
# 发起备份属变更类操作，现场不执行，仅记录能力口径（以现场版本官方文档为准）：
# tiup br backup full ...        —— 集群全量快照备份
# tiup br restore point ...      —— 恢复到指定时间点（PiTR，自 v6.2.0 起提供）
# tiup dumpling -h127.0.0.1 -P 4000 -uroot -p -B appdb -o /tmp/dump   —— 逻辑导出（ Dumpling ）
```

- **备注**：TiDB 备份恢复体系为 BR（快照/日志备份）、Dumpling（逻辑导出）、TiDB Lightning（导入），与 MySQL 的 mysqldump/binlog 生态不同，勿照抄 MySQL 口径；日志备份（PiTR 基础）自 v6.2.0 起提供。备份的定时调度通常由外部平台/定时任务承担，应以备份记录、备份集清单与恢复演练记录为主要证据；br log status 无任务或备份目录为空时，须重点访谈并核实实际备份手段。BR 备份到兼容 S3 的存储可启用服务端加密，可作为备份介质保密性证据。
- **预期证据**：br log status 截图、备份集清单截图、备份任务/调度平台截图、恢复演练记录。


<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">$ tiup br log status --pd http://192.168.10.23:2379
</span></span><span class="line"><span class="cl">● Log Backup Task
</span></span><span class="line"><span class="cl">  &gt; TASK: daily-log-backup
</span></span><span class="line"><span class="cl">  &gt; STATUS: NORMAL
</span></span><span class="line"><span class="cl">  &gt; START TIME: 2026-08-20 02:00:11
</span></span><span class="line"><span class="cl">  &gt; LAST CHECKPOINT: 2026-09-02 23:55:04
</span></span><span class="line"><span class="cl">（输出格式与字段以现场 BR 版本为准，节选示意）
</span></span></code></pre></div>
</details>



### B. 异地实时备份

```bash
tiup cluster display <集群名>    -- 节点分布与机房位置：结合网络拓扑说明 TiKV 副本是否跨机房/跨地域（只读）
```

- **备注**：TiKV 多副本（三副本常见）由 Raft 协议随事务实时同步，可作为异地实时备份/冗余的支撑证据，但仍需证明副本位于异地机房（tiup 拓扑、机房说明、网络拓扑图互证）；同城两副本+异地一副本为常见合规形态，两副本无异地时应以 BR 异地备份集补充判定。备库/容灾集群等形态以现场实际部署为准另行取证。
- **预期证据**：集群拓扑截图、异地机房说明、BR 异地备份集清单、网络拓扑图。


<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">$ tiup cluster display tidb-prod
</span></span><span class="line"><span class="cl">Cluster type:       tidb
</span></span><span class="line"><span class="cl">Cluster name:       tidb-prod
</span></span><span class="line"><span class="cl">Cluster version:    v8.5.1
</span></span><span class="line"><span class="cl">ID                   Role  Host            Ports        Status  Data Dir
</span></span><span class="line"><span class="cl">192.168.10.21:4000   tidb  192.168.10.21   4000/10080   Up      -
</span></span><span class="line"><span class="cl">192.168.10.23:2379   pd    192.168.10.23   2379/2380    Up|L    /data/deploy/data.pd
</span></span><span class="line"><span class="cl">192.168.10.24:20160  tikv  192.168.10.24   20160/20180  Up      /data/deploy/data.tikv
</span></span><span class="line"><span class="cl">192.168.11.24:20160  tikv  192.168.11.24   20160/20180  Up      /data/deploy/data.tikv
</span></span><span class="line"><span class="cl">（TiKV 节点分属不同网段/机房时，与机房说明互证副本异地分布）
</span></span></code></pre></div>
</details>



### C. 热冗余与高可用

```bash
tiup cluster display <集群名>    -- 各组件 Status 应为 Up；单 TiKV 节点无冗余、PD 单节点无高可用时应在记录中注明（只读）
```

- **备注**：重点确认是否具备热冗余（TiKV/PD 多节点多副本）、故障自动切换与恢复能力；TiDB 故障切换由 Raft/PD 调度自动完成，现场不宜在生产集群演示切换，应以故障切换演练记录、Grafana 监控与告警记录取证。
- **预期证据**：高可用架构图、tiup cluster display 状态截图、故障切换演练记录、监控告警截图。


## 剩余信息保护

- **对应控制点**：GB/T 22239-2019 8.1.4.10 剩余信息保护。
- **判定要点**：TiDB 无直接核查命令，依据介质/云盘释放清除策略与销毁记录判定；仅删账户/表而无日志、备份残留清理判“部分符合”。
- **取证要求**：介质清除与销毁制度文件、云平台磁盘回收策略截图、销毁记录。

### A. 鉴别信息所在存储空间释放前清除

- **备注**：DROP USER/重设口令仅作用于当前集群，磁盘块残留与备份集、日志中残留需结合介质清除制度、虚拟磁盘回收策略、云盘释放策略、销毁记录综合判定。

- **预期证据**：介质清除制度、云平台磁盘释放策略、存储回收说明、销毁记录。

### B. 敏感数据所在存储空间释放前清除

- **备注**：需结合磁盘加密、虚拟化回收策略、介质销毁记录判定敏感数据残留风险控制情况；分布式场景还应关注多副本（各 TiKV 节点）、备份集与日志切片中数据副本的同步清理。

- **预期证据**：磁盘加密截图、销毁记录、设备回收制度、存储平台策略截图。


## 个人信息保护

- **对应控制点**：GB/T 22239-2019 8.1.4.11 个人信息保护。
- **判定要点**：不存储个人信息判不适用（须访谈并留存边界说明）；涉及时核查敏感字段授权、脱敏、导出控制与审计留痕。
- **取证要求**：个人信息字段清单、字段级授权与审计截图、脱敏与分类分级材料。

### A. 个人信息访问控制与审计

- **备注**：若业务涉及个人信息，应抽查敏感表的授权（表级为 TiDB 最细粒度，SHOW GRANTS/mysql.tables_priv）、访问留痕（慢查询/CLUSTER_LOG 记录、第三方审计）与导出控制。

- **预期证据**：敏感表权限截图、导出审计截图、账号职责分工说明。

### B. 个人信息存储与传输保护

- **备注**：抽查脱敏、加密（TiKV 静态加密/磁盘加密/应用层加密）、专门审计、分类分级等保护措施，不宜仅凭数据库参数单独下结论。

- **预期证据**：脱敏规则截图、加密设计说明、分类分级文件、系统设计材料。


## 入侵防范

- **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范（a 最小安装，b 服务与端口，c 管理终端限制，e 漏洞发现与修补）；D 项对应 8.1.4.5 恶意代码防范。
- **判定要点**：TiDB 为分布式数据库软件，最小安装与恶意代码防范由宿主 OS 侧测评覆盖，本节按集群边界核查服务端口、来源限制与版本漏洞；`host='%'` 且无网络层限制判不符合，使用已停止维护版本且存在未修复高危漏洞判不符合并按高风险处理。
- **取证要求**：监听端口与组件清单截图、防火墙/堡垒机策略截图、漏洞扫描报告与补丁记录、EDR/防护软件界面截图。

### A. 访问来源限制/白名单

```bash
ss -lntp | grep -E 'tidb|pd|tikv'    # 或 netstat -lntp：核对各节点实际监听地址与端口（只读）
```

- **备注**：默认端口口径：TiDB 4000（SQL）/10080（状态上报 HTTP）；PD 2379（客户端，含 TiDB Dashboard）/2380（节点间）；TiKV 20160（通信）/20180（状态上报）。PD Client 端口 2379 上承载无需身份验证的内部特权接口，官方安全建议要求用防火墙将其限制在可信域内、禁止外部访问；10080 状态端口为 HTTP 口径，不应暴露至非授权网段。数据库层来源控制以 user@host 限定（见访问控制节），网络层访问控制由防火墙、安全组与部署边界实现，应逐一取证。
- **预期证据**：监听端口截图、user@host 截图、主机/网络防火墙策略、堡垒机访问策略截图。


<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">$ ss -lntp | grep -E &#39;tidb|pd|tikv&#39;
</span></span><span class="line"><span class="cl">LISTEN 0 128 *:4000  *:* users:((&#34;tidb-server&#34;,pid=1201,...))
</span></span><span class="line"><span class="cl">LISTEN 0 128 *:10080 *:* users:((&#34;tidb-server&#34;,pid=1201,...))
</span></span><span class="line"><span class="cl">LISTEN 0 128 *:2379  *:* users:((&#34;pd-server&#34;,pid=1301,...))
</span></span><span class="line"><span class="cl">LISTEN 0 128 *:20160 *:* users:((&#34;tikv-server&#34;,pid=1401,...))
</span></span></code></pre></div>
</details>



### B. 异常访问与爆破防护

- **备注**：结合账户级登录失败锁定（FAILED_LOGIN_ATTEMPTS/PASSWORD_LOCK_TIME）、会话超时（wait_timeout）、TiDB Dashboard 访问控制（经 PD Client 端口提供，官方建议防火墙限制或经开启 TLS 的反向代理仅暴露 /dashboard 路径）与堡垒机/防暴力破解策略，确认具备阻断或告警能力。

- **预期证据**：账户锁定策略截图、Dashboard 访问控制截图、堡垒机策略截图、告警样例、访谈记录。

### C. 漏洞扫描与补丁管理

- **备注**：确认数据库漏洞扫描周期、补丁评估与修复流程；版本选择对照官方支持政策——截至 2026-09：v5.4（扩展支持至 2026-02-15）与 v6.1（扩展支持至 2026-06-13）已停止支持，v6.5 处于扩展支持期（至 2026-12-29，仅关键安全补丁），v7.1 标准支持已止于 2026-05-31（扩展支持至 2027-05-31），v7.5 标准支持至 2026-12-01，v8.1 至 2027-05-24，v8.5 至 2027-12-19（扩展支持至 2028-12-19）；DMR（开发里程碑版本）不在官方支持范围。现场在用版本应为受支持版本，否则应在记录中注明并按漏洞风险跟踪。
- **预期证据**：漏洞扫描报告、补丁更新记录、变更单、版本支持政策页面或说明。

### D. 恶意代码/工具防护

- **备注**：确认主机侧安全防护软件或 EDR 对 tidb-server/pd-server/tikv-server 进程及 tiup、Dumpling 等运维工具所在主机（含中控机）的防护与告警能力；各组件部署最小化一并核查。

- **预期证据**：安全软件截图、策略配置截图、告警样例。


## 时间同步与日志一致性

- **对应控制点**：GB/T 22239-2019 8.1.5.4 安全管理中心·集中管控（时钟同步），并支撑 8.1.4.3 安全审计记录的时间可溯源。
- **判定要点**：集群各节点与统一时钟源正常同步（NTP/chrony 服务 active、偏差可接受）判符合，未同步或偏差大判不符合；TiDB 官方部署前置检查要求配置并验证 NTP/chrony 时间同步（chronyc tracking 核查）。
- **取证要求**：`chronyc tracking`/NTP 配置截图、时钟源说明、巡检记录。

```bash
chronyc tracking          # chrony 同步状态（或 ntpstat、ntpq -p）
timedatectl status | grep -Ei "NTP|synchronized"
```

- **备注**：确认全部 TiDB/PD/TiKV 节点与中控机时间同步（NTP/chrony），保证慢查询日志、CLUSTER_LOG、运行日志的时间可比对、可溯源；分布式架构下跨节点时间偏差直接影响日志关联分析，应逐节点取证。

- **预期证据**：NTP/chrony 配置截图、各节点时间同步状态截图、运维制度或巡检记录。


## 主流版本差异说明

```text
TiDB主流版本核查差异说明
```

## 版本识别

```bash
tiup cluster list                 # 已部署集群列表（Name/Version/Path，只读）
tiup cluster display <集群名>     # 组件清单与 Cluster version（只读）
```

```sql
select version();        -- MySQL 兼容串：8.0.11-TiDB-v<真实版本>（旧版为 5.7.25-TiDB-v* 前缀），真实版本看 -TiDB-v 之后
select tidb_version()\G  -- 真实版本与构建信息（Release Version/Edition/Git Commit Hash）
```

说明：现场先确认 TiDB 真实版本（LTS 小版本）与部署形态（TiUP/Operator、TiKV 副本数、是否含 TiFlash），再对照本分册「重点差异」选命令。

## 主流版本分档

1. TiDB v7.1 LTS（2023-05-31 发布；标准支持至 2026-05-31、扩展支持至 2027-05-31，现场应评估停维风险）

2. TiDB v7.5 LTS（2023-12-01 发布；标准支持至 2026-12-01）

3. TiDB v8.1 LTS（2024-05-24 发布；标准支持至 2027-05-24）——存量环境常见版本

4. TiDB v8.5 LTS（2024-12-19 发布；标准支持至 2027-12-19、扩展支持至 2028-12-19；本分册默认值主要以 stable 文档核验，现场一律以实测输出为准）

## 重点差异

### A. 配置项与系统变量是两套体系

1. TLS 证书（security.ssl-cert/ssl-key/ssl-ca）、TiKV 静态加密（security.encryption.data-encryption-method）、日志轮转（log.file.max-size/max-days/max-backups）等为**配置项**，用 `SHOW CONFIG` 查询（等效 information_schema.cluster_config）

2. validate_password.*、wait_timeout、tidb_general_log 等为**系统变量**，用 `SHOW VARIABLES` 查询，两类对象不得互查

推荐命令：

```sql
show config where type = 'tidb' and name like '%ssl%';
show config where type = 'tikv' and name like '%encryption%';
show variables like 'validate_password%';
```

兼容提示：

1. SHOW CONFIG 输出含 Type/Instance 列，截图应覆盖实例与节点，证明配置在全部节点一致生效。

### B. 密码管理框架为 v6.5.0 起内置能力

1. validate_password.*（点分变量，enable 默认 OFF）、default_password_lifetime（默认 0）、密码重用（password_history/password_reuse_interval 默认 0）与账户级失败锁定（FAILED_LOGIN_ATTEMPTS/PASSWORD_LOCK_TIME）均为 v6.5.0 起提供，早期版本无原生能力，只能以堡垒机/制度补偿并如实记录

2. 失败锁定为账户级而非全局级：MySQL 的 connection_control 插件变量在 TiDB 不存在，核查按 SHOW CREATE USER 逐账户取证

推荐命令：

```sql
show variables like 'validate_password%';
show create user 'appuser'@'%';
select user, host, password_expired, account_locked from mysql.user;
```

兼容提示：

1. 现场版本低于 v6.5 时，validate_password.* 查询返回空集属预期，不得据此判定为“已关闭但具备能力”，应按无原生复杂度校验口径判定。

### C. 认证插件与 MySQL 不同

1. 默认认证插件为 mysql_native_password（default_authentication_plugin 默认值，v5.2 起引入）；caching_sha2_password 自 v5.2.0 起支持，sha256_password 不支持；tidb_sm3_password（v6.3.0 起，SM3）、tidb_auth_token（v6.4.0 起，JWT）为 TiDB 特有插件

2. TiDB 不支持列级权限、多因素身份验证、双密码与随机密码生成策略（官方安全差异文档口径）

推荐命令：

```sql
select user, host, plugin from mysql.user;
show grants for 'appuser'@'%';
```

兼容提示：

1. 以 MySQL 8.4/9.x 客户端直连 TiDB 时可能因客户端移除 mysql_native_password 而登录失败，属客户端兼容问题，现场改用适配客户端取证，勿误判为服务端故障。

### D. 加密与备份生态差异

1. 客户端—TiDB 链路 TLS 用 security.ssl-* 配置项 + require_secure_transport 变量；组件间内部 TLS（TiDB/PD/TiKV/TiFlash、Control 通道）需单独配置（TiDB ssl-ca/ssl-cert/ssl-key、PD cacert-path/cert-path/key-path、TiKV ca-path/cert-path/key-path，配 cert-allowed-cn 做 CN 校验），只查客户端链路不等于组件间已加密

2. 备份体系为 BR 快照/日志备份（PiTR 自 v6.2.0 起）、Dumpling 逻辑导出、TiDB Lightning 导入，与 MySQL 的 binlog/mysqldump 体系完全不同

推荐命令：

```sql
show config where type = 'tikv' and name like '%encryption%';
```

```bash
tiup br log status --pd http://<PD_IP>:2379
```

兼容提示：

1. TiKV 静态加密默认 plaintext，PD 静态加密为实验特性，运行日志不参与加密；判定存储保密性时须覆盖全部 TiKV 节点配置。


## 现场编制建议

1. 以 mysql 客户端经 4000 端口登录核查，同时保留 tiup 中控机通道：tiup cluster list/display 用于固定版本、拓扑与组件状态，SQL 侧用于变量与权限取证，两类证据互相印证。

2. 配置项取证优先 `show config where type = '...'`（输出含 Type/Instance/Name/Value），变量用 `show variables like '...'`，两类对象不可混查——ssl-cert、data-encryption-method、log.file.* 是配置项，validate_password.*、wait_timeout、tidb_general_log 是变量。

3. 先用 `select version()` 与 `tidb_version()`、`tiup cluster display` 固定真实版本与部署形态，再对照「主流版本分档」与「重点差异」选命令；v6.5.0 前后版本的密码管理能力差异必须写入报告。

4. 变更类操作（SET GLOBAL、SET CONFIG、GRANT/REVOKE、ALTER USER、br backup/restore、 dumpling 导出）一律不现场执行，仅记录整改口径并注明审批要求。

5. 日志类证据（cluster_log 查询、日志文件切片）随滚动可能被清理或轮转，取证时应当场截图并注明查询时间窗口与节点，不可事后补取。


## 取证注意事项

1. `select version()` 以 8.0.11-TiDB-v（或旧版 5.7.25-TiDB-v）开头属正常现象，不得据此判定对象为 MySQL；真实版本以 -TiDB-v 之后的串、tidb_version() 与 tiup cluster display 输出互证。

2. 新部署集群 root 默认无口令且可无验证登录 TiDB Dashboard（官方文档口径），现场应首查 root 口令与 Dashboard 登录验证情况；Dashboard 经 PD Client 端口 2379 提供，该端口承载无需认证的特权接口，应核实防火墙限制。

3. 登录失败锁定为账户级能力，须逐账户 SHOW CREATE USER 取证；报告中的“账号”应写全 user@host 形态，host='%' 账户应说明网络层等效控制。

4. 审计与留存判定：TiDB 自建版无内置完整审计日志，仅凭 tidb_general_log/慢日志/运行日志不可判符合，必须核查第三方数据库审计、堡垒机审计或日志外发平台（留存不少于 6 个月）后才可判符合或部分符合；TiDB Cloud 审计日志为云服务能力，不适用于自建集群。

5. 若为 TiDB Cloud 或托管版，OS 侧证据（日志目录、证书文件、监听端口、主密钥）改由控制台或运维平台取证，并以云厂商合规说明补充。


## 参考依据

1. GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》（openstd 实测可达，安全计算环境条款 8.1.4）：<https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF>
2. GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（openstd 实测可达）：<https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C>
3. 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准 T/ISEAA 001-2020；官方无公开直链，未引用二手站链接）。
4. TiDB 官方文档 docs.pingcap.com（stable 版文档为主，以下均于 2026-09-03 实际访问核验）：
   - TIDB_VERSION() 函数（获取真实版本与构建信息）：[TiDB 特有的函数](https://docs.pingcap.com/zh/tidb/stable/tidb-functions/)；VERSION() 返回 MySQL 兼容串（官方示例 v7.5.1 输出 8.0.11-TiDB-v7.5.1）：[信息函数](https://docs.pingcap.com/zh/tidb/stable/information-functions/)
   - 密码管理（validate_password.* 各变量默认值 enable=OFF/length=8/policy=MEDIUM、default_password_lifetime 默认 0、password_history/password_reuse_interval 默认 0、FAILED_LOGIN_ATTEMPTS 0–32767 与 PASSWORD_LOCK_TIME 0–32767|UNBOUNDED 且均非 0 才生效、SELECT user,password_expired,Account_locked FROM mysql.user、disconnect-on-expired-password 默认 true）：[TiDB 密码管理](https://docs.pingcap.com/zh/tidb/stable/password-management/)
   - 与 MySQL 安全特性差异（不支持列级权限、max_questions/max_updated、多因素、双密码与随机密码策略；密码管理 v6.5.0 起；认证插件支持表：mysql_native_password 默认、caching_sha2_password 5.2.0 起、tidb_sm3_password 6.3.0 起、tidb_auth_token 6.4.0 起、LDAP 7.1.0 起、sha256_password 不支持）：[与 MySQL 安全特性差异](https://docs.pingcap.com/zh/tidb/stable/security-compatibility-with-mysql/)
   - 客户端服务端间 TLS（ssl-cert/ssl-key 必配、ssl-ca 可选、auto-tls v5.2.0 起、tls-version、TLSv1.2/TLSv1.3、SHOW STATUS LIKE "%Ssl%" 判定 Ssl_cipher、\s 查看、REQUIRE SSL/REQUIRE X509、require_secure_transport 自 v6.1.0 引入）：[为 TiDB 客户端服务端间通信开启加密传输](https://docs.pingcap.com/zh/tidb/stable/enable-tls-between-clients-and-servers/)
   - 组件间内部 TLS（TiDB ssl-ca/ssl-cert/ssl-key、PD cacert-path/cert-path/key-path、TiKV ca-path/cert-path/key-path、cert-allowed-cn CN 校验，覆盖 TiDB/PD/TiKV/TiFlash 与 Control 通道）：[为 TiDB 组件间通信开启加密传输](https://docs.pingcap.com/zh/tidb/stable/enable-tls-between-components/)
   - TiKV 静态加密（security.encryption.data-encryption-method 默认 plaintext、aes128/192/256-ctr、sm4-ctr 自 v6.3.0、主密钥 KMS/文件、数据密钥默认每周轮换、运行日志不加密建议脱敏、PD 静态加密为实验特性、BR 支持 S3 服务端加密）：[静态加密](https://docs.pingcap.com/zh/tidb/stable/encryption-at-rest/)
   - 系统变量（wait_timeout 默认 28800 自 v5.4 起、max_execution_time 默认 0 毫秒、tidb_general_log 默认 OFF、require_secure_transport 默认 OFF、default_authentication_plugin 默认 mysql_native_password）：[系统变量](https://docs.pingcap.com/zh/tidb/stable/system-variables/)；[TiDB 中的各种超时](https://docs.pingcap.com/zh/developer/dev-guide-timeouts-in-tidb/)
   - 慢查询日志（tidb_slow_log_threshold 默认 300 毫秒、slow-query-file 默认 tidb-slow.log、tidb_enable_slow_log 默认 true、SLOW_QUERY/CLUSTER_SLOW_QUERY 表）：[慢查询日志](https://docs.pingcap.com/zh/tidb/stable/identify-slow-queries/)；集群日志表 CLUSTER_LOG 下推查询：[SQL 诊断](https://docs.pingcap.com/zh/tidb/stable/information-schema-sql-diagnostics/)
   - TiDB 配置文件（log.file.max-size 默认 300MB、max-days 默认 0 不清理、max-backups 默认 0 全保留）：[TiDB 配置文件描述](https://docs.pingcap.com/zh/tidb/stable/tidb-configuration-file/)；SHOW CONFIG 与 SHOW VARIABLES 维度区别（配置≠变量）：[SHOW CONFIG](https://docs.pingcap.com/zh/tidb/stable/sql-statement-show-config/)
   - 组件默认端口（TiDB 4000/10080、PD 2379/2380、TiKV 20160/20180）：[TiDB 软件和硬件环境需求](https://docs.pingcap.com/zh/tidb/stable/hardware-and-software-requirements/)
   - TiDB Dashboard 安全（经 PD Client 端口 http://IP:2379/dashboard/ 提供、tiup cluster display --dashboard、PD 端口承载无需验证的特权接口须防火墙限制、Dashboard 账号与 SQL 用户一致建议最小权限账户、默认部署 root 无密码）：[提高 TiDB Dashboard 安全性](https://docs.pingcap.com/zh/tidb/stable/dashboard-ops-security/)
   - RBAC（类 MySQL 8.0、CREATE ROLE/GRANT、mysql.role_edges、SET DEFAULT ROLE/mandatory_roles）：[基于角色的访问控制](https://docs.pingcap.com/zh/tidb/stable/role-based-access-control/)；权限体系（v3.0 起角色、v5.1 起动态权限）：[权限管理](https://docs.pingcap.com/zh/tidb/stable/privilege-management/)
   - 备份恢复（tiup br log status 查询日志备份任务、br restore point 恢复到指定时间点/PiTR、快照备份与日志备份体系）：[日志备份与 PITR 使用指南](https://docs.pingcap.com/zh/tidb/stable/br-pitr-guide/)、[日志备份与 PITR 命令行手册](https://docs.pingcap.com/zh/tidb/stable/br-pitr-manual/)；Dumpling 逻辑导出（tiup dumpling -h -P 4000 -o）：[使用 Dumpling 导出数据](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview/)
   - tiup 工具只读命令（tiup cluster list 输出 Name/Version/Path、tiup cluster display 查看各组件运行状态、tiup cluster audit 查看历史运维命令与日志）：[tiup cluster list](https://docs.pingcap.com/zh/tidb/stable/tiup-component-cluster-list/)、[tiup cluster display](https://docs.pingcap.com/zh/tidb/stable/tiup-component-cluster-display/)、[tiup cluster audit](https://docs.pingcap.com/zh/tidb/stable/tiup-component-cluster-audit/)
   - 部署前置检查（NTP/chrony 时间同步、chronyc tracking 核查）：[TiDB 环境与系统配置检查](https://docs.pingcap.com/zh/tidb/stable/check-before-deployment/)
   - 版本支持策略（LTS 标准支持约 3 年+扩展支持 1 年、DMR 不提供官方支持；v5.4/v6.1 已 EOL、v6.5 扩展至 2026-12-29、v7.1 至 2027-05-31、v7.5 标准至 2026-12-01、v8.1 至 2027-05-24、v8.5 标准至 2027-12-19/扩展至 2028-12-19）：[TiDB Release Support Policy](https://www.pingcap.com/tidb-release-support-policy/)
   - 审计日志能力口径（内置审计日志见于 TiDB Cloud 云服务，自建版无该功能）：[TiDB Cloud 数据库审计日志](https://docs.pingcap.com/zh/tidbcloud/tidb-cloud-auditing/)

命令核验说明：本文 SQL/命令于 2026-09-03 逐条对照 docs.pingcap.com 官方文档（stable 版中文文档为主）联网核验。TiDB 兼容 MySQL 协议与 mysql.user、SHOW GRANTS、wait_timeout 等语法，但**安全参数自有体系且配置项（SHOW CONFIG）与系统变量（SHOW VARIABLES）是两套对象，不得互查**：密码复杂度为内置点分变量 validate_password.*（enable 默认 OFF，非 MySQL 插件/组件）、登录失败处理为账户级 FAILED_LOGIN_ATTEMPTS/PASSWORD_LOCK_TIME（无 connection_control）、TLS 以 security.ssl-* 配置项 + require_secure_transport 变量控制（支持 TLSv1.2/1.3）、存储加密为 TiKV security.encryption.data-encryption-method（默认 plaintext）、备份体系为 BR/Dumpling/PiTR（v6.2.0 起），严禁照搬 MySQL 原生口径（have_ssl、general_log、connection_control、binlog 系列、mysqldump 等均不适用）。未能核验而删除或改写的内容：`select @@port/@@hostname/@@datadir` 等 MySQL 实例变量未核验 TiDB 支持情况，实例标识改用 tiup cluster display 与 SHOW CONFIG 口径；mysql.columns_priv、information_schema.COLUMN_PRIVILEGES 等列级授权查询因 TiDB 不支持列级权限而未收录，改写为“最细到表级”口径；information_schema.USER_PRIVILEGES 等授权视图、authentication_policy 变量（default_authentication_plugin 的替代项）默认值、tidb_redact_log 脱敏变量当前默认值、SHOW CREATE USER 回显字段、br log status 输出字段等未逐项核验，均以“以现场版本实测为准”标注或未落核查块；SELECT @@version 以 select version() 等已核验写法替代。版本差异提示：密码管理框架（复杂度/过期/重用/失败锁定）为 v6.5.0 起内置能力，早期版本无原生能力按补偿口径判定；version() 前缀自 MySQL 8.0.11 兼容串（官方示例 v7.5.1 已为 8.0.11-TiDB）应以 -TiDB-v 后串确认真实版本；各默认值（validate_password.enable=OFF、default_password_lifetime=0、wait_timeout=28800、tidb_general_log=OFF、require_secure_transport=OFF、log.file.max-size=300、data-encryption-method=plaintext）以 stable 文档核验，现场判定一律以 SHOW VARIABLES/SHOW CONFIG 实测输出为准。

## 关联文章

- 分册目录：[数据库测评命令](../)
- 同系列分册：[01、MySQL](01-mysql/) / [11、OceanBase](11-oceanbase/)
- 配套加固：[17、加固方案总纲](../../../../reinforce/其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录：[16、安全评估加固记录表3.0](../../../../reinforce/其他系统或设备/16安全评估加固记录表3.0/)
- 高风险口径：[22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
