DWS提供的权限包括“管控面”和各组件的操作维护权限,在实际应用时需根据业务场景为各用户分别配置不同权限。为了提升权限管理的易用性,“管控面”引入角色的功能,通过选取指定的权限并统一授予角色,以权限集合的形式实现了权限集中查看和管理。
这样一方面对普通用户屏蔽了内部的权限管理细节,另一方面对管理员简化了权限管理的操作方法,提升了权限管理的易用性和用户体验。
集中权限管理中权限、角色和用户的关系例如图1所示。
图1 权限管理与用户关联示意图
DWS提供多种权限,根据业务场景实际需要选择指定的权限授予不同角色,可能是一个或者多个权限对应一个角色。
l 角色A:授予操作权限A和B,用户A和用户B通过分配角色A取得对应的权限。
l 角色B:授予操作权限C,用户C通过分配角色B取得对应的权限。
l 角色C:授予操作权限D和F,用户C通过分配角色C取得对应的权限。
通过GRANT把角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。只对自己的表有所有权限,对其他用户放在属于各自模式下的表无权限。
3 基于角色的权限管理模型Ø 系统中的权限:
系统权限:系统规定用户使用数据库的权限
对象权限:在表、序列、函数等数据库对象上执行特殊动作的权限。
Ø 借助角色机制:
当给一组权限相同的用户授权时,不需对这些用户逐一授权。
通过将角色付给一个用户可是的该用户拥有这个角色中的所有权限。
一个用户可以属于不同的角色,拥有不同角色的权限。
Ø 普通模式下:
数据库管理员和业务用户(只读用户、只写用户、读写用户)
p 在角色机制下,角色被视为一个数据库用户或者一组数据库用户。
p 数据库用户主要用途是连接数据库、访问数据库对象和执行SQL语句。
p 通常使用ROLE来组织权限,使用用户进行实际用户操作。
p 角色之间的权限可以继承,用户组的所有用户自动继承角色的权限。
4 权限种类及对象列表 4.1 角色权限与对象权限Ø 角色是权限的集合,权限限制了用户的行为
Ø 通过为用户分配角色,限定用户的权利范围
Ø 使用角色管理权限,更加有效
Ø 使用角色管理其所有用户权限,更加统一
Ø 角色可以被派生(开启资源管控,层级两层)
Ø 角色的对象权限集合可以被继承,系统权限无法继承
4.2 涉及权限的数据库对象数据库(DATABASE)、用户(USER)、模式(SCHEMA)、表(TABLE)、函数(FUNCTION)、表空间(TABLESPACE)、类型(TYPE)、角色(ROLE)
4.3 查看对象权限通过系统表字段查看对象权限变化:
1、用户mytbl1为用户along1所拥有的表,且表along2对mytbl1有select(r)查询权限。
#select relname,relacl from pg_class where relname = 'mytbl1';
relname | relacl
---------+-----------------------------------------
mytbl1 | {along1=arwdDxt/along1,along2=r/along1}
2、将mytbl1的插入权限赋给along2。
# grant insert on along1.mytbl1 to along2;
3、查看到用户along2已经拥有了对mytbl1的insert(a)权限。
# select relname,relacl from pg_class where relname = 'mytbl1';
relname | relacl
---------+------------------------------------------
mytbl1 | {along1=arwdDxt/along1,along2=ar/along1
5 权限管理 5.1 权限机制数据库对象创建后,进行对象创建的用户就是该对象的所有者。集群安装后的默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。
为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。
DWS支持以下的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、CREATE、CONNECT、EXECUTE和USAGE。不同的权限与不同的对象类型关联。可以使用GRANT。