三权分立介绍
默认情况下,拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为避免系统管理员(具有SYSADMIN属性的账户)拥有过度集中的权力带来高风险,可以设置三权分立。将系统管理员的部分权限分立给安全管理员(具有CREATEROLE属性的账户)和审计管理员(具有AUDITADMIN属性的账户)三权分立。
三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限。
三权分立后,系统管理员只会对自己作为所有者的对象有权限。初始用户的权限不受三权分立设置影响。因此建议仅将此初始用户作为DBA管理用途,而非业务应用。
三权分立的设置办法为: 将参数enable_separation_of_duty设置为on。
gs_guc set -I all -N all -c "enable_separation_of_duty=on"
重启集群生效
·管理员(初始用户)
数据库安装过程中自动生成的帐户称为初始用户。初始用户拥有系统的最高权限,能够执行所有的操作。如果安装时不指定初始用户名称则该帐户与进行数据库安装的操作系统用户同名。如果在安装时不指定初始用户的密码,安装完成后密码为空,在执行其他操作前需要通过gsql客户端修改初始用户的密码。如果初始用户密码为空,则除修改密码外无法执行其他SQL操作以及升级、扩容、节点替换等操作。初始用户会绕过所有权限检查。
·系统管理员
系统管理员是指具有SYSADMIN属性的帐户,默认安装情况下具有与对象所有者相同的权限,但不包括dbe_perf模式的对象权限。
·安全管理员
安全管理员是指具有CREATEROLE属性的账户,具有创建、修改、删除用户或角色的权限。
·审计管理员
审计管理员是指具有AUDITADMIN属性的账户,具有查看和删除审计日志的权限。
非三权分立下,数据库用户帐户由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户帐户只能由初始用户和安全管理员创建。
三权分立实验
三权分立关闭时,初始化用户和系统管理员可以创建用户,查看审计日志,锁定解锁用户
设置开启三权分立
gs_guc set -I all -N all -c “enable_separation_of_duty=on”
show enable_separation_of_duty;
创建测试用户
create user user1 identified by ‘Aa123456’;
因开启三权分立,此时SYSADMIN用户创建不了用户,初始化管理员用户不受影响。
创建目录操作表空间
mkdir /tmp/tb1(可根据实际调整)
mkdir /tmp/tb2(可根据实际调整)
分别以pwadmin、pwsso、pwaudit登录数据库,执行如下操作
create tablespace tb1 location ‘/tmp/tb1’;
create tablespace tb2 location ‘/tmp/tb2’;
drop tablespace tb1;
alter tablespace tb2 resize maxsize ‘20m’;
操作模式和表
分别以pwadmin、pwsso、pwaudit登录数据库,执行如下操作
create schema sch1;
create table sch1.tb1(id int);
insert into sch1.tb1 values (99);
查看审计日志
分别以pwadmin、pwsso、pwaudit登录数据库,执行如下操作
select time,type,username,detail_info from pg_query_audit(now()-0.001,now());
安全管理员操作
分别以pwadmin、pwsso、pwaudit登录数据库,执行如下操作
alter user user1 account lock;
alter system set ogmac_enable_mac=‘on’;
总结
初始用户管理员具有数据库最高权限,未开启三权分立时,拥有SYSADMIN权限的系统管理员具有除dbe_perf模式的对象权限外的所有权限。
开启三权分立后:
系统管理员(pwadmin)有权操作表空间、模式、表,无权操作审计日志、锁定、解锁用户和打开强制访问控制参数
审计管理员(pwaudit)有权操作审计日志,无权操作表空间、模式和表、锁定、解锁用户和打开强制访问控制参数
安全管理员(pwsso)有权锁定、解锁用户和打开强制访问控制参数,无权操作审计日志、操作表空间、模式、表




