03-PostgreSQL测评命令
Categories:
4 分钟阅读
PostgreSQL数据库三级等级保护现场核查命令脚本(统一编号版)
适用范围:PostgreSQL/HGDB/兼容 PostgreSQL 的国产数据库
基础信息
SELECT version();
\du
\l
show data_directory;
- 备注:用于确认数据库版本、角色、库列表和数据目录位置。
- 预期证据:版本截图、角色列表截图、数据库列表截图、数据目录截图。
示例输出(节选)
postgres=# SELECT version();
version
-------------------------------------------------------------------------
PostgreSQL 15.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5, 64-bit
(1 row)
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
appuser | | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres=# show data_directory;
data_directory
------------------------
/opt/app/pgsql/data
(1 row)
身份鉴别
A. 身份标识唯一、口令复杂度、定期更换
select usename, valuntil from pg_shadow;
show password_encryption;
show shared_preload_libraries;
- 备注:重点看账户状态、口令加密算法、是否启用 passwordcheck 等复杂度控制模块。若原生不支持定期更换,应说明外围实现方式。
- 预期证据:
pg_shadow截图、password_encryption参数截图、插件/模块截图、账号制度。
示例输出(节选)
postgres=# select usename, valuntil from pg_shadow;
usename | valuntil
----------+---------------------
appuser | 2026-12-31 00:00:00
postgres |
(2 rows)
postgres=# show password_encryption;
password_encryption
---------------------
scram-sha-256
(1 row)
postgres=# show shared_preload_libraries;
shared_preload_libraries
--------------------------
passwordcheck
(1 row)
B. 登录失败处理、会话超时退出
show idle_session_timeout;
show idle_in_transaction_session_timeout;
show statement_timeout;
show tcp_keepalives_idle;
- 备注:PostgreSQL 很多版本对失败登录处理支持有限,应重点说明是否通过外围平台实现。超时参数可作为自动退出的辅助证据。
- 预期证据:超时参数截图、第三方控制策略截图、访谈记录。
示例输出(节选)
postgres=# show idle_session_timeout;
idle_session_timeout
----------------------
10min
(1 row)
postgres=# show idle_in_transaction_session_timeout;
idle_in_transaction_session_timeout
-------------------------------------
5min
(1 row)
C. 远程管理传输保密
show ssl;
show ssl_cert_file;
show ssl_key_file;
show ssl_ca_file;
- 备注:还需结合
postgresql.conf、pg_hba.conf判断是否对远程管理连接实际启用了安全认证与加密。 - 预期证据:SSL 参数截图、配置文件截图、证书配置截图、远程连接方式说明。
示例输出(节选)
postgres=# show ssl;
ssl
-----
on
(1 row)
postgres=# show ssl_cert_file;
ssl_cert_file
----------------------
server.crt
(1 row)
postgres=# show ssl_ca_file;
ssl_ca_file
-------------
root.crt
(1 row)
D. 组合鉴别
备注:通常需借助 LDAP、PAM、堡垒机、统一认证平台实现。
预期证据:统一认证或堡垒机截图、MFA 策略截图、访谈记录。
访问控制
A. 账户、角色、权限分配
\du
select * from pg_roles;
select * from pg_user;
- 备注:重点核查超级用户、复制用户、可登录用户和角色划分情况。
- 预期证据:角色截图、用户截图、账号职责分工说明。
示例输出(节选)
postgres=# select rolname, rolsuper, rolcanlogin from pg_roles where rolcanlogin;
rolname | rolsuper | rolcanlogin
----------+----------+-------------
postgres | t | t
appuser | f | t
report | f | t
(3 rows)
B. 默认账户、多余账户、来源限制
\l
备注:结合
pg_hba.conf核查来源地址限制和认证方式,关注是否存在不安全认证类型。预期证据:
pg_hba.conf截图、来源控制说明、认证方式截图。
C. 细粒度授权与最小权限
\z
备注:重点抽查重要库表、敏感对象授权情况,确认是否符合最小权限原则。
预期证据:对象权限截图、抽查记录、权限审批材料。
D. 角色继承与特殊角色
select rolname, rolsuper, rolcreaterole, rolcreatedb, rolreplication, rolcanlogin from pg_roles;
- 备注:重点说明超级角色、复制角色和角色继承链。
- 预期证据:角色属性截图、角色设计说明。
示例输出(节选)
postgres=# select rolname, rolsuper, rolcreaterole, rolcreatedb, rolreplication, rolcanlogin from pg_roles;
rolname | rolsuper | rolcreaterole | rolcreatedb | rolreplication | rolcanlogin
-----------+----------+---------------+-------------+----------------+-------------
postgres | t | t | t | t | t
appuser | f | f | f | f | t
repl | f | f | f | t | t
(3 rows)
安全审计
A. 审计功能是否开启
show logging_collector;
show log_destination;
show log_statement;
- 备注:重点看日志采集和语句审计能力是否开启。
- 预期证据:参数截图、日志启用截图、审计插件或日志平台截图。
示例输出(节选)
postgres=# show logging_collector;
logging_collector
-------------------
on
(1 row)
postgres=# show log_statement;
log_statement
---------------
ddl
(1 row)
B. 审计范围与审计对象
show log_connections;
show log_disconnections;
show log_min_duration_statement;
- 备注:重点看是否覆盖登录、连接断开、关键语句和异常行为。
- 预期证据:参数截图、审计样例截图、审计范围说明。
示例输出(节选)
postgres=# show log_connections;
log_connections
-----------------
on
(1 row)
postgres=# show log_disconnections;
log_disconnections
--------------------
on
(1 row)
postgres=# show log_min_duration_statement;
log_min_duration_statement
----------------------------
1000ms
(1 row)
C. 审计日志保护与留存
show log_directory;
show log_filename;
- 备注:需结合操作系统侧核查日志目录权限、留存周期、备份和集中存储。
- 预期证据:日志路径截图、目录权限截图、日志留存制度、日志平台截图。
示例输出(节选)
postgres=# show log_directory;
log_directory
---------------
/opt/app/pgsql/log
postgres=# show log_filename;
log_filename
--------------------------
postgresql-%Y-%m-%d.log
(1 row)
D. 审计失效告警
备注:建议补查日志采集、监控、告警和审计平台策略。
预期证据:监控告警规则截图、告警样例、日志采集状态截图。
数据完整性
A. 传输过程完整性
show ssl;
- 备注:SSL/TLS 可作为传输完整性的重要证据,但需结合实际连接链路判断。
- 预期证据:SSL 参数截图、连接加密截图、链路说明。
示例输出(节选)
postgres=# show ssl;
ssl
-----
on
(1 row)
B. 存储过程完整性
show password_encryption;
- 备注:重要配置数据、审计数据、备份数据完整性通常需结合文件权限、备份校验和外围制度说明。
- 预期证据:参数截图、文件权限截图、备份校验记录、制度材料。
示例输出(节选)
postgres=# show password_encryption;
password_encryption
---------------------
scram-sha-256
(1 row)
数据保密性
A. 传输过程保密性
show ssl;
- 备注:应证明数据库管理连接和重要业务连接传输过程采用了密码技术保护。
- 预期证据:SSL 参数截图、远程管理加密链路说明。
示例输出(节选)
postgres=# show ssl;
ssl
-----
on
(1 row)
B. 存储过程保密性
备注:静态加密多依赖文件系统加密、应用层加密或国产增强特性。
预期证据:磁盘/文件系统加密截图、应用加密说明、制度材料。
备份恢复
A. 本地数据备份与恢复
show archive_mode;
show archive_command;
- 备注:应结合备份脚本、归档策略和恢复演练记录综合判定。
- 预期证据:备份脚本、归档参数截图、恢复演练记录。
示例输出(节选)
postgres=# show archive_mode;
archive_mode
--------------
on
(1 row)
postgres=# show archive_command;
archive_command
------------------------------------------------
test ! -f /opt/app/backup/arch/%f && cp %p /opt/app/backup/arch/%f
(1 row)
B. 异地实时备份
select * from pg_stat_replication;
select * from pg_stat_wal_receiver;
- 备注:重点看流复制和备机状态,并说明是否部署在异地。
- 预期证据:复制状态截图、备机截图、异地部署说明、拓扑图。
示例输出(节选)
postgres=# select pid, client_addr, state, sync_state from pg_stat_replication;
pid | client_addr | state | sync_state
------+---------------+-----------+------------
8123 | 192.168.10.22 | streaming | sync
(1 row)
C. 热冗余与高可用
备注:结合流复制、热备、切换演练材料判定。
预期证据:高可用架构图、切换记录、演练报告。
剩余信息保护
A. 鉴别信息所在存储空间释放前清除
备注:需结合文件系统、块存储、虚拟化平台和介质清除制度综合判定。
预期证据:清除制度、平台策略说明、销毁记录。
B. 敏感数据所在存储空间释放前清除
备注:同上。
预期证据:销毁记录、加密截图、设备回收制度。
个人信息保护
A. 个人信息访问控制与审计
备注:抽查表级/列级授权、访问审计和导出控制。
预期证据:权限截图、审计截图、导出控制说明。
B. 个人信息存储与传输保护
备注:抽查脱敏、加密和分类分级措施。
预期证据:脱敏规则截图、加密方案说明、分类分级文件。
入侵防范
A. 访问来源限制/白名单
备注:结合数据库监听/配置与防火墙策略,确认仅允许授权来源访问。
预期证据:数据库访问控制或监听配置截图、主机/网络防火墙策略、堡垒机访问策略截图。
B. 异常访问与爆破防护
备注:结合登录失败处理、连接限制、WAF/堡垒机/防暴力破解策略,确认具备阻断或告警能力。
预期证据:失败登录限制参数截图、策略截图、告警样例、访谈记录。
C. 漏洞扫描与补丁管理
备注:确认数据库漏洞扫描周期、补丁评估与修复流程。
预期证据:漏洞扫描报告、补丁更新记录、变更单。
D. 恶意代码/工具防护
备注:确认主机侧安全防护软件或EDR对数据库进程的防护与告警能力。
预期证据:安全软件截图、策略配置截图、告警样例。
时间同步与日志一致性
备注:确认数据库服务器时间同步(NTP/chrony),保证审计日志时间一致、可溯源。
预期证据:NTP/chrony 配置截图、时间同步状态截图、运维制度或巡检记录。
主流版本差异说明
PostgreSQL主流版本核查差异说明
版本识别
select version();
主流版本分档
PostgreSQL 12/13
PostgreSQL 14/15
PostgreSQL 16/17
重点差异
A. 身份鉴别
推荐命令:
select usename, valuntil from pg_shadow;
show password_encryption;
show shared_preload_libraries;
版本提示:
不同版本对默认密码算法、扩展模块和参数支持会有变化。
现场若无
passwordcheck,应说明是否由外围系统实现复杂度控制。
B. 登录失败处理、会话超时退出
推荐命令:
show idle_session_timeout;
show idle_in_transaction_session_timeout;
show statement_timeout;
版本提示:
较新版本超时参数更完善。
旧版本若参数缺失,应补充第三方或外围平台说明。
C. 访问控制
推荐命令:
\du
\z
select * from pg_roles;
select * from pg_user;
版本提示:
- 角色和对象授权主线变化不大,兼容性较好。
D. 安全审计
推荐命令:
show logging_collector;
show log_statement;
show log_connections;
show log_disconnections;
show log_min_duration_statement;
版本提示:
- 现场常见差异更多在日志参数默认值与扩展审计插件,而不是核心命令本身。
E. 备份恢复与高可用
推荐命令:
show archive_mode;
show archive_command;
select * from pg_stat_replication;
select * from pg_stat_wal_receiver;
版本提示:
较新版本流复制和监控视图更完整。
旧版本如统计视图字段有差异,建议直接截图结果,不强行固定列名。
现场编制建议
PostgreSQL 12/13 更偏传统流复制和基础日志审计。
PostgreSQL 14/15 可重点补会话超时和审计细节。
PostgreSQL 16/17 继续沿用原思路,重点放在加密、认证和高可用状态。
取证注意事项
pg_hba.conf与postgresql.conf是 PostgreSQL 现场取证的关键文件。若是国产兼容版(瀚高等),应同时记录其增强模块和厂商专有参数。