实验十九 GaussDB三权分立实验

一、三权分立简介

SYSADMIN:

系统管理员权限,不再具有创建、修改、删除用户/角色的权限,也不再具有查看和维护数据库审计日志的权限。

CREATEROLE:

安全管理员权限,具有创建、修改、删除用户/角色的权限。

AUDITADMIN:

审计管理员权限,具有查看和维护数据库审计日志的权限。

二、三权分立机制开启

此模式需要设置guc参数"enableSeparationOfDuty"的值为"on",该参数为POSTMASTER类型参数,修改完之后需要重启数据库。

#分布式

sql 复制代码
gs_guc set -Z coordinator -Z datanode -N all -I all -c "enableSeparationOfDuty=on"

#集中式

sql 复制代码
gs_guc set -Z datanode -N all -I all -c "enableSeparationOfDuty=on"

#重启集群

sql 复制代码
cm_ctl stop && cm_ctl start

三、创建三类管理员角色(超级用户执行)

创建系统管理员:负责资源调度、数据库维护

sql 复制代码
CREATE USER test_sysadmin WITH SYSADMIN password "Huawei@1234";

创建安全管理员:负责用户、权限、策略管理

sql 复制代码
CREATE USER test_createrole WITH CREATEROLE password "Huawei@1234";

创建审计管理员:负责审计日志查询与清理

sql 复制代码
CREATE USER test_auditadmin WITH AUDITADMIN password "Huawei@1234";

四、创建普通用户

1.系统管理员

创建普通用户:

sql 复制代码
gsql -dpostgres -p8000 -Utest_sysadmin -WHuawei@1234 -ar
create user test_sys_user with password 'test@123';

2.安全管理员

创建普通用户:

sql 复制代码
gsql -dpostgres -p8000 -Utest_createrole -WHuawei@1234 -ar
create user test_cre_user with password 'test@123';

3.审计管理员

创建普通用户:

sql 复制代码
gsql -dpostgres -p8000 -Utest_auditadmin -WHuawei@1234 -ar
create user test_aud_user with password 'test@123';

4.测试结果

系统管理员执行命令失败;

安全管理员执行命令成功;

审计管理员执行命令失败;

五、创建database

1.系统管理员

创建数据库:

sql 复制代码
gsql -dpostgres -p8000 -Utest_sysadmin -WHuawei@1234 -ar
create database testdb;

2.安全管理员

创建数据库:

sql 复制代码
gsql -dpostgres -p8000 -Utest_createrole -WHuawei@1234 -ar
create database testdb;

3.审计管理员

创建数据库:

sql 复制代码
gsql -dpostgres -p8000 -Utest_auditadmin -WHuawei@1234 -ar
create database testdb;

4.测试结果

系统管理员执行命令成功;

安全管理员执行命令失败;

审计管理员执行命令失败;

六、创建schema和table

1.系统管理员

创建测试schema和表,并写入数据

sql 复制代码
gsql -dtestdb -p8000 -Utest_sysadmin -WHuawei@1234 -ar
CREATE SCHEMA test_schema;
CREATE TABLE test_schema.sales (id int, amount numeric, region text);
INSERT INTO test_schema.sales VALUES (1, 1000, 'North'), (2, 1500, 'South');

2.安全管理员

创建测试schema和表,并写入数据

sql 复制代码
gsql -dtestdb -p8000 -Utest_createrole -WHuawei@1234 -ar
CREATE SCHEMA test_schema;
CREATE TABLE test_schema.sales (id int, amount numeric, region text);
INSERT INTO test_schema.sales VALUES (1, 1000, 'North'), (2, 1500, 'South');

3.审计管理员

创建测试schema和表,并写入数据

sql 复制代码
gsql -dtestdb -p8000 -Utest_auditadmin -WHuawei@1234 -ar
CREATE SCHEMA test_schema;
CREATE TABLE test_schema.sales (id int, amount numeric, region text);
INSERT INTO test_schema.sales VALUES (1, 1000, 'North'), (2, 1500, 'South');

4.测试结果

系统管理员创建schema成功,创建表和往表中插入数据成功

安全管理员创建schema失败,创建表和往表中插入数据失败

审计管理员创建schema失败,创建表和往表中插入数据失败

七、修改数据

1.系统管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_sysadmin -WHuawei@1234 -ar
update test_schema.sales set amount = 2000 where id = 1;

2.安全管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_createrole -WHuawei@1234 -ar
update test_schema.sales set amount = 2000 where id = 1;

