15、KingbaseES人大金仓数据库加固
Categories:
4 分钟阅读
定位:人大金仓 KingbaseES V8R6 / V9 等保三级安全加固手册:按内置三权分立、口令策略、网络访问控制、安全审计、日志管理、数据备份恢复、操作系统层配套分节,命令沿用
sys_前缀视图与工具命名。适用版本:KingbaseES V8R6/V9——
sys_前缀命名(sys_hba.conf、sys_hba_file_rules、sys_dump、sys_rman);V8R3 及更早版本为pg_前缀,请对应替换。KES 兼容 Oracle 与 PostgreSQL 双语法体系,具体参数名/视图名以对应版本《管理员手册》《安全管理手册》为准;执行前先在测试库验证。 配套测评:人大金仓测评。使用说明:
- 本文为加固操作手册:所有命令都会修改配置,可能中断服务、断开当前会话或需要重启。实施前必须完成变更审批、确认业务窗口、备份原配置(设备
save与copy running-config/backup startup-configuration,主机备份/etc、注册表与关键业务数据),并准备可执行的回滚预案。- 先在测试环境或单台设备灰度验证,确认无业务影响后再批量推广;每完成一项立即用文中「验证」命令核验生效——配置已下发不等于策略已生效(如 H3C 未
password-control enable、Linux 未对存量账户chage、Windows 未gpupdate /force)。- 示例中的地址、账户名、口令、路径均为演示值(如
PleaseChange@123、192.168.10.20、admin123),现场须替换为符合本单位口令策略与网络规划的真实值,严禁直接沿用文中示例口令;对外发布或归档时须对个人信息与内网管理地址脱敏。- 命令不存在、视图名或参数与本文不一致时,先用
display version/show version/winver确认版本与部署形态,再查阅对应版本官方文档换用等效命令;版本差异不得直接作为「无法整改」的结论,须给出替代措施并评估其实际效果。- 涉及账户、锁定、超时、防火墙与端口收敛的变更存在锁死自身风险:务必保留一条已验证的恢复通道(Console 口、带外管理口、堡垒机会话或另一管理员账户)后再实施。
- 加固完成后按「16、安全评估加固记录表3.0」逐项留痕(整改前后回显、操作人、时间、验证结论、回退情况),并纳入复测;测评判定口径以 GB/T 28448-2019 与《高风险判定指引》为准,本文的「加固要点」不构成最终测评结论。
不适用标识说明:
- 使用
【不适用】明确标记现场可判定为不适用的控制点,并写明判定依据与承载该能力的上位组件。- 依据 GB/T 28448-2019「按测评对象实际承载功能与数据处理范围判定」原则:控制能力由统一认证平台、堡垒机、日志审计系统、终端管理系统、虚拟化平台或云托管平台承载时,应注明测评单元边界后判定不适用或转由上位组件核查,不得机械按缺失判不符合。
- 产品版本确实不提供该能力(如老旧设备无 SNMPv3、无可信根、社区版无审计模块、已停止官方支持的操作系统)时,须核查替代措施并按替代措施的实际效果定档,不得直接判不适用;已停止支持的版本应同时提出升级或补偿控制建议。
一、内置三权分立(KES 特色)
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~g)(数据库账户、角色与对象权限;三权分立对应 d) 重命名与 e) 敏感标记、f) 授权主体最小化)
加固要点:按最小权限授予:账户只授予其业务所需的库/模式/对象权限与操作类型,禁止对业务账户直接授予 SUPER/SYSDBA/DBA/root 等最高权限;权限变更须经审批并留痕,回收后核验生效。启用数据库自身的访问控制机制限制登录来源(PostgreSQL
pg_hba.conf、KingbaseESsys_hba.conf、MySQL 账户的 host 部分与require_secure_transport、MongoDBnet.bindIp配合主机防火墙、达梦与金仓的 IP 白名单或操作系统层限制),并禁止trust、any、无口令等无鉴别访问方式。敏感数据(个人身份信息、鉴别信息)须打敏感标记或单独建库建表并限制可访问账户。验证方法:权限授予清单(MySQL
SHOW GRANTS FOR 'u'@'h';、PostgreSQL\dp与information_schema.table_privileges、MongoDBdb.getUser()的 roles 字段、达梦与金仓DBA_ROLE_PRIVS/DBA_TAB_PRIVS)与业务需要清单逐项比对;pg_hba.conf/sys_hba.conf全文(应无trust行);从非授权网段或非授权账户发起连接被拒的实测记录;敏感标记或数据分级分类文档。
业务应用账户或普通运维账户持有 SUPER/SYSDBA/DBA/root 等最高权限,或 pg_hba.conf/sys_hba.conf 存在 trust 无鉴别放行行(如 host all all 0.0.0.0/0 trust),攻击者无需口令即可获得数据库完全控制权,按《高风险判定指引》可直接判高风险。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select rolname, rolsuper, rolcanlogin from pg_roles where rolcanlogin;
-- 或 KES 系统视图(以手册为准)
示例输出(节选)
rolname | rolsuper | rolcanlogin
-----------+----------+-------------
sys | t | t
syssso | t | t
syssao | t | t
appuser | f | t
KES 默认内置三权账户体系:
| 账户 | 角色 | 职责 |
|---|---|---|
| SYS | 系统管理员 | 数据库对象与日常运维 |
| SYSSSO | 安全管理员 | 账户、口令策略、权限与安全标记管理 |
| SYSSAO | 安全审计员 | 审计配置与审计记录查询 |
加固操作
- 修改三账户默认口令并纳入口令策略管理(默认口令必须更换):
ALTER USER sys IDENTIFIED BY "YourStrong@Passw0rd";
ALTER USER syssso IDENTIFIED BY "YourStrong@Passw0rd";
ALTER USER syssao IDENTIFIED BY "YourStrong@Passw0rd";
- 业务账户与三权账户分离,禁止用 SYS 做业务连接:
CREATE USER appuser IDENTIFIED BY "YourStrong@Passw0rd";
GRANT CONNECT, RESOURCE TO appuser;
- 判定标准:三权账户存在、口令已改、业务账户与三权账户未混用;单人共用三权账户判权限分离不符合。
二、口令策略(PROFILE 机制)
对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)(身份鉴别信息具有复杂度要求并定期更换)
加固要点:按「复杂度 + 长度 + 老化 + 历史」四要素配置并对全部账户生效:最小长度不低于 8 位(管理账户建议 12~16 位)、至少包含大写字母/小写字母/数字/特殊字符中三类、老化不超过 90 天、历史防重复不少于 5 次。落地方式因产品而异——MySQL 8.0 用
validate_password组件(5.7 为插件,参数名validate_password_policy/validate_password_length与 8.0 的validate_password.policy/.length写法不同);PostgreSQL 用 contrib 的passwordcheck扩展(须写入shared_preload_libraries后重启,能力较弱,长度与字符类组合须辅以应用侧或制度约束);MongoDB 无内置口令复杂度校验,须在账户创建流程与配置管理中约束并说明;达梦用PWD_POLICY/PASSWORD_POLICY位掩码与PWD_MIN_LEN;金仓用 PROFILE 机制。无论采用哪种方式,都须核查最高权限账户是否同受约束,并对存量账户逐个下发有效期。验证方法:口令策略参数回显(
SHOW VARIABLES LIKE 'validate_password%';、SHOW shared_preload_libraries;与CREATE EXTENSION passwordcheck结果、达梦SELECT * FROM V$PARAMETER WHERE NAME LIKE 'PWD%';、金仓 PROFILE 定义)+ 存量账户有效期抽查(MySQLSELECT user,host,password_expired,password_lifetime FROM mysql.user;、PostgreSQLrolvaliduntil、达梦DBA_USERS.EXPIRY_DATE)+ 一次弱口令设置被拒的实测记录。
数据库管理账户存在弱口令或口令永不过期,且管理端口对非运维网段开放、可被在线口令猜测时,按《高风险判定指引》可直接判高风险;仅在参数模板中配置复杂度而未对存量账户重设口令,属高频「已整改但无效」情形,复测必须重新实测而非只看配置。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
select username, profile from dba_users; -- Oracle 兼容视图(以手册为准)
select * from dba_profiles where profile='DEFAULT';
示例输出(节选)
username | profile
-----------+-------------
sys | DEFAULT
syssso | DEFAULT
syssao | DEFAULT
appuser | SEC_PROFILE
PROFILE RESOURCE_NAME LIMIT
----------- ------------------------ ----------------------
SEC_PROFILE FAILED_LOGIN_ATTEMPTS 5
SEC_PROFILE PASSWORD_LOCK_TIME 0.0069
SEC_PROFILE PASSWORD_LIFE_TIME 90
SEC_PROFILE IDLE_TIME 30
加固操作:建立安全 Profile 并绑定账户(时间单位为天,分钟需换算,如 10 分钟 = 10/1440):
CREATE PROFILE sec_profile LIMIT
FAILED_LOGIN_ATTEMPTS 5 -- 连续失败 5 次锁定
PASSWORD_LOCK_TIME 10/1440 -- 锁定 10 分钟
PASSWORD_LIFE_TIME 90 -- 口令 90 天有效
PASSWORD_REUSE_TIME 30 -- 30 天内不可复用旧口令
PASSWORD_REUSE_MAX 5
IDLE_TIME 30; -- 空闲 30 分钟断开会话
ALTER USER appuser PROFILE sec_profile;
-- 强制下次登录修改口令(初始口令下发后)
ALTER USER appuser PASSWORD EXPIRE;
- 口令复杂度(长度、字符类别)由 KES 安全配置/口令校验函数支持,具体参数以版本手册为准;执行后用弱口令试改验证生效;
- 判定标准:口令复杂度、有效期、登录失败锁定均可验证生效。
三、网络访问控制(sys_hba.conf)
对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~g)(数据库账户、角色与对象权限;三权分立对应 d) 重命名与 e) 敏感标记、f) 授权主体最小化)
核查方法
show port; -- KES 默认端口 54321
show listen_addresses;
示例输出(节选)
port
-------
54321
listen_addresses
------------------
192.168.10.10
加固操作:KES 的访问控制文件与 PostgreSQL 同机制(数据目录下 sys_hba.conf,格式五列:类型/库/用户/地址/方式):
# 类型 数据库 用户 地址 方式
hostssl all all 192.168.10.0/24 scram-sha-256
host all all 0.0.0.0/0 reject
生效与核查:
select sys_reload_conf(); -- KES 重载函数;等价于 PG 的 pg_reload_conf()
select * from sys_hba_file_rules; -- 旧版本视图名可能为 pg_hba_file_rules
示例输出(节选)
line_number | type | database | user_name | address | auth_method | error
-------------+---------+----------+-----------+-----------------+---------------+-------
86 | local | all | sys | | peer |
87 | hostssl | all | all | 192.168.10.0/24 | scram-sha-256 |
88 | host | all | all | 0.0.0.0/0 | reject |
- 只监听业务网卡:
ALTER SYSTEM SET listen_addresses = '192.168.10.10'; - 默认端口 54321 建议保留并依赖访问控制(改端口仅纵深防御);
- 数据库账户的"禁止远程登录"由 sys_hba 实现(如限制 SYS 仅本地
local all sys peer),不要用改口令代替访问控制。
四、安全审计(SYSSAO 职责)
对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)(数据库审计策略、审计记录内容、留存与保护)
加固要点:启用数据库审计并覆盖:用户登录注销、账户与权限变更(DDL/DCL)、对敏感数据与关键表的访问、审计策略自身的修改;审计记录须包含事件日期时间、用户、事件类型、是否成功、客户端地址等要素;审计功能由独立的安全审计员账户管理,系统管理员不得删除或篡改审计记录;审计日志留存不少于 6 个月并定期备份,容量写满时按策略告警而非静默覆盖。社区版无原生审计能力时(PostgreSQL 需 pgAudit、MongoDB 社区版无 auditLog、MySQL 社区版无 audit_log),须部署数据库审计系统、堡垒机或操作系统层审计作为替代,并在报告中写明测评单元边界与替代措施的实际效果。
验证方法:审计开关与审计策略配置回显(PostgreSQL
SHOW shared_preload_libraries;含 pgaudit +pgaudit.log参数 +\dx确认扩展已创建;MySQLSHOW VARIABLES LIKE '%audit%';或企业版audit_log_policy;MongoDB 企业版auditLog配置段;达梦与金仓的审计参数与审计项/审计对象配置结果)+ 一段真实审计记录样例(含时间、用户、来源 IP、操作对象、结果)+ 审计记录留存起始时间与备份记录 + 用系统管理员账户尝试删除审计记录被拒的实测。
数据库未启用任何审计且承载敏感数据,或审计记录可由系统管理员账户自行关闭与删除、留存不足 6 个月,安全事件无法溯源时按高风险线索记录(多与访问控制、剩余信息保护不符合项合并判定)。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法
以 SYSSAO 登录(ksql -U syssao -d test -p 54321),核查审计开关与审计记录可查;show audit_* / 审计系统视图(名称以版本手册为准)。
加固操作
- 审计配置由 SYSSAO 执行:开启审计功能,对登录/账户变更/对象 DDL 等设置语句级或用户级审计(具体语句以《KingbaseES 安全管理手册》对应章节为准);
- 审计记录留存 ≥6 个月并定期归档;日志目录权限收敛;
- 时间同步:主机 NTP 保证审计记录时间准确(见 11 号)。
- 判定标准:审计功能开启、覆盖重要用户行为(登录、授权、DDL、数据变更)、记录可查询且留存满足要求。仅有日志无审计策略的一般判部分符合。
五、日志管理
对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)(数据库审计策略、审计记录内容、留存与保护)
KES 日志机制同 PG 系(logging_collector、log_destination、log_connections/disconnections、按天滚动、0600 权限):
ALTER SYSTEM SET logging_collector = on;
ALTER SYSTEM SET log_destination = 'csvlog';
ALTER SYSTEM SET log_connections = on;
ALTER SYSTEM SET log_disconnections = on;
select sys_reload_conf();
- 日志转发至集中日志服务器(rsyslog/syslog-ng,见 11 号 3.3),留存 ≥6 个月。
六、数据备份恢复
对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)~c)(本地备份、异地实时备份与热冗余)
加固要点:建立并实际执行备份策略:本地定时全量 + 增量或日志备份(MySQL
mysqldump/mysqlpump配合 binlog、PostgreSQLpg_dump/pg_basebackup配合 WAL 归档、MongoDBmongodump配合 oplog 或文件系统快照、达梦与金仓使用自带备份工具),备份文件与主数据分机存放并异地留存(三级要求异地实时备份或热冗余),备份数据同样加密并限制访问权限;每半年至少一次恢复演练并留存演练记录,RTO/RPO 与业务要求匹配。仅有备份脚本而无恢复验证不判符合。验证方法:备份策略与计划任务配置、最近若干次备份任务的执行日志与产物清单(大小、时间、存放位置)、异地备份或热冗余证据(异地备份目录、流复制或副本集状态:
SHOW REPLICA STATUS\G、SELECT * FROM pg_stat_replication;、rs.status())、恢复演练记录(时间、参与人、恢复耗时、数据一致性校验结果)、备份文件权限与加密方式。
核心业务数据库无任何备份,或备份与主数据同机同盘存放、从未做过恢复演练导致备份实际不可用,一旦数据被破坏或遭勒索加密即无法恢复,按《高风险判定指引》可直接判高风险。
判定口径详见 22、高风险判定指引与加固对照表。
核查方法:备份任务与文件时效、恢复演练记录。
加固操作
# 逻辑备份(KES 的 pg_dump 等价工具)
sys_dump -U SYS -d appdb -p 54321 -Fc -f /backup/appdb_$(date +%F).dump
chmod 600 /backup/appdb_*.dump
# 物理备份推荐 sys_rman(以版本手册为准),支持全量/增量/WAL 归档
- 备份文件异地存放,定期恢复演练并记录;三级系统按 22239 要求具备异地实时备份与实例冗余。
七、操作系统层配套
SSH/Telnet、防火墙、syslog、NTP、USB 管控等属操作系统加固范畴,见 04、Linux主机加固手册 与 11、Linux操作系统加固手册,不在本文重复。
测评项对照表
| 控制点 | 对应章节 |
|---|---|
| 身份鉴别:口令复杂度、有效期、登录失败处理 | 二 |
| 身份鉴别:远程管理防窃听(TLS) | 三 |
| 访问控制:三权分立、账户最小化 | 一、二、三 |
| 安全审计:审计开启与留存 | 四、五 |
| 数据备份恢复 | 六 |
参考依据
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》(8.1.4 安全计算环境各控制点(数据库管理系统自身安全);涉客户端与服务端通信时另含 8.1.2 安全通信网络):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》(测评对象边界认定、单元测评实施与结果判定:符合/部分符合/不符合/不适用):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C
- GB/T 22240-2020《信息安全技术 网络安全等级保护定级指南》、GB/T 25070-2019《安全设计技术要求》、GB/T 28449-2018《测评过程指南》,可在全国标准信息公共服务平台检索:http://openstd.samr.gov.cn/bzgk/gb/
- 人大金仓官方站点(KingbaseES V8R6/V9 产品文档入口):https://www.kingbase.com.cn/
- 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准)——高风险情形判定口径,站内对照表:22、高风险判定指引与加固对照表
- 命令核验说明:KingbaseES V8R6/V9 的命令与参数以人大金仓官网公开的产品文档与《KingbaseES 安全管理手册》口径核验(核验日期 2026-09-02)。四处须留意:① KingbaseES 基于 PostgreSQL 内核但视图与工具名加了
sys_前缀(如sys_hba.conf、SYS_USERS),沿用 PostgreSQL 的pg_hba.conf/pg_roles写法在部分版本上会找不到对象,须先用d或官方手册确认实际命名;② 官网未提供完整的在线命令手册,部分参数须以随产品安装目录下的官方 PDF/HTML 文档为准,现场核查时应向运维索取对应版本的《安全管理手册》并留存版本页截图,本文不虚构官方文档直链;③ 三权分立账户(SYSTEM/SSEO/SYSSAO)的职责边界随版本与是否启用安全特性而异,须实测「用安全审计员账户执行 DBA 操作被拒」而非只看账户是否存在;④ PROFILE 类口令策略与失败锁定在 V8R6 与 V9 的参数名与支持度存在差异,命令报错时应以h或官方手册确认可用语法,并按替代措施记录,不得据命令缺失直接判不符合。