# 10-openGauss测评命令

> openGauss测评取证命令单：gsql 连接与 select version() 基础信息核查，pg_roles 账户与 password_policy、failed_login_attempts 等 openGauss 特有口令锁定参数身份鉴别核查，enableSeparationOfDuty 三权分立访问控制核查，audit_enabled 审计参数与 pg_query_audit 安全审计核查，ssl/ssl_ciphers、enable_tde 数据保密性，gs_basebackup/gs_dump 备份恢复、入侵防范、时间同步核查，附版本分档差异、现场编制建议与取证注意事项。

---

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

---

> openGauss数据库三级等级保护现场核查命令脚本（统一编号版）
>
> 定位：三级等保现场测评取证命令单，按功能小节组织核查命令、预期现象与判定要点。

## 基础信息

```bash
# 以操作系统用户 omm（或具备 sysadmin 属性的账户）登录主节点；-r 开启命令编辑与自动补齐
# 端口以现场实际监听为准：port 参数默认 5432，om 企业版安装常见 8000
gsql -V                          # gsql 客户端版本信息
gsql -d postgres -U omm -p 8000 -r
```

```sql
select version();                        -- 版本串以 PostgreSQL 9.2.4 开头属正常（内核沿袭），openGauss 版本看括号内 build 串
show port;                               -- 实例端口
show listen_addresses;                   -- 监听范围
select current_user, current_database(); -- 当前登录身份
\l                                       -- 元命令：数据库列表（名称、所有者、字符集、使用权限）
\conninfo                                -- 当前连接信息
```

- **对应控制点**：无对应条款（测评准备项：确认测评对象、版本与部署形态，据此选定后续核查命令）。
- **判定要点**：仅记录事实，不下符合性结论；先确认社区版/云与衍生发行版、5.x/6.x 版本与单机/主备形态再选命令（差异见「重点差异」）。
- **取证要求**：`version()`、端口与监听查询截图，登录账号与来源记录，部署形态（单机/主备/集群）说明。
- **备注**：`select version()` 输出以 `PostgreSQL 9.2.4 (openGauss x.x.x build …)` 形式呈现是官方内核沿袭的正常现象，现场不应误判为 PostgreSQL 数据库；主备环境可另在主节点执行 `gs_om -t status --detail` 确认集群状态（见备份恢复节）。
- **预期证据**：版本查询结果截图、实例信息截图、数据库列表截图、部署形态说明。


<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">postgres</span><span class="o">=#</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="w">                                                                  </span><span class="k">version</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------------------------------------------------------------------------------------------------------------------------------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">PostgreSQL</span><span class="w"> </span><span class="mi">9</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="mi">4</span><span class="w"> </span><span class="p">(</span><span class="n">openGauss</span><span class="w"> </span><span class="mi">6</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="w"> </span><span class="n">build</span><span class="w"> </span><span class="n">xxxxxxxx</span><span class="p">)</span><span class="w"> </span><span class="n">compiled</span><span class="w"> </span><span class="k">at</span><span class="w"> </span><span class="mi">2025</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">28</span><span class="w"> </span><span class="mi">20</span><span class="p">:</span><span class="mi">05</span><span class="p">:</span><span class="mi">53</span><span class="w"> </span><span class="k">commit</span><span class="w"> </span><span class="mi">0000</span><span class="w"> </span><span class="n">last_mr</span><span class="w"> </span><span class="mi">0000</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">port</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">port</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">8000</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="err">\</span><span class="n">conninfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">以用户</span><span class="s2">&#34;omm&#34;</span><span class="err">的身份、通过端口</span><span class="s2">&#34;8000&#34;</span><span class="err">连接到数据库</span><span class="s2">&#34;postgres&#34;</span><span class="err">。</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 身份鉴别

- **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别（a 标识唯一/复杂度/定期更换，b 登录失败处理，c 远程管理防窃听，d 组合鉴别）。
- **判定要点**：openGauss 原生具备口令复杂度（password_policy 默认 1）、有效期（password_effect_time 默认 90 天）、失败锁定（failed_login_attempts 默认 10 次 + password_lock_time 默认 1 天）与参数化会话超时（session_timeout 默认 10min），参数配置到位且初始用户口令已修改判 a)/b) 符合；复杂度关闭（password_policy=0）或失败锁定关闭（failed_login_attempts=0）判不符合；`ssl=off` 且无补偿判 c) 不符合；未实现双因素判 d) 不符合。
- **取证要求**：口令策略与锁定参数查询截图、账户清单与有效期截图、SSL 参数与证书配置截图、双因素认证截图、账号管理制度。

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


**高风险提示**：初始用户（omm）保留默认/弱口令、存在空口令账户、password_policy=0 且无外围补偿，均属高风险情形。对应判定详见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


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

```sql
select rolname, rolsuper, rolcanlogin, rolvalidbegin, rolvaliduntil
from pg_roles order by rolname;          -- 账户唯一性、可登录与有效期（pg_roles 的 rolpassword 列固定回显 ********，不泄露哈希）
show password_policy;                    -- 默认 1：开启口令复杂度校验；0=关闭
show password_min_length;                -- 默认 8；另有 password_max_length 默认 32
show password_reuse_time;                -- 默认 60（天）：口令不可重用天数
show password_reuse_max;                 -- 默认 0：口令不可重用次数（0=不检查次数）
show password_effect_time;               -- 默认 90（天）：口令有效期
show password_notify_time;               -- 默认 7（天）：口令到期提醒
select name, setting from pg_settings where name like 'password%' order by name;   -- 一次拉全口令类参数，保留原始截图
```