3.审计管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_auditadmin -WHuawei@1234 -ar
update test_schema.sales set amount = 2000 where id = 1;

4.测试结果

系统管理员更新数据成功

安全管理员更新数据失败

审计管理员更新数据失败

八、修改密码和用户期限等策略

1.系统管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_sysadmin -WHuawei@1234 -ar
alter role test_cre_user valid until '2099-12-31';

2.安全管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_createrole -WHuawei@1234 -ar
alter role test_cre_user valid until '2099-12-31';

3.审计管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_auditadmin -WHuawei@1234 -ar
alter role test_cre_user valid until '2099-12-31';

4.测试结果

系统管理员用户期限限制失败

安全管理员用户期限限制成功

审计管理员用户期限限制失败

九、授予权限给用户

1.系统管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_sysadmin -WHuawei@1234 -ar
grant select on table test_schema.sales to test_cre_user;

2.安全管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_createrole -WHuawei@1234 -ar
grant select on table test_schema.sales to test_cre_user;

3.审计管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_auditadmin -WHuawei@1234 -ar
grant select on table test_schema.sales to test_cre_user;

4.测试结果

系统管理员用户授权成功

安全管理员用户授权失败

审计管理员用户授权失败

十、修改用户密码

1.系统管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_sysadmin -WHuawei@1234 -ar
ALTER USER test_cre_user IDENTIFIED BY 'TestNew@123';

2.安全管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_createrole -WHuawei@1234 -ar
ALTER USER test_cre_user IDENTIFIED BY 'TestNew@123';

3.审计管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_auditadmin -WHuawei@1234 -ar
ALTER USER test_cre_user IDENTIFIED BY 'TestNew@123';

4.测试结果

系统管理员用户授权失败

安全管理员用户授权成功

审计管理员用户授权失败

十一、回收权限

1.系统管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_sysadmin -WHuawei@1234 -ar
revoke select on table test_schema.sales from test_cre_user;

2.安全管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_createrole -WHuawei@1234 -ar
revoke select on table test_schema.sales from test_cre_user;

3.审计管理员

sql 复制代码
gsql -dtestdb -p8000 -Utest_auditadmin -WHuawei@1234 -ar
revoke select on table test_schema.sales from test_cre_user;

4.测试结果

系统管理员用户收回权限成功

安全管理员用户收回权限失败

审计管理员用户收回权限失败

十二、查看审计日志

1.系统管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_sysadmin -WHuawei@1234 -ar
SELECT * FROM pg_query_audit('2025-09-26 08:00:00', '2025-09-26 09:00:00') LIMIT 1;

2.安全管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_createrole -WHuawei@1234 -ar
SELECT * FROM pg_query_audit('2025-09-26 08:00:00', '2025-09-26 09:00:00') LIMIT 1;

3.审计管理员

sql 复制代码
gsql -dpostgres -p8000 -Utest_auditadmin -WHuawei@1234 -ar
SELECT * FROM pg_query_audit('2025-09-26 08:00:00', '2025-09-26 09:00:00') LIMIT 1;

4.测试结果

系统管理员查看审计日志失败

安全管理员查看审计日志失败

审计管理员查看审计日志成功

相关推荐
博睿谷IT99_9 天前
GaussDB 和 openGauss 怎么区分?
数据库·华为认证·opengauss·it·gaussdb
九河云23 天前
华为云 GaussDB:金融级高可用数据库,为核心业务保驾护航
网络·数据库·科技·金融·华为云·gaussdb
小云数据库服务专线1 个月前
GaussDB 数据库架构师修炼(十九)-性能调优-长事务分析
数据库·数据库架构·gaussdb
RestCloud1 个月前
10迁移TiDB数据库数据到GaussDB
数据库·tidb·etl·gaussdb·数据处理·数据同步·集成平台
小云数据库服务专线1 个月前
GaussDB 数据库架构师修炼(十八) SQL执行引擎-概述
sql·数据库架构·gaussdb
小云数据库服务专线1 个月前
GaussDB 数据库架构师修炼(十八) SQL引擎-计划管理-SPM
数据库·数据库架构·gaussdb
DarkAthena1 个月前
AI生成技术报告:GaussDB与openGauss的HTAP功能全面对比
数据库·gaussdb
小云数据库服务专线1 个月前
GaussDB 数据库架构师修炼(十八) SQL引擎-分布式计划
数据库·数据库架构·gaussdb
DarkAthena1 个月前
【GaussDB】全密态等值查询功能测试及全密态技术介绍
数据库·gaussdb