# 25、PostgreSQL数据库配置核查命令

> PostgreSQL 配置核查命令速查：连接与版本、pg_hba.conf 与 password_encryption 身份鉴别、pgaudit 访问控制与审计、SSL 传输加密四组只读取证命令及速判口径。

---

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

---

> 定位：PostgreSQL 测评核查命令速查（配套 [03、PostgreSQL 测评命令单](../数据库测评命令/03-postgresql/)）。
> 配套加固：[14、PostgreSQL数据库加固](../../../reinforce/系统管理软件平台/14postgresql数据库加固/)；高风险口径：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)。
> 适用版本：PostgreSQL 9.6~17（差异见加固篇版本适用性注）。
>
> 使用说明：
>
> - 本文所有命令均为**只读取证**命令，不修改配置、不重启服务、不执行清除类操作；确需变更由被测单位运维方在授权下实施。
> - 命令回显本身即证据，须连同命令行一起截图；示例中的地址、账户、路径均为演示值，现场须替换为真实取证结果，并对个人信息与内网管理地址脱敏后再入报告。
> - 命令不存在或输出与示例差异较大时，先确认产品版本与部署形态（单机/集群/容器/云托管），再换用等效命令或转入配置文件、管理控制台取证，**不得据命令缺失直接判不符合**。
> - 文中「默认」「一般」等表述均为**初判倾向**，须经上机核查 + 访谈 + 配置/制度核对三方印证后定论，并在报告中写明取证来源。
>
> 不适用标识说明：
>
> - 使用 `【不适用】` 明确标记现场可判定为不适用的控制点，并写明判定依据。
> - 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则：控制能力由上层应用、统一认证平台、前置代理、堡垒机、宿主操作系统或云托管平台承载时，应注明测评单元边界后判定不适用或转由上位组件核查，不得机械按缺失判不符合。
> - 产品版本确实不提供该能力（如社区版无审计插件）时，须核查替代措施并按替代措施的实际效果定档，不得直接判不适用。

## 一、连接与版本

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)、8.1.4.2 访问控制 a)c)、8.1.4.4 入侵防范 e)

```bash
pg_ctl --version                              # 数据库版本
psql -h 127.0.0.1 -d postgres -U postgres     # 连接（本机 superuser）
```

```sql
select version();
```

## 二、身份鉴别

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)
>
> **判定要点**：账户唯一且非默认口令、鉴别信息复杂度与有效期均已配置、远程管理走加密通道、失败处理与会话超时已启用 → 符合；仅满足其中一部分（如有口令但无复杂度、无失败锁定、无空闲超时）→ 部分符合；管理入口无鉴别、存在空口令或沿用出厂口令 → 不符合（高风险）。
>
> **取证要求**：账户清单截图、口令策略参数截图、加密通道配置截图、失败锁定与会话超时参数截图、弱口令实测记录；由统一认证平台承载时补平台侧配置与对接截图。

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


数据库管理端口（Oracle 1521、SQL Server 1433、MySQL/MariaDB 3306、PostgreSQL/KingbaseES/UXDB 5432、MongoDB 27017、达梦 5236、DB2 50000、Redis 6379）对全网开放且存在空口令、默认口令或弱口令账户时，按《高风险判定指引》可直接判高风险；远程管理未启用传输加密、抓包可还原明文口令时同样按高风险处理。

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


```sql
show password_encryption;                     -- 口令加密算法（md5 / scram-sha-256）
select usename, valuntil from pg_shadow;      -- 口令到期时间（valuntil 为空即不过期）
show shared_preload_libraries;                -- 是否加载 passwordcheck 等复杂度模块
select * from pg_settings ps where ps.name like '%timeout%';   -- 超时类参数
```

```bash
cat /var/lib/pgsql/data/pg_hba.conf           # 身份认证方式（重点）
```

pg_hba.conf 五列含义：TYPE（local=套接字 / host=主机地址 / hostssl=强制 SSL 连接）、DATABASE（库名，all 为全部）、USER（用户，all 为全部）、ADDRESS（允许的来源）、METHOD（trust/scram-sha-256/md5/reject 等）。

- 判定：METHOD 含 trust → 高风险；未使用 hostssl/ssl → 远程管理防窃听不符合。

## 三、访问控制与审计

> **对应控制点**：GB/T 22239-2019 8.1.4.2 访问控制 a)~g)、8.1.4.3 安全审计 a)~d)

```sql
\du                                          -- 角色与权限
select * from pg_roles;
select * from pg_stat_user_tables;
```

```bash
cat /var/lib/pgsql/data/postgresql.conf | grep -E "logging_collector|log_statement"
```

- 判定：`logging_collector = on` 且 `log_statement` 非 none 才具备语句级审计；结合 pgAudit 判定（见加固篇第五节）。

## 四、传输加密

> **对应控制点**：GB/T 22239-2019 8.1.4.7 数据完整性 a)、8.1.4.8 数据保密性 a)

```bash
cat /var/lib/pgsql/data/postgresql.conf | grep -E "^ssl"
```

