- 创建基础角色和用户
-- 创建表空间(物理存储)
CREATE TABLESPACE secure_tablespace
LOCATION '/opt/Kingbase/ES/V8/data/secure_space';
-- 创建数据库
CREATE DATABASE secure_db
WITH OWNER = system
ENCODING = 'UTF8'
TABLESPACE = secure_tablespace;
-- 连接到新数据库
\c secure_db
-- 创建专用模式
CREATE SCHEMA secure_schema AUTHORIZATION system;
- 三权分立角色创建
-- 系统管理员角色(负责日常运维)
CREATE ROLE sys_admin WITH NOLOGIN;
GRANT CREATE, CONNECT, TEMPORARY ON DATABASE secure_db TO sys_admin;
GRANT USAGE, CREATE ON SCHEMA secure_schema TO sys_admin;
-- 安全管理员角色(负责权限分配)
CREATE ROLE sec_admin WITH NOLOGIN;
GRANT USAGE ON SCHEMA secure_schema TO sec_admin;
-- 审计管理员角色(负责审计监督)
CREATE ROLE audit_admin WITH NOLOGIN;
- 创建具体用户并分配角色
-- 系统管理员用户
CREATE USER admin1 WITH PASSWORD 'Admin@123';
GRANT sys_admin TO admin1;
-- 安全管理员用户
CREATE USER sec1 WITH PASSWORD 'Sec@123';
GRANT sec_admin TO sec1;
-- 审计管理员用户
CREATE USER auditor1 WITH PASSWORD 'Audit@123';
GRANT audit_admin TO auditor1;
-- 普通应用用户
CREATE USER app_user WITH PASSWORD 'App@123';
- 配置详细的权限控制
-- 系统管理员权限细化
ALTER DEFAULT PRIVILEGES
FOR ROLE sys_admin
IN SCHEMA secure_schema
GRANT ALL ON TABLES TO sys_admin;
-- 安全管理员权限配置
GRANT USAGE ON SCHEMA secure_schema TO sec_admin;
GRANT SELECT ON ALL TABLES IN SCHEMA secure_schema TO sec_admin;
-- 设置安全管理员可以授予普通权限
GRANT sec_admin TO sys_admin WITH ADMIN OPTION;
-- 审计管理员权限配置
GRANT SELECT ON sys_audit.audit_log TO audit_admin; -- 假设有审计表
GRANT EXECUTE ON FUNCTION pg_read_file(text) TO audit_admin;
- 配置审计策略
-- 启用审计(具体语法可能因金仓版本而异)
ALTER SYSTEM SET audit_enabled = on;
ALTER SYSTEM SET audit_log = on;
-- 审计关键操作
CREATE AUDIT POLICY admin_policy
ACTIONS ALL
ROLES sys_admin, sec_admin;
CREATE AUDIT POLICY ddl_policy
ACTIONS CREATE, ALTER, DROP
ON DATABASE secure_db;
- 验证三权分立
-- 验证角色继承
SELECT rolname, member FROM pg_auth_members WHERE roleid IN
(SELECT oid FROM pg_roles WHERE rolname IN ('sys_admin','sec_admin','audit_admin'));
-- 验证权限分离
SELECT grantee, privilege_type
FROM information_schema.role_table_grants
WHERE table_schema = 'secure_schema';
关键设计原则
职责分离:
系统管理员:负责对象创建、维护
安全管理员:负责用户和权限管理
审计管理员:独立监督所有操作
最小权限原则:
每个角色仅拥有完成职责所需的最小权限
通过角色继承实现权限组合
审计跟踪:
所有管理操作都被记录
审计管理员可以查看但不能修改日志
默认安全:
新创建对象默认不公开
需要显式授权才能访问