各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言,我会以最快速度给你们总结,然后发出来!
依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合神州数据库官方安全指南及现场测评实践。
适用版本:ShenzhouDB V2.0 / V3.0 / V4.0(基于PostgreSQL 11/12/14深度定制)
一、身份鉴别(8.1.4.1)
1.1 数据库账户与口令策略
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 超级管理员账户 | szsql -U szadmin -c "SELECT * FROM pg_user WHERE usesysid=10;" | szadmin账户受控 |
| 空口令检查 | szsql -U szadmin -c "SELECT usename FROM pg_user WHERE passwd IS NULL;" | 无输出 |
| 弱口令检查 | szsql -U szadmin -c "SELECT usename FROM pg_shadow WHERE passwd LIKE '%md5%' AND length(passwd)<35;" | 无输出 |
| 密码复杂度 | szsql -U szadmin -c "SHOW passwordcheck.enable;" | on |
| 密码有效期 | szsql -U szadmin -c "SELECT usename, valuntil FROM pg_shadow WHERE valuntil IS NOT NULL;" | ≤90天 |
| 密码历史 | szsql -U szadmin -c "SHOW sz_password_reuse_max;" | ≥5次 |
| 登录失败锁定 | szsql -U szadmin -c "SHOW sz_login_lock_max_failed;" | ≤5次 |
| 锁定时间 | szsql -U szadmin -c "SHOW sz_login_lock_duration;" | ≥30分钟 |
神州数据库特有配置:
# 连接数据库(需先切换到szuser用户或配置环境变量)
su - szuser
szsql -U szadmin -d szdb -W
# 查看所有用户及状态
SELECT usename, usesuper, usecreatedb, valuntil,
CASE WHEN passwd LIKE 'md5%' THEN 'md5'
WHEN passwd LIKE 'SCRAM-SHA-256%' THEN 'scram-sha-256'
ELSE '其他' END as pwd_type,
passwd IS NULL as is_empty
FROM pg_user;
# 查看密码策略详细配置(神州特有插件)
SHOW passwordcheck;
SHOW passwordcheck.min_length; -- 最小长度≥8
SHOW passwordcheck.min_upper; -- 大写字母≥1
SHOW passwordcheck.min_lower; -- 小写字母≥1
SHOW passwordcheck.min_digit; -- 数字≥1
SHOW passwordcheck.min_special; -- 特殊字符≥1
# 查看神州数据库特有安全参数
SHOW sz_security;
SHOW sz_login_lock; -- 登录失败锁定开关
SHOW sz_login_lock_max_failed; -- 最大失败次数(默认5)
SHOW sz_login_lock_duration; -- 锁定时间(秒,默认1800)
SHOW sz_login_lock_auto_unlock; -- 是否自动解锁
# 查看被锁定的用户(神州特有视图)
SELECT * FROM sz_login_lock_status WHERE is_locked =true;
# 查看用户密码过期信息
SELECT usename,
CASE WHEN valuntil < NOW() THEN '已过期'
WHEN valuntil < NOW() + INTERVAL '7 days' THEN '即将过期'
ELSE '正常' END as pwd_status,
valuntil as expire_time
FROM pg_shadow
WHERE valuntil IS NOT NULL;
1.2 远程管理与连接控制
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 监听地址 | cat ${SZDATA}/postgresql.conf | grep listen_addresses | 非’*’或限定IP |
| 端口检查 | ss -tulnp | grep 5432 | 默认5432,可修改 |
| SSL连接 | szsql -U szadmin -c "SHOW ssl;" | on |
| 国密SSL | szsql -U szadmin -c "SHOW sz_ssl_gm;" | on(神州特有) |
| 客户端证书 | ls -la ${SZDATA}/server.crt | 存在且权限600 |
| 最大连接数 | szsql -U szadmin -c "SHOW max_connections;" | 根据业务配置 |
神州数据库特有配置:
# 查看数据库监听配置
cat${SZDATA}/postgresql.conf |grep-E'listen_addresses|port|ssl'
# 查看SSL详细配置
SHOW ssl_cert_file; -- 证书路径
SHOW ssl_key_file; -- 私钥路径
SHOW ssl_ca_file; -- CA证书
SHOW ssl_crl_file; -- 吊销列表
SHOW ssl_ciphers; -- 加密算法
# 查看神州数据库国密SSL配置(V3.0+支持)
SHOW sz_ssl_gm; -- 国密SSL开关
SHOW sz_ssl_gm_cert_file; -- 国密证书
SHOW sz_ssl_gm_key_file; -- 国密私钥
SHOW sz_ssl_gm_ciphers; -- 国密算法套件(SM2/SM3/SM4)
# 查看当前连接情况
SELECT client_addr, usename, state, backend_start, query_start,
ssl, ssl_version, ssl_cipher, ssl_client_dn
FROM pg_stat_activity
WHERE client_addr IS NOT NULL;
# 查看认证配置文件(神州数据库支持pg_hba.conf扩展)
cat${SZDATA}/pg_hba.conf
# 核查要点:
# - 拒绝trust认证方式
# - 拒绝host all all 0.0.0.0/0 md5
# - 采用hostssl强制SSL连接
# - 优先使用scram-sha-256认证
# 查看神州数据库扩展认证方式
cat${SZDATA}/sz_hba.conf 2>/dev/null # 神州特有扩展认证配置
1.3 双因子认证(高风险项)
# 检查是否启用证书认证
cat${SZDATA}/pg_hba.conf |grep cert
cat${SZDATA}/sz_hba.conf 2>/dev/null |grep cert
# 检查是否集成外部认证(LDAP/RADIUS/AD)
SHOW ldapserver; -- LDAP服务器
SHOW ldapport; -- LDAP端口
SHOW ldapbasedn; -- LDAP基础DN
# 检查RADIUS认证配置(神州特有)
SHOW sz_radius_server;
SHOW sz_radius_secret;
SHOW sz_radius_port;
# 检查国密证书认证(神州特有)
SHOW sz_gm_cert_auth;
cat${SZDATA}/sz_cert.conf 2>/dev/null # 国密证书映射配置
# 检查审计是否记录认证事件
SHOW log_connections;
SHOW log_disconnections;
SHOW sz_audit_log_auth; -- 神州特有认证审计开关
二、访问控制(8.1.4.2)
2.1 账户权限管理
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 超级用户数量 | szsql -U szadmin -c "SELECT usename FROM pg_user WHERE usesuper='t';" | ≤2个 |
| 默认账户处理 | szsql -U szadmin -c "SELECT usename FROM pg_user WHERE usename IN ('szadmin', 'szuser', 'postgres');" | 已修改默认口令 |
| 角色分离 | szsql -U szadmin -c "SELECT rolname FROM pg_roles;" | 存在安全管理员、审计管理员 |
| 权限授予 | szsql -U szadmin -c "\dp *.*" | 最小权限原则 |
神州数据库特有配置:
# 查看三权分立配置(神州数据库核心安全特性)
SHOW sz_sepofpowers; -- 是否启用三权分立
# 查看安全管理员(szsso)配置
szsql -U szsso -c"SELECT current_user;"
# 查看审计管理员(szsao)配置
szsql -U szsao -c"SELECT current_user;"
# 查看系统管理员(szadmin)权限限制
-- 启用三权分立后,szadmin不能查看审计日志,不能修改安全策略
# 查看所有角色及成员关系
SELECT r.rolname, r.rolsuper, r.rolinherit,
ARRAY(SELECT b.rolname
FROM pg_catalog.pg_auth_members m
JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
WHERE m.member = r.oid) as memberof
FROM pg_catalog.pg_roles r
WHERE r.rolname !~ '^pg_';
# 查看对象权限详情
SELECT grantor, grantee, table_schema, table_name, privilege_type
FROM information_schema.table_privileges
WHERE grantee NOT IN ('PUBLIC', 'szadmin');
# 检查PUBLIC角色权限(应回收PUBLIC对敏感表的权限)
SELECT * FROM information_schema.table_privileges WHERE grantee='PUBLIC';
# 查看神州数据库特有安全角色
SELECT rolname FROM pg_roles WHERE rolname LIKE 'sz_%';
-- sz_security_admin: 安全管理员角色
-- sz_audit_admin: 审计管理员角色
-- sz_backup_admin: 备份管理员角色
2.2 敏感数据访问控制
# 查看行级安全策略(RLS)配置
SELECT schemaname, tablename, rowsecurity FROM pg_tables WHERE rowsecurity=true;
# 查看具体RLS策略
SELECT * FROM pg_policies;
# 查看列级加密配置(神州数据库特有透明加密)
SHOW sz_transparent_encrypt;
SHOW sz_transparent_encrypt_kms_url; -- 密钥管理服务URL
SHOW sz_transparent_encrypt_algorithm; -- 加密算法(SM4/AES256)
# 查看加密表空间
SELECT spcname, spcencrypt FROM pg_tablespace WHERE spcencrypt =true;
# 查看数据脱敏配置(神州数据库特有动态脱敏)
SELECT * FROM sz_redaction_policies;
SELECT * FROM sz_redaction_columns;
# 查看脱敏策略详情
SELECT policy_name, table_name, column_name, function_type, expression
FROM sz_redaction_policies sp
JOIN sz_redaction_columns sc ON sp.policy_id = sc.policy_id;
三、安全审计(8.1.4.3)
3.1 审计服务启用
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 审计开关 | szsql -U szsao -c "SHOW sz_audit.enable;" | on |
| 审计模式 | szsql -U szsao -c "SHOW sz_audit.mode;" | all或std |
| 审计日志路径 | szsql -U szsao -c "SHOW sz_audit.log_directory;" | 非数据目录,独立磁盘 |
| 审计日志格式 | szsql -U szsao -c "SHOW sz_audit.log_format;" | csv或json |
| 审计日志保留 | szsql -U szsao -c "SHOW sz_audit.log_rotation_age;" | ≥6个月 |
神州数据库特有配置:
# 查看神州数据库审计总开关(需用szsao登录)
SHOW sz_audit;
# 查看审计详细配置
SHOW sz_audit.log; -- 审计日志总开关
SHOW sz_audit.log_catalog; -- 是否审计系统表
SHOW sz_audit.log_level; -- 审计级别(DEBUG/INFO/WARNING/ERROR)
SHOW sz_audit.log_connections; -- 审计连接
SHOW sz_audit.log_disconnections; -- 审计断开
SHOW sz_audit.log_ddl; -- 审计DDL
SHOW sz_audit.log_dml; -- 审计DML
SHOW sz_audit.log_select; -- 审计查询
SHOW sz_audit.log_parameter; -- 审计参数
SHOW sz_audit.log_statement_once; -- 是否单次记录
# 查看神州数据库特有审计功能
SHOW sz_audit_log_admin; -- 审计管理员操作
SHOW sz_audit_log_security; -- 审计安全操作
SHOW sz_audit_log_privilege; -- 审计权限变更
SHOW sz_audit_log_object; -- 审计对象访问
# 查看审计规则(精细化审计)
SELECT * FROM sz_audit_rules;
# 查看审计对象配置
SELECT * FROM sz_audit_objects;
# 查看审计用户配置
SELECT * FROM sz_audit_users;
# 查看审计日志文件
ls-la${SZDATA}/sz_audit/ 2>/dev/null ||ls-la /var/lib/shenzoudb/sz_audit/
# 查看审计日志内容(CSV格式)
head-5${SZDATA}/sz_audit/szaudit-*.csv 2>/dev/null
# 查看审计日志大小
du-sh${SZDATA}/sz_audit/ 2>/dev/null
# 查看审计表空间(应独立表空间)
SELECT spcname FROM pg_tablespace WHERE spcname='sz_audit';
3.2 审计记录保护
# 检查审计日志权限
ls-la${SZDATA}/sz_audit/szaudit-*.csv 2>/dev/null
# 应:640 szuser:szuser
# 检查审计日志是否定期归档
crontab-l|grep sz_audit
ls /backup/shenzoudb/audit/ 2>/dev/null
# 查看审计日志自动清理配置
SHOW sz_audit.log_truncate_on_rotation;
SHOW sz_audit.log_rotation_age;
SHOW sz_audit.log_rotation_size;
# 检查审计管理员权限(仅能查询审计日志,不能修改审计配置)
szsql -U szsao -c"SELECT * FROM sz_audit_log LIMIT 5;"
szsql -U szsao -c"ALTER SYSTEM SET sz_audit.enable = off;"# 应失败
# 查看审计日志完整性校验(神州特有)
SELECT sz_audit_verify_log('${SZDATA}/sz_audit/szaudit-20240101.csv')2>/dev/null;
四、入侵防范(8.1.4.4)
4.1 数据库加固与漏洞修复
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 版本补丁 | szsql -U szadmin -c "SELECT version();" | 最新稳定版本 |
| 危险函数 | szsql -U szadmin -c "SELECT proname FROM pg_proc WHERE proname IN ('pg_read_file', 'pg_ls_dir', 'copy_from_program');" | 已回收权限 |
| 扩展插件 | szsql -U szadmin -c "SELECT * FROM pg_extension;" | 仅安装可信扩展 |
| 外部表 | szsql -U szadmin -c "SELECT * FROM pg_foreign_data_wrapper;" | 受控使用 |
神州数据库特有配置:
# 查看数据库版本及补丁
SELECT version();
SHOW server_version;
SHOW server_version_num;
# 查看神州数据库版本信息
SELECT * FROM sz_version();
SELECT sz_db_version();
# 检查危险存储过程
SELECT proname, prosrc, prosecdef
FROM pg_proc
WHERE proname IN ('pg_read_file', 'pg_read_binary_file', 'pg_ls_dir',
'pg_database_size', 'pg_relation_size', 'pg_size_pretty')
AND prosecdef =true;
# 检查COPY PROGRAM权限(高危命令)
SHOW allow_system_table_mods; -- 应为off
# 检查外部数据封装器
SELECT fdwname, fdwowner::regrole, fdwoptions FROM pg_foreign_data_wrapper;
# 检查dblink和file_fdw(可能用于越权访问)
SELECT * FROM pg_extension WHERE extname IN ('dblink', 'file_fdw', 'postgres_fdw');
# 查看神州数据库安全扩展
SELECT * FROM pg_extension WHERE extname LIKE 'sz_%';
-- sz_passwordcheck: 密码复杂度检查
-- sz_audit: 审计功能
-- sz_encrypt: 透明加密
-- sz_redaction: 动态脱敏
-- sz_rls: 行级安全增强
# 检查自定义函数安全性
SELECT n.nspname, p.proname, p.prosecdef, p.proowner::regrole
FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
AND p.prosecdef =true; -- 安全定义者函数需重点审查
# 检查神州数据库安全加固参数
SHOW sz_security_hardening; -- 安全加固总开关
SHOW sz_disable_load_library; -- 禁止动态加载库
SHOW sz_restrict_copy_program; -- 限制COPY PROGRAM
SHOW sz_restrict_file_functions; -- 限制文件操作函数
4.2 资源限制与防护
# 查看资源限制配置
SHOW max_connections; -- 最大连接数
SHOW superuser_reserved_connections; -- 超级用户保留连接
# 查看用户级资源限制(神州特有)
SELECT rolname, rolconnlimit FROM pg_roles WHERE rolconnlimit >0;
# 查看神州数据库连接池配置
SHOW sz_connection_pool;
SHOW sz_pool_max_size;
SHOW sz_pool_idle_timeout;
# 查看语句超时配置
SHOW statement_timeout; -- 语句执行超时
SHOW lock_timeout; -- 锁等待超时
SHOW idle_in_transaction_session_timeout; -- 事务空闲超时
# 查看并发控制
SHOW max_worker_processes;
SHOW max_parallel_workers;
SHOW max_parallel_workers_per_gather;
# 查看神州数据库特有资源限制
SHOW sz_max_query_time; -- 最大查询时间
SHOW sz_max_rows_returned; -- 最大返回行数限制
SHOW sz_max_temp_files; -- 最大临时文件数
SHOW sz_max_temp_size; -- 最大临时文件大小
五、恶意代码防范(8.1.4.5)
# 检查数据库服务器杀毒软件
systemctl status kav || systemctl status clamav-daemon
# 检查数据库文件完整性校验(神州数据库提供)
${SZHOME}/bin/sz_verify_checksum -D${SZDATA}
# 检查异常SQL模式(审计日志分析)
szsql -U szsao -c"
SELECT substr(query, 1, 50), count(*)
FROM sz_audit_log
WHERE query ~* '(drop|delete|truncate|grant|revoke)'
AND event_time > current_date - interval '7 days'
GROUP BY substr(query, 1, 50)
ORDER BY count(*) DESC;
"
# 检查异常登录行为
szsql -U szsao -c"
SELECT client_addr, usename, count(*) as failed_count
FROM sz_audit_log
WHERE event_type = 'CONNECT' AND result = 'failed'
AND event_time > current_date - interval '1 day'
GROUP BY client_addr, usename
HAVING count(*) > 5;
"
# 检查SQL注入特征
szsql -U szsao -c"
SELECT usename, query, count(*)
FROM sz_audit_log
WHERE query ~* '(\x27|\x22|\x2D\x2D|\x2F\x2A|\x3B|\x27\x20\x6F\x72\x20\x27|\x27\x20\x61\x6E\x64\x20\x27)'
AND event_time > current_date - interval '1 day'
GROUP BY usename, query;
"
六、可信验证(8.1.4.6)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 国密算法支持 | szsql -U szadmin -c "SHOW sz_ssl_gm_ciphers;" | 包含SM2/SM3/SM4 |
| 透明加密 | szsql -U szadmin -c "SHOW sz_transparent_encrypt;" | on |
| 加密算法 | szsql -U szadmin -c "SHOW sz_transparent_encrypt_algorithm;" | SM4或AES256 |
| 完整性保护 | szsql -U szadmin -c "SHOW data_checksums;" | on |
神州数据库特有配置:
# 查看国密支持(神州数据库V3.0+完整支持国密)
SHOW sz_ssl_gm; -- 国密SSL开关
SHOW sz_ssl_gm_cert_file; -- 国密证书
SHOW sz_ssl_gm_key_file; -- 国密私钥
SHOW sz_ssl_gm_ciphers; -- 国密算法套件
# 查看国密算法详情
SELECT * FROM sz_gm_ciphers();
# 查看透明数据加密(TDE)配置
SHOW sz_transparent_encrypt;
SHOW sz_transparent_encrypt_kms_url; -- 密钥管理服务
SHOW sz_transparent_encrypt_algorithm; -- SM4或AES-256-CBC
SHOW sz_transparent_encrypt_key_rotation; -- 密钥轮换周期
# 查看表空间加密状态
SELECT spcname, spcencrypt, spcencalgorithm FROM pg_tablespace WHERE spcencrypt =true;
# 查看SSL证书国密支持
openssl s_client -connect localhost:5432 -starttls postgres 2>/dev/null |grep-i"sm2\|sm3\|sm4"
# 查看数据完整性校验
SHOW data_checksums; -- 数据页校验和
SHOW ignore_checksum_failure; -- 应为off
# 查看配置文件完整性(神州特有)
SELECT sz_verify_file('${SZDATA}/postgresql.conf');
SELECT sz_verify_file('${SZDATA}/pg_hba.conf');
# 查看国密随机数
SELECT sz_gm_random(32); -- 生成32字节国密随机数
七、数据备份与恢复(8.1.4.9)
| 控制项 | 测评命令 | 达标判据 |
|---|---|---|
| 物理备份 | ls -la /backup/shenzoudb/ | 每日全备+增量 |
| 逻辑备份 | ls -la /backup/shenzoudb/dump/ | 每周逻辑备份 |
| 归档日志 | szsql -U szadmin -c "SHOW archive_mode;" | on |
| 备份加密 | sz_dump --help | grep encrypt | 使用加密备份 |
| 恢复测试 | cat /backup/shenzoudb/restore_test.log | 每月恢复演练 |
神州数据库特有配置:
# 查看归档配置
SHOW archive_mode;
SHOW archive_command;
SHOW archive_timeout;
# 查看WAL保留策略
SHOW wal_level; -- replica或logical
SHOW max_wal_size;
SHOW min_wal_size;
# 查看神州数据库备份工具
which sz_basebackup
which sz_dump
which sz_dumpall
which sz_rman # 神州RMAN备份工具(V3.0+)
# 检查RMAN备份配置(如果使用)
cat${SZHOME}/sz_rman/sz_rman.conf 2>/dev/null
# 查看备份计划任务
crontab-l|grep-E'sz_dump|sz_basebackup|sz_rman'
# 检查备份文件权限
ls-la /backup/shenzoudb/
stat-c'%a %U:%G' /backup/shenzoudb/
# 验证备份有效性(检查最近备份文件大小和时间)
find /backup/shenzoudb/ -name"*.backup"-mtime-1-ls
find /backup/shenzoudb/ -name"*.sql"-mtime-7-ls
find /backup/shenzoudb/ -name"*.dmp"-mtime-7-ls
# 检查异地备份
ls /remote_backup/shenzoudb/ 2>/dev/null ||echo"需核查异地备份策略"
# 神州数据库特有备份验证
sz_verify_backup /backup/shenzoudb/latest.backup 2>/dev/null
八、神州数据库特有安全功能
8.1 安全版特性(V3.0+)
# 查看安全版功能开关
SHOW sz_security_edition; -- 是否安全版
SHOW sz_mac; -- 强制访问控制(MAC)
SHOW sz_label_security; -- 标签安全
SHOW sz_database_firewall; -- 数据库防火墙
SHOW sz_intrusion_detection; -- 入侵检测
# 查看强制访问控制策略(MAC)
SELECT * FROM sz_mac_policy;
SELECT * FROM sz_mac_label;
# 查看标签安全配置
SELECT label_name, label_value FROM sz_security_labels;
# 查看数据库防火墙规则
SELECT * FROM sz_db_firewall_rules;
SELECT * FROM sz_db_firewall_whitelist;
SELECT * FROM sz_db_firewall_blacklist;
# 查看SQL注入防护规则
SELECT * FROM sz_sql_injection_rules;
# 查看敏感数据发现
SELECT * FROM sz_sensitive_data_discovery;
8.2 性能与监控
# 查看数据库性能统计
SELECT * FROM pg_stat_database;
# 查看神州数据库性能视图
SELECT * FROM sz_stat_performance;
SELECT * FROM sz_stat_security_events;
# 查看慢查询日志
SHOW log_min_duration_statement; -- 记录超过该值的SQL
SHOW sz_slow_query_log; -- 神州慢查询开关
# 查看锁等待情况
SELECT * FROM pg_locks WHERE NOT granted;
# 查看死锁检测
SHOW deadlock_timeout;
SHOW log_deadlocks;
# 查看神州数据库安全事件
SELECT * FROM sz_security_events WHERE event_time > current_date - interval '1 day';
九、一键巡检脚本(神州数据库)
#!/bin/bash
# 神州数据库(ShenzhouDB)等保三级一键巡检脚本
# 适用:ShenzhouDB V2.0/V3.0/V4.0
exportSZHOME=/opt/ShenzhouDB/4.0
exportSZDATA=/var/lib/shenzoudb/data
exportPATH=$SZHOME/bin:$PATH
echo"===== 神州数据库等保三级巡检 ====="
echo"巡检时间:$(date)"
echo"数据库版本:$(szsql -U szadmin -c 'SELECT version();' 2>/dev/null | head -1)"
echo""
echo"===== 1 身份鉴别 ====="
echo"--- 超级用户检查 ---"
szsql -U szadmin -c"SELECT usename, usesuper FROM pg_user WHERE usesuper='t';"2>/dev/null
echo"--- 密码策略 ---"
szsql -U szadmin -c"SHOW passwordcheck.enable;"2>/dev/null
szsql -U szadmin -c"SHOW passwordcheck.min_length;"2>/dev/null
echo"--- 登录失败锁定 ---"
szsql -U szadmin -c"SHOW sz_login_lock;"2>/dev/null
szsql -U szadmin -c"SHOW sz_login_lock_max_failed;"2>/dev/null
echo"--- 国密SSL配置 ---"
szsql -U szadmin -c"SHOW sz_ssl_gm;"2>/dev/null
szsql -U szadmin -c"SHOW sz_ssl_gm_ciphers;"2>/dev/null |head-3
echo"--- 监听地址 ---"
cat${SZDATA}/postgresql.conf 2>/dev/null |grep listen_addresses |head-1
echo""
echo"===== 2 访问控制 ====="
echo"--- 三权分立 ---"
szsql -U szadmin -c"SHOW sz_sepofpowers;"2>/dev/null
echo"--- 角色列表 ---"
szsql -U szadmin -c"SELECT rolname FROM pg_roles WHERE rolname !~ '^pg_';"2>/dev/null
echo"--- 敏感权限检查 ---"
szsql -U szadmin -c"SELECT grantee, privilege_type FROM information_schema.table_privileges WHERE grantee='PUBLIC' LIMIT 5;"2>/dev/null
echo"--- 行级安全策略 ---"
szsql -U szadmin -c"SELECT tablename, rowsecurity FROM pg_tables WHERE rowsecurity=true;"2>/dev/null
echo""
echo"===== 3 安全审计 ====="
echo"--- 审计开关 ---"
szsql -U szsao -c"SHOW sz_audit.enable;"2>/dev/null
szsql -U szsao -c"SHOW sz_audit.log;"2>/dev/null
echo"--- 审计日志路径 ---"
szsql -U szsao -c"SHOW sz_audit.log_directory;"2>/dev/null
ls-ld$(szsql -U szsao -c"SHOW sz_audit.log_directory;"2>/dev/null |awk'{print $1}')2>/dev/null
echo"--- 审计日志文件 ---"
ls-la${SZDATA}/sz_audit/ 2>/dev/null |head-5||echo"审计日志目录未找到"
echo""
echo"===== 4 入侵防范 ====="
echo"--- 版本信息 ---"
szsql -U szadmin -c"SELECT version();"2>/dev/null |head-1
echo"--- 危险扩展 ---"
szsql -U szadmin -c"SELECT extname FROM pg_extension WHERE extname IN ('dblink', 'file_fdw', 'postgres_fdw');"2>/dev/null
echo"--- 安全加固参数 ---"
szsql -U szadmin -c"SHOW sz_security_hardening;"2>/dev/null
szsql -U szadmin -c"SHOW sz_restrict_copy_program;"2>/dev/null
echo"--- 资源限制 ---"
szsql -U szadmin -c"SHOW max_connections;"2>/dev/null
szsql -U szadmin -c"SHOW statement_timeout;"2>/dev/null
echo""
echo"===== 5 可信验证 ====="
echo"--- 透明加密 ---"
szsql -U szadmin -c"SHOW sz_transparent_encrypt;"2>/dev/null
szsql -U szadmin -c"SHOW sz_transparent_encrypt_algorithm;"2>/dev/null
echo"--- 数据校验 ---"
szsql -U szadmin -c"SHOW data_checksums;"2>/dev/null
echo"--- 国密支持 ---"
szsql -U szadmin -c"SELECT * FROM sz_gm_ciphers();"2>/dev/null |head-5
echo""
echo"===== 6 备份恢复 ====="
echo"--- 归档模式 ---"
szsql -U szadmin -c"SHOW archive_mode;"2>/dev/null
szsql -U szadmin -c"SHOW archive_command;"2>/dev/null
echo"--- 备份文件检查 ---"
ls /backup/shenzoudb/ 2>/dev/null |head-5||echo"备份目录未找到,请核查备份策略"
echo"--- 备份计划任务 ---"
crontab-l2>/dev/null |grep-E'shenzoudb|sz_dump|sz_basebackup'||echo"未找到数据库备份任务"
echo""
echo"===== 7 国密合规(V3.0+) ====="
echo"--- 国密SSL状态 ---"
szsql -U szadmin -c"SHOW sz_ssl_gm;"2>/dev/null
echo"--- 国密算法套件 ---"
szsql -U szadmin -c"SHOW sz_ssl_gm_ciphers;"2>/dev/null
echo"--- 国密证书检查 ---"
ls-la${SZDATA}/*gm* 2>/dev/null |head-3||echo"未找到国密证书文件"
echo""
echo"===== 8 安全版功能(V3.0+) ====="
echo"--- 安全版标识 ---"
szsql -U szadmin -c"SHOW sz_security_edition;"2>/dev/null
echo"--- 强制访问控制 ---"
szsql -U szadmin -c"SELECT count(*) FROM sz_mac_policy;"2>/dev/null
echo"--- 数据库防火墙 ---"
szsql -U szadmin -c"SELECT count(*) FROM sz_db_firewall_rules;"2>/dev/null
echo""
echo"===== 巡检完成 ====="
echo"详细结果请查看上方输出,重点关注以下高风险项:"
echo"1. 默认口令未修改(szadmin/szuser)"
echo"2. 未启用国密SSL(sz_ssl_gm=off)"
echo"3. 未启用三权分立(sz_sepofpowers=off)"
echo"4. 审计未启用(sz_audit.enable=off)"
echo"5. 监听地址为*(listen_addresses='*')"
echo"6. 未启用透明加密(sz_transparent_encrypt=off)"
echo"7. 备份未配置或归档未启用"
十、高风险项重点核查清单
| 检查项 | 验证命令 | 不合规判定 | 整改建议 |
|---|---|---|---|
| 默认口令未修改 | szsql -U szadmin -c "SELECT usename FROM pg_shadow WHERE passwd IS NULL;" | 存在空口令 | 立即修改强口令 |
| 未启用国密SSL | szsql -U szadmin -c "SHOW sz_ssl_gm;" | off | 配置国密证书,启用sz_ssl_gm |
| 未启用三权分立 | szsql -U szadmin -c "SHOW sz_sepofpowers;" | off | 启用szsso/szsao/szadmin三权分立 |
| 监听地址为* | cat ${SZDATA}/postgresql.conf | grep listen_addresses | '*' | 修改为具体IP或localhost |
| 未启用审计 | szsql -U szsao -c "SHOW sz_audit.enable;" | off | 修改配置启用审计 |
| 审计日志权限过大 | ls -la ${SZDATA}/sz_audit/ | 非640 | 修改为640 szuser:szuser |
| 未启用归档 | szsql -U szadmin -c "SHOW archive_mode;" | off | 启用WAL归档 |
| 未启用透明加密 | szsql -U szadmin -c "SHOW sz_transparent_encrypt;" | off | 启用TDE保护敏感数据 |
| 存在危险扩展 | szsql -U szadmin -c "SELECT extname FROM pg_extension WHERE extname='dblink';" | 存在dblink/file_fdw | 评估后卸载或限制使用 |
| 未启用安全加固 | szsql -U szadmin -c "SHOW sz_security_hardening;" | off | 启用安全加固参数 |
十一、神州数据库与PostgreSQL/其他国产库对比
| 对比项 | PostgreSQL | 神州数据库 | 人大金仓 | 达梦 |
|---|---|---|---|---|
| 等保支持 | 需第三方工具 | 原生三权分立 | 原生三权分立 | 原生三权分立 |
| 国密算法 | 需国密SDK | 完整SM2/SM3/SM4 | 完整SM2/SM3/SM4 | 完整SM2/SM3/SM4 |
| 三权分立 | 不支持 | 支持szadmin/szsso/szsao | 支持 | 支持 |
| 透明加密 | 需第三方 | 原生TDE(SM4/AES) | 原生TDE | 原生TDE |
| 动态脱敏 | 需扩展 | 原生支持 | 原生支持 | 原生支持 |
| 强制访问控制 | 不支持 | 支持(安全版) | 支持 | 支持 |
| 数据库防火墙 | 不支持 | 支持(安全版) | 支持 | 支持 |
| 等保合规难度 | 高 | 低 | 低 | 低 |
| 硬件密码机 | 不支持 | 支持三未/江南天安 | 支持 | 支持 |
十二、等保测评执行要点
1. 账户权限要求
- 需要
szadmin(数据库管理员)、szsso(安全管理员)、szsao(审计管理员)三个账户分别验证 - 启用三权分立后,各管理员权限严格分离:
- szadmin:数据库管理,不能查看审计日志
- szsso:安全策略管理,不能创建用户
- szsao:审计管理,只能查询不能修改配置
2. 国密合规检查重点
# 检查是否使用国密SSL
openssl s_client -connect localhost:5432 -starttls postgres 2>/dev/null |grep-i"sm2\|SM2"
# 检查国密证书有效性
szsql -U szadmin -c"SELECT sz_gm_cert_info();"2>/dev/null
# 检查密码机接入(如使用硬件密码机)
szsql -U szadmin -c"SHOW sz_kms_type;"2>/dev/null # 应显示hsm或software
cat${SZDATA}/sz_hsm.conf 2>/dev/null # 密码机配置文件
3. 现场访谈要点
- 是否定期更换管理员口令(≤90天)
- 是否启用三权分立,各管理员是否由不同人员担任
- 是否使用国密算法进行数据传输加密
- 是否定期备份配置文件和审计日志
- 是否进行恢复演练(每半年至少一次)
- 是否使用硬件密码机保护主密钥
4. 版本差异
| 功能项 | V2.0 | V3.0 | V4.0 |
|---|---|---|---|
| 三权分立 | 基础 | 完整 | 增强 |
| 国密算法 | SM4 | SM2/SM3/SM4 | 完整国密SSL |
| 透明加密 | AES | SM4/AES | SM4/AES |
| 强制访问控制 | 不支持 | 支持(安全版) | 增强 |
| 数据库防火墙 | 不支持 | 支持(安全版) | 增强 |
| 动态脱敏 | 基础 | 增强 | 完整 |
参考标准:GB/T 22239-2019、GB/T 28448-2019、GM/T 0054-2018(国密数据库标准)、神州数据库安全加固指南
适用版本:ShenzhouDB V2.0 / V3.0 / V4.0
验证环境:x86_64 / ARM64 / 国产化芯片(飞腾/鲲鹏/龙芯/海光/兆芯/申威)
声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/6898.html