--三权分立
在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立。
将系统管理员的部分权限分立给安全管理员和审计管理员,形成系统管理员、安全管理员和审计管理员三权分立。
三权分立后,系统管理员只会对自己作为所有者的对象有权限。
系统管理员将不再拥有创建角色和用户的权限,并不再拥有数据库审计日志的权限。
gs_guc set命令设置三权分立
gs_om -t stop && gs_om -t start命令重启数据库使参数生效

验证:通过create user创建用户并授予系统管理员权限sysadmin

连接到数据库,使用系统管理员用户尝试创建用户,发现失败。
通过select命令使用系统管理员用户查看审计日志,失败。

通过create user命令with createrole创建安全管理员用户leo

使用安全管理员用户创建新用户成功。

通过create user命令with auditadmin创建审计管理员用户william

审计管理员用户可以用select查看审计日志
gs_guc set取消三权分立,并重启生效

--私有用户
在非三权分立情况下,为了提高数据安全性,有时希望系统管理员能够控制操作(DROP、ALTER,TRUNCATE)用户的数据,但不能进行访问操作(INSERT、DELETE、SELECT、UPDATE、COPY.GRANT、REVOKE、ALTER OWNER)用户的数据。
这种情况下就可以创建具有INDEPENDENT属性的私有用户。
create user命令创建具有数据库创建权限的用户rose

通过create database创建数据库rose_database,并连接

创建schema rose和rose_table

向表格插入数据,并查看

切换至管理员用户omm 发现无法查看私有用户创建的rose_table
但是管理员可以进行drop/alter/truncate table,例如删除数据表

--三权分立
在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立。
将系统管理员的部分权限分立给安全管理员和审计管理员,形成系统管理员、安全管理员和审计管理员三权分立。
三权分立后,系统管理员只会对自己作为所有者的对象有权限。
系统管理员将不再拥有创建角色和用户的权限,并不再拥有数据库审计日志的权限。
gs_guc set命令设置三权分立
gs_om -t stop && gs_om -t start命令重启数据库使参数生效
验证:通过create user创建用户并授予系统管理员权限sysadmin
连接到数据库,使用系统管理员用户尝试创建用户,发现失败。
通过select命令使用系统管理员用户查看审计日志,失败。
通过create user命令with createrole创建安全管理员用户leo
使用安全管理员用户创建新用户成功。
通过create user命令with auditadmin创建审计管理员用户william
审计管理员用户可以用select查看审计日志
gs_guc set取消三权分立,并重启生效
--私有用户
在非三权分立情况下,为了提高数据安全性,有时希望系统管理员能够控制操作(DROP、ALTER,TRUNCATE)用户的数据,但不能进行访问操作(INSERT、DELETE、SELECT、UPDATE、COPY.GRANT、REVOKE、ALTER OWNER)用户的数据。
这种情况下就可以创建具有INDEPENDENT属性的私有用户。
create user命令创建具有数据库创建权限的用户rose
通过create database创建数据库rose_database,并连接
创建schema rose和rose_table
向表格插入数据,并查看
切换至管理员用户omm 发现无法查看私有用户创建的rose_table
但是管理员可以进行drop/alter/truncate table,例如删除数据表