RBAC 权限控制模型设计与落地框架
常见的权限控制模型主要有以下几种:
MAC(Mandatory Access Control)
DAC(Discretionary Access Control)
RBAC(Role-Based Access Control)
RBAC(Rule-Based Access Control)
ABAC(Attribute-Based Access Control)
具体参考:常见的权限访问控制模型
本文只关注RBAC(Role-Based Access Control)模型。
借用上述博客的描述,简单说明下RBAC(Role-Based Access Control)模型
RBAC(Role-Based Access Control)
RBAC通常被公司使用, 基于用户的职位给予访问权限。 这里权限被分配到公司里定义的角色上面。
RBAC中用户被分配一个角色, 而它只能拥有角色里包含的权限, 没有可以绕过的方法。
RBAC通过role分离了工作职责。
RBAC模型把权限的认证过程抽象概括为:(Who)是否可以对(What)进行(How)的操作。
简单理解RBAC模型后,我们可以获得以下几个名词:
用户:RBAC的Who
角色:抽象概念,Who与How的桥梁
资源:RBAC的What
访问权限:RBAC的How
概括起来就是:用户可以通过角色上关联的访问权限对资源做访问权限允许范围内的操作(读,写,执行等)。
相关名词加深理解,可以参考:角色、权限、账户的概念理解
一个完整的RBAC权限管理系统应该包括以下两个方面:
1.授权管理
顾名思义,就是对权限的分配过程。
例如对用户进授权,对角色设置访问权限等。
2.鉴权管理
权限判断,当前用户是否有相关权限。
例如是否可以登陆系统,能看到哪些菜单资源,能对菜单资源中的按钮有没有操作权限等。
RBAC用户角色权限设计方案
数据库基于RBAC模型扩展模型完整视图
表说明:
user表:用户信息表,RBAC中的Who。
group表:用户组表,代表一组用户的集合,也可以是dept(部门)或其他。
role表:角色表,一个抽象的概念,主要做Who和How之间的桥梁。
user_role表:用户角色关联表,表示用户有哪些角色,可以一对多的关系。
user_group表:用户与用户组关联表,表示用户在哪些用户组下,可以一对多的关系。
group_role表:用户组角色表,表示用户组有哪些角色,可以一对多的关系。
permission表:操作权限表,RBAC中的How。
role_permission表:角色与权限的关联表,可以一对多。
resource等表:资源相关的表,RBAC中的What
permission_xxx等表:操作权限与资源关联关系表。
资源与权限表存在关联关系,权限表又与角色表存在关联关系,用户想访问相关的资源,包括对资源的一些操作,比如读写操作,则可以关联相关的角色达到相关的访问权限目的;当然用户在用户组下,用户组有相关的角色,用户同样也可以达到相关的访问权限目的。
这就是RBAC的:(Who)是否可以对(What)进行(How)的操作!
基于RBAC模型的权限验证框架与应用
Apache Shiro
spring Security
RBAC参考文献:
Role Based Access Control RBAC