各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言,我会以最快速度给你们总结,然后发出来!依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合 HighGo Database 4.x/5.x/6.x 官方安全指南及国产数据库等保测评实践,给出可直接落地的 测评命令清单。
已在 HighGo Database 4.3.4 / 5.0.8 / 6.0.2 环境验证通过,支持 Standalone / HA / 分布式 部署模式。
一、身份鉴别(8.1.4.1)
1.1 数据库用户与认证配置
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 超级用户密码 | \du 或 SELECT * FROM pg_roles WHERE rolsuper='t' | syssao/syssso等初始密码已修改 |
| 密码复杂度 | SHOW passwordcheck.enable; | 启用密码复杂度检查 |
| 账户锁定 | SHOW pg_lock_account.enable; | 启用自动账户锁定 |
| 认证方式 | SHOW password_encryption; | scram-sha-256或更高 |
HighGo用户与认证核查:
-- 查看HighGo版本
SELECT version();
SELECT hgdb_version();
-- 查看所有用户/角色
\du
SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin,
rolvaliduntil, rolpasswordexpired
FROM pg_roles WHERE rolname !~'^pg_';
-- 检查超级用户(初始账户必须修改密码)
SELECT rolname FROM pg_roles WHERE rolsuper='t';
-- HighGo特有安全用户检查
SELECT*FROM pg_roles WHERE rolname IN('syssao','syssso','sysdao');
-- 查看用户密码过期设置
SELECT rolname,
CASEWHEN rolvaliduntil ISNULLTHEN'永不过期'
ELSE rolvaliduntil::textENDas password_expiry
FROM pg_roles WHERE rolcanlogin='t';
-- 查看密码加密算法
SHOW password_encryption;
-- 查看认证配置
SHOW hba_file;
SELECT*FROM pg_hba_file_rules;
-- 查看HighGo特有的安全参数
SHOW security_database_flag;
SHOW security_enable_row_level_security;
1.2 访问控制与权限管理
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 三权分立 | SELECT * FROM pg_roles WHERE rolname IN ('syssao','syssso','sysdao') | 安全管理员、审计管理员、数据管理员分离 |
| 对象权限 | \z 或 \dp | 最小权限原则,无public过度授权 |
| 行级安全 | SHOW security_enable_row_level_security | 启用RLS |
三权分立与权限核查:
-- HighGo三权分立角色检查(核心安全特性)
-- syssao: 安全管理员(Security Administrator Officer)
-- syssso: 安全审计管理员(Security Supervision Officer)
-- sysdao: 数据管理员(Data Administrator Officer)
SELECT rolname, rolsuper, rolcreaterole, rolcreatedb,
CASE rolname
WHEN'syssao'THEN'安全管理员-负责用户/权限管理'
WHEN'syssso'THEN'审计管理员-负责审计日志'
WHEN'sysdao'THEN'数据管理员-负责数据对象'
ELSE'普通用户'
ENDas role_description
FROM pg_roles
WHERE rolname IN('syssao','syssso','sysdao','postgres');
-- 查看角色成员关系(权限继承)
SELECT r.rolname as role, m.rolname as member
FROM pg_auth_members am
JOIN pg_roles r ON am.roleid = r.oid
JOIN pg_roles m ON am.member = m.oid;
-- 查看数据库对象权限
\dp
SELECT*FROM information_schema.table_privileges
WHERE grantee NOTIN('postgres','syssao','syssso','sysdao')
LIMIT20;
-- 检查行级安全策略(RLS)
SELECT schemaname, tablename, rowsecurity FROM pg_tables WHERE rowsecurity='t';
SELECT*FROM pg_policies;
-- 查看强制访问控制(MAC)配置
SHOW security_mac.enable;
SHOW security_mac.policy;
1.3 会话管理与超时
-- 查看会话超时配置
SHOW idle_in_transaction_session_timeout;
SHOW statement_timeout;
SHOW lock_timeout;
SHOW authentication_timeout;
-- 查看当前连接
SELECT*FROM pg_stat_activity WHERE state ='active';
-- 查看连接来源
SELECT client_addr, usename,count(*)
FROM pg_stat_activity
GROUPBY client_addr, usename;
-- 查看HighGo特有的连接控制
SHOW max_connections;
SHOW reserved_connections;-- 为管理员保留的连接
-- 查看会话历史(需启用审计)
SELECT*FROM hg_audit_session LIMIT20;
高风险项:使用初始syssao/syssso/sysdao密码未修改、未启用三权分立、public角色拥有过度权限、未配置密码复杂度,直接判定不符合三级要求。
二、访问控制(8.1.4.2)
2.1 数据库文件权限
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 数据目录权限 | ls -la $PGDATA | highgo用户所有,700权限 |
| 配置文件权限 | ls -la $PGDATA/*.conf | 600权限 |
| 密钥文件权限 | ls -la $PGDATA/server.* | 600权限 |
| 审计日志权限 | ls -la $PGDATA/log/ | 640权限 |
文件权限核查:
# 设置环境变量
exportPGDATA=/var/lib/highgo/data # 或 /home/highgo/data
exportHGHOME=/opt/highgo
# 查看HighGo进程用户
ps aux |grep"postgres\|highgo"|grep-vgrep|awk'{print $1}'|sort|uniq
# 检查数据目录权限
ls-la$PGDATA/
stat-c'%a %U:%G'$PGDATA/
# 检查配置文件权限
ls-la$PGDATA/*.conf
stat-c'%a %U:%G'$PGDATA/postgresql.conf
stat-c'%a %U:%G'$PGDATA/pg_hba.conf
stat-c'%a %U:%G'$PGDATA/highgo.conf # HighGo特有配置
# 检查SSL证书权限
ls-la$PGDATA/server.* 2>/dev/null ||echo"SSL文件不存在"
stat-c'%a %U:%G'$PGDATA/server.key 2>/dev/null
# 检查审计日志权限
ls-la$PGDATA/log/ 2>/dev/null ||ls-la /var/log/highgo/ 2>/dev/null
stat-c'%a %U:%G'$PGDATA/log/
# 检查归档目录权限(如启用)
ls-la$PGDATA/archive/ 2>/dev/null ||echo"归档目录不存在"
# 查找可能的明文密码
grep-r'password'$PGDATA/*.conf 2>/dev/null |grep-v'#'|head-10
2.2 网络访问控制
-- 查看pg_hba.conf配置(主机访问控制)
SHOW hba_file;
SELECT*FROM pg_hba_file_rules ORDERBY line_number;
-- 查看监听配置
SHOW listen_addresses;
SHOW port;
SHOW ssl;
-- 查看SSL配置
SHOW ssl_cert_file;
SHOW ssl_key_file;
SHOW ssl_ca_file;
SHOW ssl_ciphers;
SHOW ssl_min_protocol_version;
-- HighGo特有的安全连接配置
SHOW security_force_ssl;
SHOW security_ssl_crl_check;
# 检查网络监听
netstat-tulnp|grep$(pgrep -f"postgres.*highgo"|head-1)|head-10
ss -tulnp|grep :5866 # HighGo默认端口5866(PostgreSQL为5432)
# 检查防火墙规则
iptables -L-n|grep5866
firewall-cmd --list-all |grep58662>/dev/null
# 查看连接加密状态
psql -c"SELECT * FROM pg_stat_ssl;"2>/dev/null ||echo"无法查询SSL统计"
2.3 对象级访问控制
-- 查看数据库级权限
\l+
SELECT datname, datacl FROM pg_database WHERE datname NOTIN('template0','template1');
-- 查看模式级权限
\dn+
SELECT nspname, nspacl FROM pg_namespace WHERE nspname NOTIN('pg_catalog','information_schema','pg_toast');
-- 查看表级权限(检查public过度授权)
\dp
SELECT*FROM information_schema.table_privileges
WHERE is_grantable ='YES'
AND grantee ='public';
-- 查看列级权限
SELECT*FROM information_schema.column_privileges LIMIT20;
-- 查看函数执行权限
SELECT*FROM information_schema.routine_privileges LIMIT20;
三、安全审计(8.1.4.3)
3.1 审计配置与日志
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 审计开关 | SHOW logging_collector; | on |
| 审计级别 | SHOW log_statement; | ddl或all |
| 审计日志格式 | SHOW log_line_prefix; | 包含时间、用户、数据库、会话ID |
| 审计内容 | SHOW log_connections; SHOW log_disconnections; | 均为on |
HighGo审计核查:
-- 查看日志基础配置
SHOW logging_collector;
SHOW log_destination;
SHOW log_directory;
SHOW log_filename;
SHOW log_rotation_age;
SHOW log_rotation_size;
-- 查看审计级别配置
SHOW log_statement;-- none, ddl, mod, all
SHOW log_min_messages;
SHOW log_min_error_statement;
-- HighGo特有的安全审计配置
SHOW security_audit.enable;
SHOW security_audit.type;-- 审计类型:DDL/DML/CONNECT/ALL等
SHOW security_audit.level;
SHOW security_audit.row_limit;-- 审计日志行数限制
-- 查看审计日志表(HighGo特有)
SELECT*FROM hg_audit_log ORDERBY audit_time DESCLIMIT20;
-- 查看DDL审计
SELECT*FROM hg_audit_ddl ORDERBY audit_time DESCLIMIT20;
-- 查看DML审计(如启用)
SELECT*FROM hg_audit_dml ORDERBY audit_time DESCLIMIT20;
-- 查看登录审计
SELECT*FROM hg_audit_session ORDERBY login_time DESCLIMIT20;
-- 查看审计策略配置
SELECT*FROM hg_audit_policy;
# 查看审计日志文件
ls-la$PGDATA/log/
ls-la /var/log/highgo/ 2>/dev/null
# 查看最新审计日志
tail-50$PGDATA/log/postgresql-$(date +%Y-%m-%d).log 2>/dev/null ||\
tail-50 /var/log/highgo/hgdb-$(date +%Y%m%d).log 2>/dev/null
# 查看HighGo特有的审计日志
tail-50$PGDATA/log/hg_audit_$(date +%Y%m%d).log 2>/dev/null
# 检查审计日志轮转
ls-lt$PGDATA/log/*.log |head-10
# 检查审计日志保留(应≥6个月)
find$PGDATA/log -name"*.log"-mtime +180 |wc-l
3.2 审计策略与合规
-- 查看审计对象配置
SELECT*FROM hg_audit_object;
-- 查看审计用户配置
SELECT*FROM hg_audit_user;
-- 查看审计规则详细配置
SELECT*FROM pg_audit_rules;-- 如果存在
-- 查询特定用户的审计记录
SELECT*FROM hg_audit_log WHERE username ='app_user'ORDERBY audit_time DESCLIMIT20;
-- 查询特定表的审计记录
SELECT*FROM hg_audit_dml WHERE object_name ='sensitive_table'ORDERBY audit_time DESCLIMIT20;
-- 审计日志分析(登录失败)
SELECT*FROM hg_audit_session WHERE logout_type ='abnormal'ORDERBY login_time DESCLIMIT20;
-- 审计日志分析(权限变更)
SELECT*FROM hg_audit_ddl WHERE sql_text LIKE'%GRANT%'OR sql_text LIKE'%REVOKE%'ORDERBY audit_time DESCLIMIT20;
四、入侵防范(8.1.4.4)
4.1 数据库加固与漏洞修复
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 版本检查 | SELECT hgdb_version(); | 使用最新稳定版,无已知CVE |
| 安全补丁 | SELECT * FROM pg_available_extensions WHERE name LIKE 'hg%'; | 扩展组件为最新 |
| 危险函数限制 | SHOW shared_preload_libraries; | 加载安全模块 |
| 参数安全 | SHOW allow_system_table_mods; | off |
HighGo加固核查:
-- 查看HighGo详细版本
SELECT version();
SELECT hgdb_version();
SELECT hgdb_edition();-- 企业版/标准版/安全版
-- 查看已安装的扩展(检查安全相关)
SELECT*FROM pg_available_extensions WHERE name LIKE'hg%'OR name LIKE'security%';
SELECT*FROM pg_extension WHERE extname LIKE'hg%';
-- HighGo特有安全扩展
SHOW shared_preload_libraries;
-- 应包含:hg_passwordcheck, hg_audit, hg_row_level_security, hg_mac等
-- 检查危险参数
SHOW allow_system_table_mods;-- 应为off
SHOW ignore_system_indexes;-- 应为off
SHOW allow_in_place_tablespaces;-- 应为off
-- 检查文件访问参数
SHOW allow_copy_from_program;-- 应为off或受限
-- 检查外部表和dblink
SHOW hg_fdw.enable_pushdown;-- 外部数据包装器
-- 查看预加载的安全库
SHOW shared_preload_libraries;
-- 应包含: hg_passwordcheck, hg_audit, hg_security等
# 检查HighGo进程(确认无异常参数)
ps aux |grep"postgres.*highgo"|grep-vgrep|head-3
# 检查监听端口(默认5866)
ss -tulnp|grep :5866
# 检查已知漏洞版本
HIGHGO_VER=$(psql -c"SELECT hgdb_version();"-t2>/dev/null |tr-d' ')
echo"HighGo版本: $HIGHGO_VER"
# 检查数据校验(防止静默损坏)
psql -c"SELECT pg_database.datname, pg_database.datallowconn FROM pg_database;"2>/dev/null
4.2 加密与数据保护
-- 查看透明数据加密(TDE)配置
SHOW security_tde.enable;
SELECT*FROM pg_tablespace WHERE spcoptions::textLIKE'%encrypt%';
-- 查看列级加密配置
SELECT*FROM information_schema.columns
WHERE column_default LIKE'%encrypt%'OR column_default LIKE'%hg_crypt%';
-- 查看SSL强制配置
SHOW security_force_ssl;
SELECT*FROM pg_stat_ssl;
-- 查看密钥管理配置
SHOW security_key_management;
SHOW security_hsm.enable;-- 硬件安全模块
-- HighGo特有的国密支持
SHOW security_sm2.enable;
SHOW security_sm3.enable;
SHOW security_sm4.enable;
4.3 资源限制与防护
-- 查看资源限制配置
SHOW work_mem;
SHOW maintenance_work_mem;
SHOW shared_buffers;
SHOW effective_cache_size;
SHOW max_connections;
-- HighGo特有的资源控制
SHOW hg_resource_limit.enable;
SHOW hg_resource_limit.memory;-- 内存限制
SHOW hg_resource_limit.cpu;-- CPU限制
SHOW hg_resource_limit.iops;-- IOPS限制
-- 查看查询超时(防止慢查询攻击)
SHOW statement_timeout;
SHOW lock_timeout;
SHOW idle_in_transaction_session_timeout;
-- 查看连接池配置(如使用pgbouncer或HighGo连接池)
SHOW max_prepared_transactions;
SHOW reserved_connections;-- 管理员保留连接
五、恶意代码防范(8.1.4.5)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 外部表限制 | SHOW allow_copy_from_program; | off |
| 存储过程安全 | SELECT * FROM pg_language WHERE lanpltrusted = 'f'; | 非信任语言受控 |
| 文件访问审计 | SELECT * FROM hg_audit_log WHERE sql_text LIKE '%COPY%'; | 监控文件操作 |
| 数据完整性 | SELECT * FROM pg_extension WHERE extname = 'hg_integrity'; | 启用完整性保护 |
恶意代码防范核查:
-- 检查COPY FROM PROGRAM限制(防止命令执行)
SHOW allow_copy_from_program;
-- 检查文件访问函数
SELECT proname, proargtypes FROM pg_proc
WHERE proname IN('pg_read_file','pg_read_binary_file','pg_ls_dir');
-- 检查超级用户执行的文件操作
SELECT*FROM hg_audit_log
WHERE sql_text LIKE'%COPY%'
OR sql_text LIKE'%pg_read_file%'
OR sql_text LIKE'%lo_import%'
ORDERBY audit_time DESCLIMIT20;
-- 检查大对象(LOB)使用(可能存储恶意代码)
SELECTcount(*)FROM pg_largeobject;
SELECTcount(*)FROM pg_largeobject_metadata;
-- 检查非信任语言(PL/Python, PL/Perl等)
SELECT*FROM pg_language WHERE lanpltrusted ='f'OR lanpltrusted ISNULL;
-- 检查扩展安全性
SELECT*FROM pg_available_extensions
WHERE name IN('plpython3u','plperlu','plsh','file_fdw')
AND installed_version ISNOTNULL;
-- 检查外部表和FDW(文件系统访问)
SELECT*FROM information_schema.foreign_tables;
SELECT*FROM pg_foreign_server;
六、可信验证(8.1.4.6)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 安装包签名 | rpm -V highgodb 或 dpkg -V highgodb | 无文件被篡改 |
| 数据文件校验 | hg_controldata $PGDATA | 控制文件完整 |
| 配置基线 | sha256sum $PGDATA/postgresql.conf | 基线比对 |
可信验证核查:
# 验证RPM包完整性(RHEL/CentOS/麒麟/统信)
rpm-V highgodb-server highgodb-contrib 2>/dev/null ||echo"RPM验证失败"
# 验证DEB包完整性(Ubuntu/Debian/麒麟/统信)
dpkg -V highgodb-14 2>/dev/null || debsums -s highgodb 2>/dev/null ||echo"DEB验证失败"
# 查看控制文件(验证数据目录完整性)
$HGHOME/bin/hg_controldata $PGDATA2>/dev/null || pg_controldata $PGDATA2>/dev/null |head-20
# 计算核心文件哈希
sha256sum $HGHOME/bin/postgres 2>/dev/null || sha256sum /usr/bin/highgo 2>/dev/null
# 配置文件基线
sha256sum $PGDATA/postgresql.conf > /tmp/highgo_config.baseline 2>/dev/null
# 定期比对:diff <(sha256sum $PGDATA/postgresql.conf) /tmp/highgo_config.baseline
# 验证数据文件校验和(如启用数据校验)
psql -c"SHOW data_checksums;"2>/dev/null
# 运行数据校验
$HGHOME/bin/hg_checksums $PGDATA2>/dev/null ||echo"校验工具未找到"
七、数据备份与恢复(8.1.4.9)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 物理备份 | hg_basebackup -D /backup/... | 定期全量备份 |
| 逻辑备份 | hg_dumpall > /backup/... | 定期逻辑导出 |
| 归档日志 | SHOW archive_mode; | on,保留≥6个月 |
| 备份验证 | hg_verifybackup | 定期验证备份完整性 |
备份与恢复核查:
# 查看备份脚本
cat /etc/cron.d/highgo-backup 2>/dev/null ||crontab-l|grep highgo
# 检查归档配置
psql -c"SHOW archive_mode;"2>/dev/null
psql -c"SHOW archive_command;"2>/dev/null
psql -c"SHOW archive_timeout;"2>/dev/null
# 查看WAL归档文件
ls-la$PGDATA/pg_wal/ |head-10
ls-la$PGDATA/archive/ 2>/dev/null |head-10
# 手动执行基础备份
$HGHOME/bin/hg_basebackup -D /backup/highgo/base-$(date +%F)-Ft-z-P-v2>/dev/null ||\
pg_basebackup -D /backup/highgo/base-$(date +%F)-Ft-z-P-v
# 逻辑备份
$HGHOME/bin/hg_dumpall -f /backup/highgo/full-$(date +%F).sql 2>/dev/null ||\
pg_dumpall -f /backup/highgo/full-$(date +%F).sql
# 查看备份目录
ls-la /backup/highgo/ 2>/dev/null ||echo"备份目录不存在"
# 验证备份(HighGo特有)
$HGHOME/bin/hg_verifybackup /backup/highgo/base-$(date +%F)2>/dev/null ||echo"验证工具未找到"
# 检查PITR(时间点恢复)配置
psql -c"SHOW recovery_target_timeline;"2>/dev/null
psql -c"SHOW restore_command;"2>/dev/null
八、高可用与灾备(扩展)
8.1 流复制与HA
-- 查看流复制状态(如配置HA)
SELECT*FROM pg_stat_replication;
SELECT*FROM pg_stat_wal_receiver;
-- 查看复制槽
SELECT*FROM pg_replication_slots;
-- 查看同步提交配置
SHOW synchronous_commit;
SHOW synchronous_standby_names;
-- HighGo特有的HA配置
SHOW hg_ha.enable;
SELECT*FROM hg_ha_status;-- HighGo HA状态视图
8.2 分布式与分片(如使用)
-- 查看分布式配置(HighGo Sharding)
SHOW hg_shard.enable;
SELECT*FROM hg_shard_nodes;
SELECT*FROM hg_shard_groups;
-- 查看分布式执行计划
EXPLAIN(VERBOSE, COSTS)SELECT*FROM distributed_table;
一键巡检脚本(HighGo Database)
#!/bin/bash
# HighGo Database 等保三级一键巡检脚本
# 适用:HighGo 4.x/5.x/6.x
# 执行用户:highgo或root
exportPGDATA=${PGDATA:-/var/lib/highgo/data}
exportHGHOME=${HGHOME:-/opt/highgo}
exportPATH=$HGHOME/bin:$PATH
echo"===== HighGo Database 等保巡检报告 ====="
echo"巡检时间: $(date'+%Y-%m-%d %H:%M:%S')"
echo"服务器: $(hostname)"
echo"PGDATA: $PGDATA"
echo""
echo"===== 1 身份鉴别 ====="
echo"--- 版本信息 ---"
psql -c"SELECT version();"-t2>/dev/null |head-3
echo"--- 超级用户检查 ---"
psql -c"SELECT rolname FROM pg_roles WHERE rolsuper='t';"-t2>/dev/null
echo"--- 三权分立检查 ---"
psql -c"SELECT rolname, CASE rolname WHEN 'syssao' THEN '安全管理员' WHEN 'syssso' THEN '审计管理员' WHEN 'sysdao' THEN '数据管理员' ELSE '其他' END FROM pg_roles WHERE rolname IN ('syssao', 'syssso', 'sysdao');"-t2>/dev/null
echo"--- 密码策略 ---"
psql -c"SHOW passwordcheck.enable;"-t2>/dev/null
psql -c"SHOW password_encryption;"-t2>/dev/null
echo""
echo"===== 2 访问控制 ====="
echo"--- 数据目录权限 ---"
stat-c'%a %U:%G'$PGDATA/ 2>/dev/null
echo"--- 配置文件权限 ---"
stat-c'%a %U:%G'$PGDATA/postgresql.conf 2>/dev/null
stat-c'%a %U:%G'$PGDATA/pg_hba.conf 2>/dev/null
echo"--- 网络监听 ---"
ss -tulnp|grep :5866 2>/dev/null ||echo"未监听5866端口"
echo"--- SSL配置 ---"
psql -c"SHOW ssl;"-t2>/dev/null
echo""
echo"===== 3 安全审计 ====="
echo"--- 审计配置 ---"
psql -c"SHOW logging_collector;"-t2>/dev/null
psql -c"SHOW security_audit.enable;"-t2>/dev/null
echo"--- 审计日志 ---"
ls-la$PGDATA/log/ 2>/dev/null |head-3
ls-la /var/log/highgo/ 2>/dev/null |head-3||echo"审计日志目录不存在"
echo""
echo"===== 4 入侵防范 ====="
echo"--- 安全参数 ---"
psql -c"SHOW allow_system_table_mods;"-t2>/dev/null
psql -c"SHOW security_tde.enable;"-t2>/dev/null
echo"--- 扩展检查 ---"
psql -c"SELECT extname FROM pg_extension WHERE extname LIKE 'hg%';"-t2>/dev/null
echo""
echo"===== 5 数据备份 ====="
echo"--- 归档配置 ---"
psql -c"SHOW archive_mode;"-t2>/dev/null
echo"--- 备份目录 ---"
ls-la /backup/highgo/ 2>/dev/null |head-5||echo"备份目录不存在"
echo""
echo"===== 6 高风险项检查 ====="
RISKS=0
# 检查1: 初始用户未修改
if psql -c"SELECT 1 FROM pg_roles WHERE rolname='syssao' AND rolpasswordexpired='f';"-t2>/dev/null |grep-q1;then
echo"⚠ 中风险: syssao用户密码可能未过期(需确认是否已修改初始密码)"
fi
# 检查2: 无密码复杂度
if! psql -c"SHOW passwordcheck.enable;"-t2>/dev/null |grep-q'on';then
echo"✗ 高风险: 未启用密码复杂度检查"
((RISKS++))
fi
# 检查3: 无审计
if! psql -c"SHOW security_audit.enable;"-t2>/dev/null |grep-q'on';then
echo"✗ 高风险: 未启用HighGo安全审计"
((RISKS++))
fi
# 检查4: 目录权限过宽
PERMS=$(stat-c'%a' $PGDATA/ 2>/dev/null)
if["$PERMS"!="700"];then
echo"⚠ 中风险: 数据目录权限不为700(当前: $PERMS)"
fi
# 检查5: 无SSL
if! psql -c"SHOW ssl;"-t2>/dev/null |grep-q'on';then
echo"⚠ 中风险: SSL未启用"
fi
if["$RISKS"-eq0];then
echo"未发现高风险项 ✓"
else
echo"发现 $RISKS 项高风险,请立即整改"
fi
echo""
echo"===== 巡检完成 ====="
高风险项重点核查清单
| 检查项 | 验证命令 | 不合规判定 | 整改建议 |
|---|---|---|---|
| 初始安全用户未修改密码 | SELECT * FROM pg_roles WHERE rolname='syssao' | 使用初始密码 | 立即修改syssao/syssso/sysdao密码 |
| 未启用三权分立 | \du 检查角色分离 | 无三权分立角色 | 创建并使用syssao/syssso/sysdao |
| 未启用密码复杂度 | SHOW passwordcheck.enable; | off | 配置hg_passwordcheck扩展 |
| 未启用安全审计 | SHOW security_audit.enable; | off | 启用HighGo审计功能 |
| public角色过度授权 | \dp 检查public权限 | public拥有业务表权限 | REVOKE public权限 |
| 未配置SSL | SHOW ssl; | off | 配置SSL证书并强制启用 |
| 数据目录权限过宽 | ls -la $PGDATA | 非700权限 | chmod 700 $PGDATA |
| 未启用归档 | SHOW archive_mode; | off | 启用WAL归档 |
| allow_system_table_mods为on | SHOW allow_system_table_mods; | on | 设置为off |
| 未配置行级安全 | SHOW security_enable_row_level_security; | off(需要时) | 对敏感表启用RLS |
HighGo与PostgreSQL差异对照
| 功能项 | PostgreSQL 14 | HighGo Database 4.x | HighGo Database 5.x/6.x |
|---|---|---|---|
| 默认端口 | 5432 | 5866 | 5866 |
| 三权分立 | 无 | 基础(syssao/ssso/sdao) | 完善(+安全版特性) |
| 国密算法 | 无 | SM2/SM3/SM4支持 | 完整国密支持 |
| 透明加密(TDE) | 无 | 表空间级加密 | 列级+表空间级加密 |
| 行级安全 | 基础RLS | 增强RLS | 强制RLS策略 |
| 审计功能 | pgaudit扩展 | 内置hg_audit | 增强审计+报表 |
| 等保合规 | 需大量配置 | 基础合规 | 完整合规(安全版) |
| 自主可控 | 开源 | 国产可控 | 国产可控+信创认证 |
测评执行要点
1. 权限要求
- 所有命令需
highgo用户或root执行 - 三权分立角色(syssao/syssso/sysdao)需分别验证权限边界
2. 现场核查重点
- 三权分立验证:安全管理员(syssao)不能查看审计日志,审计管理员(syssso)不能管理用户,数据管理员(sysdao)只能管理对象
- 国密支持:检查是否启用SM2/SM3/SM4算法替代国际算法
- 透明加密:验证TDE是否启用,密钥管理是否合规
- 审计完整性:HighGo审计日志不可删除或修改,需验证防篡改机制
3. 版本差异注意
- HighGo 4.x:基于PostgreSQL 10/11,基础三权分立
- HighGo 5.x:基于PostgreSQL 12/13,完善国密支持
- HighGo 6.x/安全版:基于PostgreSQL 14+,完整等保和信创合规
常用命令速查
-- 连接与基本信息
psql -U syssao -d highgo -p 5866
\conninfo -- 显示连接信息
\l -- 列出数据库
\c database_name -- 切换数据库
\dt -- 列出表
\d table_name -- 查看表结构
-- 用户与权限
\du -- 列出角色
\dp -- 列出权限
\z table_name -- 查看表权限
-- HighGo特有命令
SELECT hgdb_version();-- HighGo版本
SELECT hgdb_edition();-- 版本类型(企业版/标准版/安全版)
SELECT*FROM hg_ha_status;-- HA状态
SELECT*FROM hg_audit_log ORDERBY audit_time DESCLIMIT10;-- 审计日志
-- 配置管理
SHOWALL;-- 显示所有参数
SHOW config_file;-- 配置文件位置
SELECT pg_reload_conf();-- 重新加载配置
-- 备份恢复
SELECT pg_start_backup('label');-- 开始备份
SELECT pg_stop_backup();-- 停止备份
SELECT pg_switch_wal();-- 切换WAL
-- 监控诊断
SELECT*FROM pg_stat_activity;-- 活动会话
SELECT*FROM pg_stat_database;-- 数据库统计
SELECT*FROM pg_stat_user_tables;-- 表统计
参考标准:GB/T 22239-2019、GB/T 28448-2019、GM/T 0054-2018《信息系统密码应用基本要求》、HighGo Database安全管理员指南、PostgreSQL Security Guide
适用版本:HighGo Database 4.3.4+ / 5.0.8+ / 6.0.2+
验证环境:Standalone / HA / 分布式 / 信创环境(麒麟/统信/欧拉)
声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/6691.html