![cover](https://img-blog.csdnimg.cn/img_convert/7ca7738362d74dc0867c0c0ec139a490.png)
6.GaussDB权限分离-小试牛刀
可以看到,新建的用户,只能授予:SYSADMIN/CREATEROLE/AUDITADMIN/OPRADMIN 其中一个..可以并行授予:POLADMIN,CREATEDB 系统权限。权限分离功能,能够有效防止某个用户权限过大,降低安全问题。但是如果开启权限分离功能,则每一个用户只能授予:sysadmin/CREATEROLE/AUDITADMIN/OPRADMIN 其中一个。默认数据库root用
·
1.什么是权限分离
默认数据库root用户,rdsAdmin等用户权限较大,给普通用户不能授予太多的权限。为了让不同的用户有不同的管理权限,所以才有了权限分离。
2.查看默认的权限分离策略
gaussdb=> show enableSeparationOfDuty;
enableSeparationOfDuty
------------------------
off
(1 row)
默认情况下,权限分离策略关闭。root可以管理大多数权限,也可以给用户授予很多权限。
但是如果开启权限分离功能,则每一个用户只能授予:sysadmin/CREATEROLE/AUDITADMIN/OPRADMIN 其中一个。多于一个则不被允许。
3.开启GaussDB的权限分离功能
--系统权限层级 设置GUC参数 --enableSeparationOfDuty = on:
--开启三权分立,三权分立,需要重启集群才能生效。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "enableSeparationOfDuty=on"
cm_ctl stop
cm_ctl start
gaussdb=> show enableSeparationOfDuty;
enableSeparationOfDuty
------------------------
on
(1 row)
权限分离功能开启后,必须重启集群才能生效。
4.各权限说明
--初始安装用户:集群安装过程中自动生成的帐户,拥有系统的最高权限,能够执行所有的操作。
• SYSADMIN:系统管理员权限,权限仅次于初始安装用户,默认具有与对象所有者相同的权限,但不包括监控管理员权限和运维管理员权限。
• MONADMIN:监控管理员权限,具有监控模式dbe_perf及模式下视图和函数的访问权限和授予权限。
• OPRADMIN:运维管理员权限,具有使用Roach工具执行备份恢复的权限。
• CREATEROLE:安全管理员权限,具有创建、修改、删除用户/角色的权限。
• AUDITADMIN:审计管理员权限,具有查看和维护数据库审计日志的权限。
• CREATEDB:具有创建数据库的权限。
• POLADMIN:安全策略管理员权限,具有创建资源标签,数据动态脱敏策略和统一审计策略的权限。
5.权限分离功能开启后,新建用户。
--开启三权分立后,root用户可以创建用户,但是没有修改用户的权限。
gaussdb=> create user user1 with password 'Gauss_123';
CREATE ROLE
gaussdb=> create user user2 with password 'Gauss_123';
CREATE ROLE
gaussdb=> create user user3 with password 'Gauss_123';
CREATE ROLE
--我们使用rdsAdmin用户登陆。
[omm@gaussdb01 ~]$ gsql -d postgres -U rdsAdmin -W Gauss_123 -p 8000
gsql ((GaussDB Kernel 503.1.0.SPC1200 build c28d95e9) compiled at 2023-07-05 16:26:07 commit 5703 last mr 11933 release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
--三权分立,不允许授予多个权限。
gaussdb=# alter user user1 with SYSADMIN CREATEROLE AUDITADMIN;
ERROR: Separation of privileges is used,user can''t be altered because of too many privileges.
--没用用于授予单独的权限。
gaussdb=# alter user user1 with SYSADMIN;
ALTER ROLE
gaussdb=# alter user user2 with CREATEROLE;
ALTER ROLE
gaussdb=# alter user user3 with AUDITADMIN;
ALTER ROLE
--user2具有createrole权限,即可以修改用户。
可以看到:user2用户,有创建用户的权限。
user2无法给其他用户授予:sysadmin/CREATEROLE/AUDITADMIN/OPRADMIN
user2可以给其他用户授予:POLADMIN,CREATEDB,login;
gaussdb=# alter user role2 with login;
ALTER ROLE
gaussdb=> create user user4 with password 'Gauss_123';
CREATE ROLE
gaussdb=> alter user user4 with sysadmin;
ERROR: Permission denied.
gaussdb=> alter user user4 with CREATEROLE;
ERROR: Permission denied.
gaussdb=> alter user user4 with AUDITADMIN;
ERROR: Permission denied.
gaussdb=> alter user user4 with OPRADMIN;
ERROR: Permission denied.
gaussdb=> alter user user4 with CREATEDB;
ALTER ROLE
gaussdb=> alter user user4 with POLADMIN;
ALTER ROLE
gaussdb=> alter user user4 with login;
ALTER ROLE
可以看到,新建的用户,只能授予:SYSADMIN/CREATEROLE/AUDITADMIN/OPRADMIN 其中一个..可以并行授予:POLADMIN,CREATEDB 系统权限。
6.总结
权限分离功能,能够有效防止某个用户权限过大,降低安全问题。是国产数据库在权限方面的新探索和实践。生产环境可以根据需要确认是否开启权限分离功能。数据库默认未开启该功能。
更多推荐
所有评论(0)