- **备注**：openGauss 口令策略为内核原生 GUC 参数（password_policy 等），与 PostgreSQL 依赖 passwordcheck 扩展的机制完全不同，不得按 PG 口径核查。复杂度校验开启时口令须含大小写字母/数字/特殊字符中至少三类、不得与用户名相同，且可结合弱口令字典（gs_global_config）使用。账户有效截止时间看 `rolvaliduntil`（NULL 表示未设置）。加密存储算法由 password_encryption_type 决定（默认 2=sha256，0=md5 不安全），另见数据保密性节。
- **预期证据**：账户列表截图、口令策略参数截图、账号管理制度或账号台账。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">password_policy</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_policy</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">password_effect_time</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_effect_time</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">----------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">90</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">password_reuse_time</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_reuse_time</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">---------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">60</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">setting</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_settings</span><span class="w"> </span><span class="k">where</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;password%&#39;</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">name</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">           </span><span class="n">name</span><span class="w">           </span><span class="o">|</span><span class="w"> </span><span class="n">setting</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------------------------+---------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_encryption_type</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_effect_time</span><span class="w">     </span><span class="o">|</span><span class="w"> </span><span class="mi">90</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_lock_time</span><span class="w">       </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="n">d</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">...</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">8</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>


整改对照（由 DBA 执行，属变更操作）：`gs_guc reload -N all -I all -c "password_policy=1"`、`gs_guc reload -N all -I all -c "password_reuse_time=60"`、`ALTER USER joe IDENTIFIED BY "新口令" REPLACE "旧口令";`。此类命令会改变全部账户的口令校验行为，须走变更审批并在业务低峰执行。


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

```sql
show failed_login_attempts;   -- 默认 10；0=不限制密码错误次数
show password_lock_time;      -- 默认 1（天），SHOW 输出形如 1d；0=超限后短时间内自动解锁
show session_timeout;         -- 默认 10min：会话空闲超时自动退出
show authentication_timeout;  -- 默认 1min：认证阶段超时
```

- **备注**：failed_login_attempts 与 password_lock_time 均为正数时才执行失败检查与账户锁定，官方建议保持默认值；主备场景下主备节点对用户锁定状态的管理相互独立，主节点锁定不影响其连接备节点，取证时应双侧核对。手动锁定/解锁语法为 `ALTER USER 账户 ACCOUNT LOCK/UNLOCK;`，属变更操作，现场只记录不执行；锁定/解锁事件由审计参数 audit_user_locked（默认 1）记录，见安全审计节。
- **预期证据**：失败锁定参数截图、会话超时参数截图、堡垒机/运维平台超时配置截图、访谈记录。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">failed_login_attempts</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">failed_login_attempts</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">10</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">password_lock_time</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_lock_time</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">1</span><span class="n">d</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">session_timeout</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">session_timeout</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">10</span><span class="k">min</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



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

```sql
show ssl;             -- 默认 off：服务器端 SSL 开关
show require_ssl;     -- 默认 off：是否强制 SSL 连接（仅 ssl=on 时生效）
show ssl_cert_file;   -- 默认 server.crt（相对数据目录）
show ssl_key_file;    -- 默认 server.key
show ssl_ca_file;     -- 默认 cacert.pem（验证客户端证书时使用）
show ssl_ciphers;     -- 默认 ALL：SSL 加密算法列表
```

