kingbase教程FG169-金仓数据库三权分立安全配置
内容简介:本文档详细介绍金仓数据库的三权分立安全配置方法,包括系统管理员、安全管理员和审计管理员的职责划分、权限配置等内容。风哥教程参考kingbase官方文档kingbase8安全管理手册、kingbase8系统管理员手册等。
Part01-基础概念与理论知识
1.1 三权分立概述
三权分立是一种安全管理模式,将数据库的管理权限分为系统管理员、安全管理员和审计管理员三个角色,分别负责不同的职责,相互制约,以提高数据库的安全性。金仓数据库支持三权分立配置,符合等保合规要求。
1.2 三权分立的职责划分
三权分立的职责划分:
- 系统管理员(SYSTEM):负责数据库的日常管理和维护,包括用户创建、表结构管理等
- 安全管理员(SECURITY):负责数据库的安全管理,包括权限分配、密码策略管理等
- 审计管理员(AUDIT):负责数据库的审计管理,包括审计日志的查看和分析等
1.3 三权分立的安全优势
三权分立的安全优势:,学习交流加群风哥微信: itpux-com
- 权力分散:避免单一用户拥有所有权限,减少权限滥用的风险
- 相互制约:不同角色之间相互监督,防止恶意操作
- 责任明确:每个角色都有明确的职责,便于追溯责任
- 符合合规要求:满足等保、PCI DSS等合规要求
Part02-生产环境规划与建议
2.1 三权分立角色规划
三权分立角色规划:
- 系统管理员:负责数据库的日常管理,如用户创建、表结构管理等
- 安全管理员:负责权限管理、密码策略设置等安全相关配置
- 审计管理员:负责审计日志的查看、分析和管理,学习交流加群风哥QQ113257174
2.2 权限分配规划
权限分配规划:
- 系统管理员:拥有数据库的管理权限,但不具有安全管理和审计管理权限
- 安全管理员:拥有安全管理权限,但不具有系统管理和审计管理权限
- 审计管理员:拥有审计管理权限,但不具有系统管理和安全管理权限
2.3 审计与监控规划
审计与监控规划:
- 开启审计功能:记录所有重要的操作
- 定期查看审计日志:及时发现异常操作
- 设置监控告警:当出现异常操作时及时告警
Part03-生产环境项目实施方案
3.1 三权分立配置步骤
三权分立配置步骤:,更多视频教程www.fgedu.net.cn
- 启用三权分立功能
- 创建安全管理员和审计管理员角色
- 分配相应的权限
- 配置审计功能
- 验证三权分立效果
3.2 角色与权限配置
角色与权限配置:
- 系统管理员:拥有数据库的管理权限,如CREATE USER、CREATE TABLE等
- 安全管理员:拥有安全管理权限,如GRANT、REVOKE等,更多学习教程公众号风哥教程itpux_com
- 审计管理员:拥有审计管理权限,如查看审计日志等
3.3 审计配置
审计配置:
- 开启审计功能
- 配置审计日志的存储位置和轮转策略
- 配置审计规则,记录重要的操作
Part04-生产案例与实战讲解
4.1 三权分立配置实战
三权分立配置:
# 连接数据库
$ ksql -U system -d fgedudb
# 启用三权分立功能
fgedudb=# ALTER SYSTEM SET enable_three_privilege_separation = on;
# 重启数据库
$ kstop -D /kingbase/fgdata
$ kstart -D /kingbase/fgdata
# 创建安全管理员角色
fgedudb=# CREATE ROLE security_admin WITH SUPERUSER LOGIN PASSWORD ‘security123’;
# 创建审计管理员角色
fgedudb=# CREATE ROLE audit_admin WITH SUPERUSER LOGIN PASSWORD ‘audit123’;
# 分配安全管理员权限
fgedudb=# GRANT SECURITY ADMIN TO security_admin;
# 分配审计管理员权限
fgedudb=# GRANT AUDIT ADMIN TO audit_admin;
# 验证权限分配
fgedudb=# SELECT grantee, privilege_type FROM information_schema.role_privileges WHERE grantee IN (‘security_admin’, ‘audit_admin’);
# 输出日志
grantee | privilege_type
————–+—————-
security_admin | SECURITY ADMIN
audit_admin | AUDIT ADMIN
4.2 权限管理实战
权限管理实战:
# 以安全管理员身份连接数据库
$ ksql -U security_admin -d fgedudb
# 创建用户
fgedudb=# CREATE USER fgedu_user WITH LOGIN PASSWORD ‘fgedu123’;
# 授予用户权限
fgedudb=# GRANT SELECT, INSERT, UPDATE, DELETE ON fgedu_employee TO fgedu_user;
# 验证用户权限
fgedudb=# SELECT grantee, table_name, privilege_type FROM information_schema.role_table_grants WHERE grantee = ‘fgedu_user’;
# 输出日志
grantee | table_name | privilege_type
————+————+—————-
fgedu_user | fgedu_employee | SELECT
fgedu_user | fgedu_employee | INSERT
fgedu_user | fgedu_employee | UPDATE
fgedu_user | fgedu_employee | DELETE
# 尝试以系统管理员身份授予权限(应该失败)
$ ksql -U system -d fgedudb -c “GRANT SELECT ON fgedu_department TO fgedu_user;”
# 输出日志
ERROR: must be security admin to grant/revoke privileges
4.3 审计管理实战
审计管理实战:
# 以审计管理员身份连接数据库
$ ksql -U audit_admin -d fgedudb
# 开启审计功能
fgedudb=# ALTER SYSTEM SET audit_enabled = on;
fgedudb=# ALTER SYSTEM SET audit_directory = ‘/kingbase/audit’;
fgedudb=# ALTER SYSTEM SET audit_filename = ‘audit.log’;
fgedudb=# ALTER SYSTEM SET audit_rotation_size = 10MB;
fgedudb=# ALTER SYSTEM SET audit_rotation_age = 1d;
# 重启数据库
$ kstop -D /kingbase/fgdata
$ kstart -D /kingbase/fgdata
# 创建审计目录
$ mkdir -p /kingbase/audit
$ chown kingbase:kingbase /kingbase/audit
# 执行一些操作,生成审计日志
$ ksql -U fgedu -d fgedudb -c “SELECT * FROM fgedu_employee;”
# 查看审计日志
$ tail -f /kingbase/audit/audit.log
# 输出日志
2026-04-09 10:00:00.123456 CST [12345] LOG: AUDIT: SESSION,1,1,QUERY,SELECT * FROM fgedu_employee;,
# 尝试以系统管理员身份查看审计日志(应该失败)
$ ksql -U system -d fgedudb -c “SELECT * FROM pg_audit_log;”
# 输出日志
ERROR: must be audit admin to access audit logs
4.4 三权分立效果验证实战
三权分立效果验证:,from DB视频:www.itpux.com
# 验证系统管理员权限
$ ksql -U system -d fgedudb -c “CREATE TABLE fgedu_test (id integer);”
# 输出日志
CREATE TABLE
# 验证系统管理员无法授予权限
$ ksql -U system -d fgedudb -c “GRANT SELECT ON fgedu_test TO fgedu_user;”
# 输出日志
ERROR: must be security admin to grant/revoke privileges
# 验证安全管理员权限
$ ksql -U security_admin -d fgedudb -c “GRANT SELECT ON fgedu_test TO fgedu_user;”
# 输出日志
GRANT
# 验证安全管理员无法查看审计日志
$ ksql -U security_admin -d fgedudb -c “SELECT * FROM pg_audit_log;”
# 输出日志
ERROR: must be audit admin to access audit logs
# 验证审计管理员权限
$ ksql -U audit_admin -d fgedudb -c “SELECT * FROM pg_audit_log;”
# 输出日志(示例)
log_time | user_name | database_name | client_addr | command_tag | object_type | object_name | statement
———-+———–+—————+————-+————-+————-+————-+———-
2026-04-09 10:00:00.123456 | fgedu | fgedudb | 192.168.1.100 | SELECT | TABLE | fgedu_employee | SELECT * FROM fgedu_employee;
# 验证审计管理员无法创建表
$ ksql -U audit_admin -d fgedudb -c “CREATE TABLE fgedu_test2 (id integer);”
# 输出日志
ERROR: must be system admin to create tables
Part05-风哥经验总结与分享
5.1 三权分立常见问题与解决方案
三权分立常见问题与解决方案:
- 权限不足:确保用户具有相应的角色权限
- 配置错误:检查三权分立配置是否正确
- 审计日志过大:配置合理的审计日志轮转策略
- 职责不清:明确各角色的职责,避免权限交叉
5.2 三权分立最佳实践
三权分立最佳实践:
- 严格按照职责划分分配权限
- 定期审计权限分配情况
- 开启审计功能,记录所有重要操作
- 定期轮换管理员密码
- 对管理员操作进行监控和告警
5.3 三权分立配置脚本分享
以下是一个三权分立配置脚本示例:
#!/bin/bash
# three_privilege_separation.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 启用三权分立功能
enable_three_privilege_separation() {
echo “启用三权分立功能…”
ksql -U system -d fgedudb -c “ALTER SYSTEM SET enable_three_privilege_separation = on;”
kstop -D /kingbase/fgdata
kstart -D /kingbase/fgdata
}
# 创建管理员角色
create_admin_roles() {
echo “创建管理员角色…”
ksql -U system -d fgedudb -c “CREATE ROLE security_admin WITH SUPERUSER LOGIN PASSWORD ‘security123’;”
ksql -U system -d fgedudb -c “CREATE ROLE audit_admin WITH SUPERUSER LOGIN PASSWORD ‘audit123’;”
ksql -U system -d fgedudb -c “GRANT SECURITY ADMIN TO security_admin;”
ksql -U system -d fgedudb -c “GRANT AUDIT ADMIN TO audit_admin;”
}
# 配置审计功能
config_audit() {
echo “配置审计功能…”
ksql -U audit_admin -d fgedudb -c “ALTER SYSTEM SET audit_enabled = on;”
ksql -U audit_admin -d fgedudb -c “ALTER SYSTEM SET audit_directory = ‘/kingbase/audit’;”
ksql -U audit_admin -d fgedudb -c “ALTER SYSTEM SET audit_filename = ‘audit.log’;”
ksql -U audit_admin -d fgedudb -c “ALTER SYSTEM SET audit_rotation_size = 10MB;”
ksql -U audit_admin -d fgedudb -c “ALTER SYSTEM SET audit_rotation_age = 1d;”
kstop -D /kingbase/fgdata
kstart -D /kingbase/fgdata
mkdir -p /kingbase/audit
chown kingbase:kingbase /kingbase/audit
}
# 验证三权分立效果
verify_three_privilege_separation() {
echo “验证三权分立效果…”
# 验证系统管理员权限
echo “验证系统管理员权限…”
ksql -U system -d fgedudb -c “CREATE TABLE fgedu_test (id integer);”
# 验证系统管理员无法授予权限
echo “验证系统管理员无法授予权限…”
ksql -U system -d fgedudb -c “GRANT SELECT ON fgedu_test TO fgedu;”
# 验证安全管理员权限
echo “验证安全管理员权限…”
ksql -U security_admin -d fgedudb -c “GRANT SELECT ON fgedu_test TO fgedu;”
# 验证安全管理员无法查看审计日志
echo “验证安全管理员无法查看审计日志…”
ksql -U security_admin -d fgedudb -c “SELECT * FROM pg_audit_log;”
# 验证审计管理员权限
echo “验证审计管理员权限…”
ksql -U audit_admin -d fgedudb -c “SELECT * FROM pg_audit_log;”
# 验证审计管理员无法创建表
echo “验证审计管理员无法创建表…”
ksql -U audit_admin -d fgedudb -c “CREATE TABLE fgedu_test2 (id integer);”
}
# 主函数
main() {
enable_three_privilege_separation
create_admin_roles
config_audit
verify_three_privilege_separation
}
# 执行主函数
main
风哥提示:三权分立是一种有效的安全管理模式,通过将权限分散到不同的角色,可以提高数据库的安全性,防止权限滥用和恶意操作。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
