一、RBAC模型
目前业界控制权限的模型主要是基于RBAC(Role Based Access Control)理论,RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,Who、What、How构成了访问权限三元组,也就是“Who(权限的拥用者或主体)对What(Which)(权限针对的对象或资源)进行How(具体的权限)的操作”。
RBAC模型引入了“角色”的概念。所谓“角色”就是一个或一群用户在系统中可执行操作的集合,它是一个用户的集合,又是一个授权许可的集合。通过将角色指派给用户,为角色赋予权限的方式,使用户和权限通过角色间接相联系。RBAC基本模型如图所示:
在RBAC中,用户与角色之间、角色与权限之间都是多对多的关系。会话是一个用户对多个角色的映射,此时的用户权限可以为激活角色权限的并集。RBAC对资源授权管理过程分为两个部分,首先实现访问权限与角色相关联,然后再实现角色与用户相关联,从而实现了用户与访问权限的逻辑分离。
二、权限类型
在现实世界中,权限主要分为数据权限、页面和操作权限
数据权限:即账号可以看到的数据范围,比如公司管理者(董事长、CXO)能看到公司的所有数据,而区域的人只能看区域产生的数据。在设计过程中,数据权限控制的难易程度与业务和公司部门设置的复杂程度有关。
页面和操作权限:页面权限是指用户可以看到的页面,操作权限则指用户可以进行哪些操作,比如增、删、改、查; 在产品设计的时候,可以将页面权限和操作权限做到集合中去,创建角色的时候将权限赋予给角色即可。
系统的主要流程为:将权限设置成不同的集合,即角色;然后将用户、职位绑定到角色. 那么这些用户或职位即拥有相关的角色; 一个用户可以绑定多个角色,一个角色可以有多重权限。同事,一个用户可以有有多个职位,一个职位也有多个用户.
如上图,用户拥有了角色1和角色2,从而拥有了增加、删除、编辑的权限;职位也拥有这两张角色,所以也有这些权限。
三、权限系统规划
背景:多个产品没有统一的权限管理,各自管理杂乱且增加开发的工作量,需要一个统一且功能完备的权限管理系统。
解决方案:建立统一的权限系统,能快速接入各平台进行权限管理,可针对不同平台权限管理需求定制授权内容。可查询用户权限及权限操作日志。
规划
权限系统核心的功能可以分为平台管理、授权管理、角色管理、用户管理、用户权限查询;辅助功能包括操作日志、管辖反查(角色>>> 所有对象、权限>>> 所有对象)。
四、权限系统思考
1.如何能设计高度抽象的模型,方便所有平台管理。
2.是否有完善的职位体系。
3.在一些系统流程中,还需要为权限设置互斥和继承,这样的话,拥有互斥权限的两个角色就不能同时绑定给同一个账号了。继承的话,拥有父权限则相应具有其所有子权限。
4. 特例情况的纳入;比如数据权限,区域HR归属于HR事业群,与实际产生业绩的节点归属于前线业务群,但却希望看到区域数据。
本文分享自 小草学Python和SQL 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!