- **备注**：仅“支持 SSL”不等于“已强制使用”，需结合 `require_ssl=on`、pg_hba.conf 中 `hostssl` 记录与客户端连接方式（PGSSLMODE 建议 verify-ca/verify-full，默认 prefer）共同判断；服务器私钥与客户端证书/密钥文件权限须为 600。审计日志登录记录 detail_info 末尾记录 `SSL=on/off`，可作实际连接已加密的旁证（见安全审计节 pg_query_audit）。
- **预期证据**：SSL 参数截图、证书文件与权限截图、客户端 sslmode 配置截图、堡垒机/远程管理链路说明。
- **高风险提示**：三级系统远程管理时鉴别信息明文传输（ssl=off 且无补偿措施）属高风险情形，见 [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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">ssl</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">ssl</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">on</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">require_ssl</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">require_ssl</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">on</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">ssl_ciphers</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">ssl_ciphers</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">ALL</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



### D. 组合鉴别

- **备注**：openGauss 原生支持证书认证（双向认证建议客户端 PGSSLMODE=verify-ca）；双因素通常由堡垒机、统一身份认证、MFA 平台实现，应在记录中注明，其中一种鉴别技术须基于密码技术。
- **预期证据**：双因素登录界面截图、堡垒机认证策略截图、统一认证平台策略截图、访谈记录。


## 访问控制

- **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制（a 分配账户权限，b 默认账户，c 多余/过期账户，d 最小权限与权限分离，e 授权策略，f 授权粒度，g 安全标记）。
- **判定要点**：openGauss 无安全标记能力（g 一般判不符合或由上位措施说明）；三权分立开关 enableSeparationOfDuty 默认 off，未开启且未做其他管理权限分离说明判“部分符合”；初始用户（omm）权限不受三权分立影响，兼任业务用途或多人共用判“不符合”；业务账户持有 rolsuper/rolcreaterole 等高权限属性判“部分符合”。
- **取证要求**：pg_roles 查询截图、`\du` 输出、对象授权抽查截图、账号权限台账与审批记录、三权分工说明。

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

```sql
\du                                      -- 元命令：列出所有数据库角色（等价 \dg）
select rolname, rolsuper, rolsystemadmin, rolauditadmin, rolmonitoradmin,
       roloperatoradmin, rolpolicyadmin, rolcreaterole, rolcreatedb, rolcanlogin
from pg_roles order by rolname;          -- openGauss 扩展管理属性列：系统/审计/监控/运维/安全策略管理员
select r.rolname as role, m.rolname as member
from pg_auth_members am
join pg_roles r on r.oid = am.roleid
join pg_roles m on m.oid = am.member;    -- 角色成员（继承）关系
```

- **备注**：pg_roles 非公开视图，初始用户和具有 sysadmin/createrole 属性的用户可查看全部角色，普通用户只能查看自己的信息，现场应以管理账户核查。rolsystemadmin/rolauditadmin/rolmonitoradmin/roloperatoradmin/rolpolicyadmin 为 openGauss 特有列（PostgreSQL 无对应列），是判定管理权限分离的直接证据；rolconnlimit=-1 表示不限制并发连接。
- **预期证据**：账户与属性截图、角色成员关系截图、角色分工说明、账号权限审批记录。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">rolname</span><span class="p">,</span><span class="w"> </span><span class="n">rolsystemadmin</span><span class="p">,</span><span class="w"> </span><span class="n">rolauditadmin</span><span class="p">,</span><span class="w"> </span><span class="n">rolcreaterole</span><span class="p">,</span><span class="w"> </span><span class="n">rolcanlogin</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_roles</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">rolname</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rolname</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">rolsystemadmin</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">rolauditadmin</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">rolcreaterole</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">rolcanlogin</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">---------+----------------+---------------+---------------+-------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">appuser</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">              </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">auditmgr</span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">              </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">omm</span><span class="w">     </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">              </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">secmgr</span><span class="w">  </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">              </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">             </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">4</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 默认账户、多余账户、来源与高权限账户

```sql
select rolname, rolsuper, rolcanlogin, rolvaliduntil, rolconnlimit
from pg_roles order by rolname;          -- 排查初始用户用途、多余/过期账户与连接数限制
select rolname, rolconfig from pg_roles where rolconfig is not null;   -- 按账户覆盖的会话默认参数
```

- **备注**：初始用户在安装时自动创建（环境不同名称可能为 omm 等，以现场为准），权限不受三权分立影响、拥有最高权限，官方建议仅作 DBA 管理用途而非业务应用；保留初始用户时须确认口令已修改且不用于日常业务。多余/过期账户的锁定与删除属变更操作（`ALTER USER … ACCOUNT LOCK;`、`DROP USER … CASCADE;`），现场只记录不执行；postgres 系统库不应承载业务对象。
- **预期证据**：账户清单截图、高权限账户用途说明、账号清理记录、账号台账。
- **高风险提示**：默认账户未改默认口令、共享账户或匿名可登录账户属高风险情形，见 [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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">rolname</span><span class="p">,</span><span class="w"> </span><span class="n">rolsuper</span><span class="p">,</span><span class="w"> </span><span class="n">rolcanlogin</span><span class="p">,</span><span class="w"> </span><span class="n">rolvaliduntil</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_roles</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">rolname</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">rolname</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">rolsuper</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">rolcanlogin</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">rolvaliduntil</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">---------+----------+-------------+---------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">appuser</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">        </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">           </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">auditmgr</span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">        </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">           </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">omm</span><span class="w">     </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">        </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">           </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">test_old</span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w">        </span><span class="o">|</span><span class="w"> </span><span class="n">t</span><span class="w">           </span><span class="o">|</span><span class="w"> </span><span class="mi">2026</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">05</span><span class="w"> </span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span><span class="o">+</span><span class="mi">08</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">4</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



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

```sql
\dp public.t_order                       -- 元命令：表/视图访问权限（rolename=xxxx/yyyy 为角色授权，=xxxx/yyyy 为授予 public）
\l                                       -- 库级列表含所有者与使用权限
select grantee, table_schema, table_name, privilege_type
from information_schema.role_table_grants
where grantee in ('appuser','report')
order by grantee, table_name;            -- 对象授权抽查（SQL 视图口径，可与 \dp 相互印证）
```

- **备注**：重点抽查重要业务表、敏感字段的授权是否最小化，关注授予 public 的权限（`\dp` 输出中 `=xxxx/yyyy` 行）与带 `W`（GRANT OPTION 转授）的授权；库级 CONNECT 权限也在 pg_hba.conf 认证之外独立校验。
- **预期证据**：对象授权截图、敏感表权限抽查记录、权限申请审批记录。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="err">\</span><span class="n">dp</span><span class="w"> </span><span class="k">public</span><span class="p">.</span><span class="n">t_order</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">                               </span><span class="k">Access</span><span class="w"> </span><span class="k">privileges</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">Schema</span><span class="w"> </span><span class="o">|</span><span class="w">  </span><span class="k">Table</span><span class="w">  </span><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="k">Access</span><span class="w"> </span><span class="k">privileges</span><span class="w">     </span><span class="o">|</span><span class="w"> </span><span class="k">Column</span><span class="w"> </span><span class="k">privileges</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------+---------+-------+--------------------------+-------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">t_order</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">appuser</span><span class="o">=</span><span class="n">rwD</span><span class="o">/</span><span class="n">appuser</span><span class="w">      </span><span class="o">|</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">                                  </span><span class="n">report</span><span class="o">=</span><span class="n">r</span><span class="o">/</span><span class="n">appuser</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



### D. 三权分立与特殊角色

```sql
show enableSeparationOfDuty;             -- 默认 off：on=开启三权分立（POSTMASTER 类型，修改需重启实例）
```

- **备注**：官方口径——三权分立开启后，系统管理员不再具有 CREATEROLE（安全管理员）和 AUDITADMIN（审计管理员）能力，不再拥有创建角色和用户的权限、不再拥有查看和维护数据库审计日志的权限，且仅对自己作为所有者的对象有权限；用户帐户只能由初始用户和安全管理员创建；审计日志由审计管理员（AUDITADMIN）负责查看。该参数为 POSTMASTER 类型，现场只能确认现状，整改需走变更并重启实例；未开启时应核查是否以岗位分工+堡垒机等外围措施补偿，并在记录中说明。
- **预期证据**：enableSeparationOfDuty 参数截图、三权岗位分工说明、审计管理员/安全管理员账户属性截图、访谈记录。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">enableSeparationOfDuty</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">enableSeparationOfDuty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">on</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 安全审计

- **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计（启用审计并覆盖每个用户、记录要素、记录保护与定期备份、审计进程保护）。
- **判定要点**：openGauss 原生审计（audit_enabled 默认 on），总开关 on 且登录/启停/授权回收/锁定解锁/对象 DDL 等关键审计项开启、留存满足 6 个月口径判符合；仅开总开关但关键项未覆盖判“部分符合”；audit_enabled=off 且无第三方审计判“不符合”。审计文件默认二进制格式存于 pg_audit 目录，需经审计管理员或 pg_query_audit 函数查询。
- **取证要求**：审计参数查询截图、审计记录样例（时间/用户/事件/结果）、审计目录权限截图、留存与备份策略说明。

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


**高风险提示**：审计功能未开启（audit_enabled=off 且无替代审计措施）属高风险情形。对应判定详见 [22、高风险判定指引与加固对照表](../../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


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

```sql
show audit_enabled;                      -- 默认 on（SIGHUP 类型，可在线修改）
select name, setting from pg_settings where name like 'audit%' order by name;   -- 一次拉全审计参数，保留原始截图
```

- **备注**：audit_enabled 控制审计进程的开启和关闭，开启后审计进程从管道读取后台进程写入的审计信息并写入审计文件；audit_directory 默认 pg_audit（相对数据目录，om 部署时为 $GAUSSLOG/pg_audit/实例名），audit_data_format 默认 binary。审计查询需 AUDITADMIN 属性用户（见 D 小节）。
- **预期证据**：audit_enabled 截图、审计参数全量截图、审计文件目录截图。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">audit_enabled</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">audit_enabled</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">---------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">on</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



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

```sql
show audit_login_logout;        -- 默认 7：登录成功/失败、注销全部审计（0~7，0=关闭）
show audit_database_process;    -- 默认 1：数据库启动、停止、切换、恢复
show audit_user_locked;         -- 默认 1：用户锁定、解锁
show audit_grant_revoke;        -- 默认 1：权限授予、回收
show audit_system_object;       -- 默认 67121195（6.0.0）：26 类对象 CREATE/DROP/ALTER 的 28 位位图
show audit_dml_state;           -- 默认 0：具体表 DML（SELECT 除外）审计，等保现场建议按需开启
show audit_dml_state_select;    -- 默认 0：SELECT 审计
show audit_copy_exec;           -- 默认 1：COPY 操作
show audit_function_exec;       -- 默认 0：存储过程/自定义函数执行
show full_audit_users;          -- 默认空：全量审计用户列表
show no_audit_client;           -- 默认空：免审计客户端列表（应确认未把运维客户端排除在外）
```

- **备注**：audit_system_object 为 28 位二进制位组合（每位对应一类对象的 CREATE/DROP/ALTER），默认值不同版本可能不同（6.0.0 为 67121195），以现场 pg_settings 实测为准。注意：GaussDB 系部分产品文档中的 audit_select_policy 参数在 openGauss 6.0.0 官方文档中不存在，SELECT 审计对应参数为 audit_dml_state_select，勿按旧口径误判。重点确认审计覆盖登录（含失败）、授权回收、锁定解锁、对象 DDL 与关键 DML。
- **预期证据**：审计范围参数截图、审计策略说明、审计事件样例截图。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">audit_login_logout</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">audit_login_logout</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">7</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">audit_system_object</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">audit_system_object</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">---------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">67121195</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">audit_dml_state</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">audit_dml_state</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



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

```sql
show audit_directory;            -- 默认 pg_audit；om 部署为 $GAUSSLOG/pg_audit/实例名
show audit_resource_policy;      -- 默认 on：空间优先（受 audit_space_limit 约束）；off=时间优先
show audit_space_limit;          -- 默认 1GB：审计文件占用磁盘空间总量
show audit_file_remain_time;     -- 默认 90（天）：审计文件最短保留时间，0=无限制（仅 audit_resource_policy=off 时生效）
show audit_rotation_interval;    -- 默认 1d：审计文件切换时间间隔
show audit_rotation_size;        -- 默认 10MB：单文件最大容量
```

```bash
ls -l <数据目录>/pg_audit/       # 主机侧只读查看审计文件数量、大小与权限（配合留痕）
```

- **备注**：等保口径审计记录留存不少于 6 个月，而 audit_file_remain_time 默认 90 天且仅在 audit_resource_policy=off（时间优先）时生效——现场为空间优先或未调整留存时，应核查是否以集中日志平台/定期备份满足留存要求并留存证据。官方提示不要随意调整 rotation_interval/rotation_size/remain_threshold，以免 resource_policy 控制失效。
- **预期证据**：审计目录与文件权限截图、留存参数截图、集中存储/备份策略截图。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">audit_resource_policy</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">audit_resource_policy</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">off</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">audit_file_remain_time</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">audit_file_remain_time</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">185</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">audit_space_limit</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">audit_space_limit</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">2</span><span class="n">GB</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



### D. 审计记录查询与失效告警

```sql
-- 以具有 AUDITADMIN 属性的用户执行：查询指定时段审计记录
select * from pg_query_audit('2026-09-03 08:00:00','2026-09-03 23:59:59');
-- 函数原型：pg_query_audit(timestamptz startime, timestamptz endtime [, audit_log])；不指定 audit_log 时默认查看当前实例
```

- **备注**：只有拥有 AUDITADMIN 属性的用户才可以查看审计记录（三权分立开启后为审计管理员职责）；审计文件为二进制格式，不能直接以文本方式读取，统一经 pg_query_audit 查询。登录记录的 detail_info 末尾记录 `SSL=on/off`，client_conninfo 记录客户端来源，可作审计要素完整性与传输加密旁证。审计失效告警需补查监控平台、告警策略与审计员独立性。
- **预期证据**：审计记录样例截图（含时间、用户、事件、结果、来源）、告警规则与样例截图、审计管理制度。


<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">postgres</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">pg_query_audit</span><span class="p">(</span><span class="s1">&#39;2026-09-03 08:00:00&#39;</span><span class="p">,</span><span class="s1">&#39;2026-09-03 23:59:59&#39;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">（节选）</span><span class="n">time</span><span class="w">                </span><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="k">result</span><span class="w">         </span><span class="o">|</span><span class="w"> </span><span class="n">username</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">database</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">client_conninfo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">---------------------+--------------+----------------+----------+----------+------------------
</span></span></span><span class="line"><span class="cl"><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">03</span><span class="w"> </span><span class="mi">09</span><span class="p">:</span><span class="mi">15</span><span class="p">:</span><span class="mi">22</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">LOGIN_LOGOUT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">LOGIN_SUCCESS</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="n">postgres</span><span class="w"> </span><span class="o">|</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></span><span class="line"><span class="cl"><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">03</span><span class="w"> </span><span class="mi">09</span><span class="p">:</span><span class="mi">16</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">DML</span><span class="w">          </span><span class="o">|</span><span class="w"> </span><span class="n">SUCCESS</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="n">postgres</span><span class="w"> </span><span class="o">|</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></span><span class="line"><span class="cl"><span class="err">（登录记录</span><span class="w"> </span><span class="n">detail_info</span><span class="w"> </span><span class="err">末尾含</span><span class="w"> </span><span class="s2">&#34;SSL=on&#34;</span><span class="err">）</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 数据完整性

- **对应控制点**：GB/T 22239-2019 8.1.4.7 数据完整性（a 传输过程、b 存储过程）。
- **判定要点**：传输完整性以 SSL/TLS 证据为准（ssl=on、require_ssl=on、pg_hba.conf hostssl 记录、审计记录 SSL=on 旁证）；存储完整性 openGauss 无开箱即用的全库校验机制，需备份校验、磁盘冗余、文件哈希基线等第三方措施支撑，仅有数据库参数判“部分符合”。
- **取证要求**：SSL 参数与 pg_hba.conf 截图、链路说明、备份校验记录、制度材料。

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

```sql
show ssl;
show require_ssl;
show ssl_ciphers;
```

- **备注**：使用 SSL/TLS 可作为传输完整性的重要证据，还应结合 pg_hba.conf 的 hostssl 配置与远程管理流程判断全链路生效；明文口令认证方式同样受 pg_hba.conf 约束（见入侵防范节）。
- **预期证据**：SSL 参数截图、hostssl 记录截图、加密连接演示截图、网络传输加密说明。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">ssl</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">ssl</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">on</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">require_ssl</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">require_ssl</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">on</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



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

- **备注**：重点说明鉴别数据（口令 sha256/sm3 加密存储，见数据保密性节）、重要配置数据（postgresql.conf、pg_hba.conf 的变更管理与备份）、审计数据（pg_audit 二进制文件 + 权限控制）是否具备防篡改或一致性保护措施，需结合备份校验、文件权限和制度说明综合判定。
- **预期证据**：配置文件权限截图、备份校验记录、变更管理制度、技术说明。


## 数据保密性

- **对应控制点**：GB/T 22239-2019 8.1.4.8 数据保密性（a 传输过程、b 存储过程）。
- **判定要点**：传输保密性看 ssl/require_ssl 与客户端 sslmode（建议 verify-ca/verify-full）；鉴别数据看 password_encryption_type（默认 2=sha256，0=md5 判不符合，3=sm3 国密更优）；重要业务数据存储看 enable_tde 透明加密（需 KMS 支持）或磁盘/应用层加密，均无措施判“不符合”。
- **取证要求**：SSL 参数与客户端 sslmode 截图、password_encryption_type 截图、加密方案与密钥管理说明、磁盘加密证明材料。

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


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


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

```sql
show ssl;
show require_ssl;
show ssl_ciphers;
```

- **备注**：应证明数据库管理连接、重要业务连接在传输过程中采用密码技术保护；客户端默认 sslmode=prefer，仅 prefer 不能保证强制加密，建议现场演示以 verify-ca/verify-full 连接并截图。
- **预期证据**：SSL 参数截图、客户端加密连接截图、远程运维链路说明。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">ssl</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">ssl</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">-----
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">on</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



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

```sql
show password_encryption_type;   -- 默认 2：0=md5、1=sha256+md5（均不安全）、2=sha256、3=sm3
show enable_tde;                 -- 默认 off：透明数据加密开关（创建加密表前需置 on）
```

- **备注**：pg_roles 的 rolpassword 列固定回显 ********，口令哈希不可直接读取，鉴别数据加密存储方式以 password_encryption_type 判定；透明加密（TDE）需将 enable_tde 置 on 并配置主密钥 ID（tde_cmk_id），依赖密钥管理服务（如华为云 DEW/KMS），建表时以 encrypt_algo 指定算法（支持 AES_128_CTR、SM4_CTR，默认 AES_128_CTR，指定后不可更改），算法与密钥来源应留存证明材料；未启用 TDE 时以磁盘加密或应用层加密补充判定。
- **预期证据**：password_encryption_type 截图、TDE 参数与加密表清单截图、密钥管理说明、磁盘加密或应用层加密证明。


<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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">password_encryption_type</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">password_encryption_type</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">--------------------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="mi">2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</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">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">show</span><span class="w"> </span><span class="n">enable_tde</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="n">enable_tde</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">------------
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="k">off</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 备份恢复

- **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复（a 本地备份与恢复，b 异地实时备份，c 热冗余）。
- **判定要点**：具备 gs_basebackup 物理备份或 gs_dump 逻辑备份的定期任务且经恢复演练验证判 a) 符合，无备份或从未演练判“不符合”；主备（流复制）实时同步且备机位于异地判 b)，仅同机房主备判“部分符合”；gs_om 状态 Normal、主备切换有演练记录判 c) 符合。
- **取证要求**：备份策略/任务/备份文件清单截图、恢复演练记录、gs_om 集群状态截图与异地机房说明、高可用架构图。

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


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


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

```bash
which gs_basebackup gs_dump gs_dumpall gs_restore   # 确认备份与恢复工具随库安装（只读）
gs_basebackup --version                             # 工具版本（-V 等价，只读）
gs_dump --version
```

```bash
# 备份能力演示（会产生磁盘 I/O，须避开业务高峰并经管理员同意）：
# 物理全量备份：gs_basebackup 仅支持主机/备机的全量备份，不支持增量；-D 目录需提前创建
gs_basebackup -D /data/backup/base_$(date +%F) -h 127.0.0.1 -p 8000
# 逻辑导出：-F p 纯文本，另有 t/c/d 归档格式（归档格式须与 gs_restore 配合恢复）
gs_dump -U omm -f /data/backup/appdb_$(date +%F).sql -p 8000 -F p postgres
```

- **备注**：结合备份脚本、计划任务、备份文件保留期和恢复演练记录综合判断；openGauss 生产环境亦常配套数据库管理员自研或第三方备份平台，以现场实际部署为准。归档格式备份的恢复依赖 gs_restore，gs_dumpall 负责库级设置（含用户）导出。
- **预期证据**：备份任务截图、备份文件清单截图、恢复演练记录、工具版本截图。


<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">$ gs_basebackup --version
</span></span><span class="line"><span class="cl">gs_basebackup (openGauss 6.0.0 build xxxxxxxx) compiled at 2025-02-28 20:05:53 commit 0000 last_mr 0000
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ gs_basebackup -D /data/backup/base_20260903 -h 127.0.0.1 -p 8000
</span></span><span class="line"><span class="cl">INFO: The starting position of the xlog copy of the full build is: 0/1B800000. The slot minimum LSN is: 0/1B800000.
</span></span></code></pre></div>
</details>



### B. 异地实时备份

```bash
# 以 omm 在主节点执行：集群与主备状态（P Primary Normal / S Standby Normal）
gs_om -t status --detail
```

- **备注**：openGauss 主备流复制可作为异地实时备份的支撑证据，但仍需证明备节点位于异地（机房说明、拓扑图）；`--all` 可显示所有节点信息。
- **预期证据**：gs_om 状态截图、备机信息与异地机房说明、网络拓扑图。


<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">[   Cluster State   ]
</span></span><span class="line"><span class="cl">cluster_state       : Normal
</span></span><span class="line"><span class="cl">redistributing      : No
</span></span><span class="line"><span class="cl">current_az          : AZ_ALL
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">[  Datanode State   ]
</span></span><span class="line"><span class="cl">node    node_ip         port    instance              state
</span></span><span class="line"><span class="cl">----------------------------------------------------------------
</span></span><span class="line"><span class="cl">1  node1  192.168.10.11  8000    6001 /data/og/dn1     P Primary Normal
</span></span><span class="line"><span class="cl">2  node2  192.168.10.12  8000    6002 /data/og/dn2     S Standby Normal
</span></span></code></pre></div>
</details>



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

```bash
gs_om -t status --detail    # cluster_state : Normal、双节点互为主备
```

- **备注**：重点确认是否具备热冗余、故障切换和恢复能力；主备切换（switchover）与故障演练属变更操作，现场以演练记录和监控平台证据取证，不在生产库直接演示。
- **预期证据**：高可用架构图、集群状态截图、故障切换演练记录。


## 剩余信息保护

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

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

- **备注**：删除账户（DROP USER）仅删除数据库对象，磁盘块残留与备份残留需结合介质清除制度、虚拟磁盘回收策略、云盘释放策略、销毁记录综合判定。

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

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

- **备注**：需结合磁盘加密、虚拟化回收策略、介质销毁记录判定敏感数据残留风险控制情况。

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

## 个人信息保护

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

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

- **备注**：若业务涉及个人信息，应抽查敏感表/列的授权（\dp、role_table_grants）、访问审计（audit_dml_state_select、pg_query_audit 样例）与导出控制。

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

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

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

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

## 入侵防范

- **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范（a 最小安装，b 服务与端口，c 管理终端限制，e 漏洞发现与修补）；D 项对应 8.1.4.5 恶意代码防范。
- **判定要点**：listen_addresses 未按需最小化且无网络层限制、pg_hba.conf 存在对外 trust 类弱认证判不符合（官方口径：trust 对外部客户端不安全，应设为 sha256）；使用已停止维护的版本且存在未修复高危漏洞判不符合并按高风险处理。
- **取证要求**：监听配置与 pg_hba.conf 截图、防火墙/堡垒机策略截图、漏洞扫描报告与补丁记录、EDR/防护软件界面截图。

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

```sql
show listen_addresses;   -- 监听地址按安装时配置；应为具体业务/管理网段地址而非全网监听
show port;               -- port 参数默认 5432，实际值由安装时配置文件指定（om 安装常见 8000）
```

```bash
grep -vE '^\s*#|^\s*$' <数据目录>/pg_hba.conf   # 客户端接入认证规则（首条匹配原则），核查认证方法与来源网段
```

- **备注**：pg_hba.conf 记录格式为 local/host/hostssl/hostnossl + DATABASE + USER + ADDRESS + METHOD；官方建议远程记录使用 sha256 认证（可配合 hostssl 强制加密），trust 对外部客户端不安全，reject 用于显式拒绝来源；认证规则顺序敏感（首条匹配），openGauss 自动下发的内部 IP 规则优先于手工配置。修改认证规则属变更操作（gs_guc set -h "host all jack 10.10.0.30/32 sha256"），现场只核查不修改。
- **预期证据**：监听参数截图、pg_hba.conf 截图、主机/网络防火墙策略、堡垒机访问策略截图。


<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"># pg_hba.conf（节选）
</span></span><span class="line"><span class="cl">local   all       all                          trust
</span></span><span class="line"><span class="cl">host    all       jack      10.10.0.50/32      sha256
</span></span><span class="line"><span class="cl">hostssl all       all       192.168.10.0/24    sha256
</span></span><span class="line"><span class="cl">host    all       all       10.10.0.1/32       reject
</span></span></code></pre></div>
</details>



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

- **备注**：结合登录失败处理（failed_login_attempts/password_lock_time）、认证超时（authentication_timeout）、连接数限制（max_connections、rolconnlimit）、WAF/堡垒机/防暴力破解策略，确认具备阻断或告警能力。

- **预期证据**：失败登录限制参数截图、策略截图、告警样例、访谈记录。

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

- **备注**：确认数据库漏洞扫描周期、补丁评估与修复流程；版本选择对照官方生命周期——LTS 版本发布间隔 2 年、社区提供 3 年维护支持（OGSP/oGSP 伙伴提供延长支持），社区创新版本仅 6 个月支持；openGauss 5.0.0 LTS 已于 2026-03-31 停止社区维护（官方停维公告），现场在用版本应为受支持版本，否则应在记录中注明并按漏洞风险跟踪。
- **预期证据**：漏洞扫描报告、补丁更新记录、变更单、版本生命周期说明。

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

- **备注**：确认主机侧安全防护软件或EDR对数据库进程（gaussdb、gs_* 工具）的防护与告警能力。

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

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

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

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

- **备注**：确认数据库服务器时间同步（NTP/chrony），主备节点时钟一致，保证 pg_query_audit 审计记录时间可比对、可溯源。

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

## 主流版本差异说明

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

## 版本识别

```bash
gsql -V                  # 客户端版本
```

```sql
select version();        -- PostgreSQL 9.2.4 (openGauss x.x.x build …) 前缀为内核沿袭，版本看括号内串
```

说明：现场先确认版本与发行形态（社区版/云与衍生发行版），再选用对应命令。

## 主流版本分档

1. openGauss 5.0.0 LTS（2023-03-31 发布，2026-03-31 已停止社区维护）

2. openGauss 创新版本（RC 等，6 个月支持，功能由对应 LTS 收编）

3. openGauss 6.0.0 LTS（当前主推 LTS：2 年发布间隔、3 年社区维护、oGSP 延长支持）

## 重点差异

### A. 身份鉴别

1. 口令策略为 openGauss 原生 GUC 参数体系（password_policy/password_effect_time/password_reuse_time/password_reuse_max/password_min_length 等），与 PostgreSQL 依赖 passwordcheck 扩展完全不同

2. password_encryption_type 默认 2（sha256），老环境可能出现 0（md5）或 1（sha256+md5），应整改为 2 或 3（sm3）

推荐命令：

```sql
select name, setting from pg_settings where name like 'password%' order by name;
show failed_login_attempts;
show password_lock_time;
```

兼容提示：

1. 部分参数为 SIGHUP 类型可在线 reload，enableSeparationOfDuty 等为 POSTMASTER 类型需重启实例，取证时只记录现状。

2. 主备环境账户锁定状态主备独立，需双侧取证。

### B. 访问控制

1. pg_roles 含 openGauss 扩展管理属性列（rolsystemadmin/rolauditadmin/rolmonitoradmin/roloperatoradmin/rolpolicyadmin），为管理权限分离的直接证据

2. 三权分立由 enableSeparationOfDuty 控制（默认 off），开启后系统管理员失去 CREATEROLE/AUDITADMIN 能力

推荐命令：

```sql
select rolname, rolsystemadmin, rolauditadmin, rolmonitoradmin, roloperatoradmin from pg_roles order by rolname;
show enableSeparationOfDuty;
```

兼容提示：

1. 普通用户仅能查看自身角色信息，核查需初始用户或 sysadmin/createrole 属性账户。

2. 云与衍生发行版可能内置三权分立或改用自有权限体系，以现场输出为准。

### C. 安全审计

1. 审计参数（audit_enabled、audit_login_logout、audit_system_object 等）为 openGauss 特有体系，PostgreSQL 无对应参数（PG 生态用 pgaudit/log_statement），不得套用

2. 审计文件默认二进制格式，统一经 pg_query_audit（AUDITADMIN 权限）查询，不能直接读取文件

推荐命令：

```sql
show audit_enabled;
select name, setting from pg_settings where name like 'audit%' order by name;
select * from pg_query_audit('2026-09-03 08:00:00','2026-09-03 23:59:59');
```

兼容提示：

1. audit_system_object 默认值随版本可能不同（6.0.0 为 67121195），以现场 pg_settings 为准。

2. 早期文档/其他产品口径中的 audit_select_policy 在 openGauss 6.0.0 官方文档中不存在，SELECT 审计看 audit_dml_state_select。

### D. 备份恢复与传输加密

1. gs_basebackup 仅支持全量物理备份（不支持增量），逻辑备份用 gs_dump/gs_dumpall、恢复用 gs_restore

2. 远程认证推荐 sha256（可配合 hostssl）；客户端 sslmode 默认 prefer，强制加密需 require_ssl=on 并使用 verify-ca/verify-full

推荐命令：

```bash
which gs_basebackup gs_dump gs_dumpall gs_restore
gs_om -t status --detail
```

## 现场编制建议

1. 以 omm 或具备 sysadmin/auditadmin 属性的账户登录核查：pg_roles 全量信息与 pg_query_audit 均有权限要求，现场应提前确认账户与登录通道。

2. 参数取证优先 `select name, setting from pg_settings where name like '…';` 批量拉取原始截图，再以单项 `show 参数名` 补充关键值，截图须含实例标识与时间。

3. 区分社区版与云/衍生发行版：命令大体一致，但备份平台、审计平台、参数默认值可能不同，以现场 `pg_settings` 实测为准。

4. 变更类操作（ALTER USER … ACCOUNT LOCK/UNLOCK、gs_guc set/reload、DROP USER、主备切换）一律不现场执行，仅记录整改口径并注明审批要求。

## 取证注意事项

1. `select version()` 以 PostgreSQL 9.2.4 开头属正常现象，不得据此判定对象为 PostgreSQL；版本以括号内 openGauss build 串与 gsql -V 输出为准。

2. pg_roles 的 rolpassword 列固定回显 ********，属预期现象，鉴别数据加密存储以 password_encryption_type 判定。

3. show 参数值应与配置文件（postgresql.conf/pg_hba.conf）截图相互印证；POSTMASTER 类型参数修改需重启，无法在线验证整改效果时应注明。

4. 若为云数据库或托管版，OS 侧证据（pg_audit 目录、pg_hba.conf 文件、证书文件权限）改由控制台或运维平台取证。

## 参考依据

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. openGauss 官方文档 docs.opengauss.org（以下均于 2026-09-03 实际访问核验）：
   - 设置帐户安全策略（failed_login_attempts 默认 10、password_lock_time 默认 1 天、ALTER USER … ACCOUNT LOCK/UNLOCK、主备锁定状态独立）：[6.0.0 数据库管理指南](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseAdministrationGuide/设置帐户安全策略.html)
   - 设置密码安全策略（password_policy 默认 1、password_encryption_type 默认 2、password_reuse_time 默认 60、password_reuse_max 默认 0、password_effect_time 默认 90、弱口令字典）：[6.0.0 数据库管理指南](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseAdministrationGuide/设置密码安全策略.html)
   - GUC 参数·安全和认证（ssl/require_ssl 默认 off、ssl_ciphers 默认 ALL、session_timeout 默认 10min、password_min_length 默认 8 等）：[6.0.0 数据库参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseReference/安全和认证_postgresql-conf.html)
   - GUC 参数·连接设置（listen_addresses 按安装配置、port 默认 5432）：[6.0.0 数据库参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseReference/连接设置.html)
   - 审计开关（audit_enabled 默认 on、audit_directory 默认 pg_audit、audit_data_format 默认 binary、audit_file_remain_time 默认 90、audit_space_limit 默认 1GB 等）：[6.0.0 数据库参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseReference/审计开关.html)
   - 用户和权限审计（audit_login_logout 默认 7、audit_user_locked 默认 1、audit_grant_revoke 默认 1、audit_database_process 默认 1）：[6.0.0 数据库参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseReference/用户和权限审计.html)
   - 操作审计（audit_system_object 默认 67121195、audit_dml_state 默认 0、audit_dml_state_select 默认 0、audit_copy_exec 默认 1、enableSeparationOfDuty 默认 off）：[6.0.0 数据库参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseReference/操作审计.html)
   - 查看审计结果（pg_query_audit 原型与 AUDITADMIN 权限要求、登录记录 SSL=on/off）：[5.1.0 数据库管理指南](https://docs.opengauss.org/zh/docs/5.1.0/docs/DatabaseAdministrationGuide/查看审计结果.html)
   - PG_ROLES 视图（rolsystemadmin/rolauditadmin/rolmonitoradmin/roloperatoradmin/rolpolicyadmin 列、rolpassword 回显 ********、查看权限）：[6.0.0 数据库参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseReference/PG_ROLES.html)
   - 三权分立（enableSeparationOfDuty=on 开启、系统管理员/安全管理员/审计管理员分工、初始用户权限不受影响）：[6.0.0 数据库管理指南](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseAdministrationGuide/三权分立.html)
   - 配置客户端接入认证（pg_hba.conf 格式、trust 不安全应设 sha256、hostssl 示例、首条匹配原则）：[6.0.0 数据库管理指南](https://docs.opengauss.org/zh/docs/6.0.0/docs/DatabaseAdministrationGuide/配置客户端接入认证.html)
   - 用SSL进行安全的TCP/IP连接（ssl/require_ssl 默认 off、证书文件权限 600、PGSSLMODE 取值）：[5.1.0 数据库管理指南](https://docs.opengauss.org/zh/docs/5.1.0/docs/DatabaseAdministrationGuide/用SSL进行安全的TCP-IP连接.html)
   - gsql 使用参考（-V/-d/-U/-p/-h/-r 参数）：[6.0.0 工具和命令参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/ToolandCommandReference/gsql.html)
   - 元命令参考（\du 等价 \dg、\dp、\l、\conninfo）：[6.0.0 工具和命令参考](https://docs.opengauss.org/zh/docs/6.0.0-lite/docs/ToolandCommandReference/元命令参考.html)
   - gs_om 工具（gs_om -t status --detail/--all、gs_om -V）：[6.0.0 工具和命令参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/ToolandCommandReference/gs_om.html)
   - gs_basebackup 工具（用途、全量物理备份、-D/-h/-p/-U、-V/--version）：[6.0.0 工具和命令参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/ToolandCommandReference/gs_basebackup.html)
   - gs_dump 工具（-F p/t/c/d 导出格式、-V/--version、配套 gs_dumpall/gs_restore）：[6.0.0 工具和命令参考](https://docs.opengauss.org/zh/docs/6.0.0/docs/ToolandCommandReference/gs_dump.html)
   - 设置透明数据加密TDE（enable_tde、tde_cmk_id、encrypt_algo 默认 AES_128_CTR、KMS/DEW 依赖）：[5.0.0 数据库管理指南](https://docs.opengauss.org/zh/docs/5.0.0/docs/DatabaseAdministrationGuide/设置透明数据加密_TDE.html)
   - openGauss 社区版本生命周期管理规范（LTS 2 年发布间隔、3 年社区维护、OGSP/oGSP 延长支持、创新版本 6 个月）：<https://opengauss.org/zh/download/life-cycle/>
   - openGauss 5.0.0 LTS 版本即将停止维护公告（2026-03-31 生命周期截止）：<https://opengauss.org/zh/news/2025-12-31/>

命令核验说明：本文命令于 2026-09-03 逐条对照 docs.opengauss.org 官方文档（6.0.0/6.0.0-lite 为主，5.1.0/5.0.0 页面补充）联网核验。openGauss 语法沿袭 PostgreSQL 9.2.4 内核，但参数与工具体系自有：口令策略（password_policy 等）、失败锁定（failed_login_attempts/password_lock_time）、审计（audit_*）、三权分立（enableSeparationOfDuty）均为 openGauss 特有 GUC 参数，与 PostgreSQL 原生参数（如 passwordcheck 扩展）完全不同，现场严禁按 PG 口径套用。默认端口：port 参数与 gsql -p 默认 5432，om 企业版安装常见 8000，以现场实测为准。未能核验而删除的内容：cm_ctl（docs.opengauss.org 版本化文档未检索到其独立工具参考页，集群状态统一采用已核验的 gs_om -t status --detail）；pg_available_versions、db_auth_history 视图未能在官方文档核验，未收录；audit_select_policy、audit_security_policy 参数在 6.0.0 操作审计文档中不存在（GaussDB 系产品口径），已删除并以 audit_dml_state_select 替代；gs_initdb 初始角色细节未直接核验，账户体系改按官方“三权分立/管理员”文档口径表述。版本差异提示：audit_system_object 默认值（6.0.0 为 67121195）、口令类参数默认值均可能随版本变化，判定以现场 `select name, setting from pg_settings …` 实测输出为准。

## 关联文章

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