- `ssl = on` 且 pg_hba 配置 hostssl → 传输加密符合；`select * from pg_stat_ssl where pid = pg_backend_pid();` 验证当前连接。

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》（8.1.4 安全计算环境各控制点）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（测评对象边界认定、单元测评实施与结果判定：符合/部分符合/不符合/不适用）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)
- GB/T 25070-2019《信息安全技术 网络安全等级保护安全设计技术要求》，可在全国标准信息公共服务平台检索：[http://openstd.samr.gov.cn/bzgk/gb/](http://openstd.samr.gov.cn/bzgk/gb/)
- GB/T 28449-2018《信息安全技术 网络安全等级保护测评过程指南》（现场测评活动与证据留存要求），可在全国标准信息公共服务平台检索：[http://openstd.samr.gov.cn/bzgk/gb/](http://openstd.samr.gov.cn/bzgk/gb/)
- PostgreSQL 官方文档 — 口令认证：[https://www.postgresql.org/docs/current/auth-password.html](https://www.postgresql.org/docs/current/auth-password.html)
- The pg_hba.conf File：[https://www.postgresql.org/docs/current/auth-pg-hba-conf.html](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html)
- 运行时配置 — 日志记录：[https://www.postgresql.org/docs/current/runtime-config-logging.html](https://www.postgresql.org/docs/current/runtime-config-logging.html)
- pgaudit 扩展：[https://github.com/pgaudit/pgaudit](https://github.com/pgaudit/pgaudit)
- SSL 支持：[https://www.postgresql.org/docs/current/ssl-tcp.html](https://www.postgresql.org/docs/current/ssl-tcp.html)
- 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准）——高风险情形判定口径，站内对照表：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
- 命令核验说明：PostgreSQL 相关命令已对照 PostgreSQL 官方文档核验（核验日期 2026-09-02）。要点：① 客户端认证由数据目录下的 `pg_hba.conf` 控制，**按行顺序匹配、第一条命中的规则生效**；认证方法中 `trust` 表示任何来源免密连接（属高风险配置，仅限开发测试），`peer` 仅适用于本地 Unix socket，`md5` 强度不足，推荐 `scram-sha-256`，高安全场景用 `cert`（`hostssl`）或 `ldap`/`kerberos`/`pam`。② 口令哈希算法由 `postgresql.conf` 的 `password_encryption` 控制（`SHOW password_encryption;` 查询），SCRAM-SHA-256 自 PostgreSQL 10 引入；若口令以 SCRAM 存储而 `pg_hba.conf` 写 `md5`，服务端会自动切换为 SCRAM 认证，反之则认证失败，须核查 `pg_authid` 中实际存储的哈希格式。③ **将 `log_statement` 设为 `DDL` 或 `ALL` 时，`CREATE ROLE/USER ... WITH PASSWORD` 与 `ALTER ROLE/USER ... WITH PASSWORD` 语句会把口令明文写入服务器日志**（引擎预期行为），属取证时的反向风险点；应改用 `pgaudit` 扩展并将 `pgaudit.log` 设为 `ROLE`，该扩展会对日志中的口令做修订（redaction）。④ `pgaudit` 各类别（READ/WRITE/DDL/ROLE/FUNCTION/MISC/ALL）须逐个显式指定，`pgaudit.log_client` 默认应保持关闭，`pgaudit.log_level` 仅在 `log_client` 开启时生效。⑤ PostgreSQL 12 及更早版本已停止社区支持，须对照官方版本支持周期确认补丁可获得性。

## 关联文章

- 同板块·数据库测评篇：[01、Oracle数据库测评](../01oracle数据库测评/)、[05、SQL Server数据库测评](../05sql-server数据库测评/)、[37、MySQL数据库测评](../37mysql数据库测评/)、[28、MariaDB数据库测评](../28mariadb数据库测评/)、[29、MongoDB测评](../29mongodb测评/)、[31、Redis数据库测评](../31redis数据库测评/)、[30、达梦数据库测评](../30达梦数据库测评/)、[10、GaussDB（华为高斯数据库）测评](../10gaussdb华为高斯数据库测评/)、[07、KingbaseES人大金仓数据库测评](../07kingbasees人大金仓数据库测评/)、[06、优炫数据库（UXDB）测评](../06优炫数据库uxdb测评/)
- 同板块·数据库命令速查：[12、MySQL测评命令](../12mysql测评命令/)、[33、DB2数据库命令](../33db2数据库命令/)
- 同板块·中间件测评：[02、TAS应用中间件测评](../02tas应用中间件测评/)、[13、Linux（Tomcat）中间件命令](../13linuxtomcat中间件命令/)
- 同板块·控制点解读：[22、应用访问控制测评解读（MySQL 示例）](../22应用访问控制测评解读mysql-示例/)
- 业务应用参照：[21、应用系统访问控制测评解读](../../业务应用系统平台/21应用系统访问控制测评解读/)、[11、新员工网络培训考核系统测评](../../业务应用系统平台/11新员工网络培训考核系统测评/)
- 配套命令单：[03、PostgreSQL 测评命令单](../数据库测评命令/03-postgresql/)（[数据库测评命令目录](../数据库测评命令/)）
- 配套加固：[14、PostgreSQL数据库加固](../../../reinforce/系统管理软件平台/14postgresql数据库加固/)
- 板块目录：[系统管理软件·平台](/wikis/docs/gradeprotection/%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86%E8%BD%AF%E4%BB%B6%E5%B9%B3%E5%8F%B0/)
- 通用加固方案：[17、加固方案总纲](../../../reinforce/其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录模板：[16、安全评估加固记录表3.0](../../../reinforce/其他系统或设备/16安全评估加固记录表3.0/)
- 高风险口径：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
