RBAC概念与系统设计
RBAC 的概念
RBAC (Role-Based Access Control) 以角色为基础的访问控制模型是一套较强制访问控制以及自由选定访问控制更为中性且更具灵活性的访问控制技术。
首先是RBAC中的几种对象:
- S = 主体 (Subject) = 一名使用者或自动代理人
- R = 角色 (Role) = 被定义为一个授权等级的工作职位或职称
- P = 权限 (Permission) = 一种存取资源的方式
- SE = 会期 (Session) = S,R或P之间的映射关系
- SA = 主体指派 (Subject Assignment)
- PA = 权限指派 (Permission Assignment)
- RH = 角色阶层 (Role Hierarchy)。能被表示为:≥(x ≥ y 代表 x 继承 y 的权限)
其次各对象间具有如下关系:
主体和角色是多对多关系。
${\displaystyle SA\subseteq S\times R}$
角色和权限是多对多关系。
${\displaystyle PA\subseteq P\times R}$
对RBAC的理解
在了解RBAC相关概念之后,在此谈谈自己的理解。
RBAC是一种MAC (Mandatory Access Control) 即由系统管理员统一配置管理个用户角色。
S(主体)R(角色)、SE(会话)的关系如上图所示,即虽然一个主体可以拥有多个角色,但主题在登陆系统后(即在与系统的一个会话期间)只能行使一个角色的权力,
而P(权限)由系统所提供的服务决定,实则是系统提供的资源以及对资源所进行的操作的的组合,也正是资源与操作的组合才使得权限这个概念有了意义。
应用
我对RBAC的应用场景的定义:一个资源由系统共有且具有多种分层的角色的责任分立的系统。
资源由系统共有,且具有多种、分层的角色,这表明系统中的资源对于每一个角色的意义都不一样,因此每个角色对资源承担的责任也因此而不一样,因此对于这样的系统,RBAC是一种十分合适的访问控制模型,可以有效地分配权利与责任,从而更好地保护与利用系统中的资源。
例如:商业公司、以及遵循最小权限原则 (Principle of least privilege) 的操作系统。
而对于一个资源由个人所拥有的系统来说,每个角色都是平等的,每个角色对于自己的资源具有完全的控制权,此时RBAC模型显得力不从心,而应该使用DAC (Discretionary Access Control) 模型,这在社交网络系统中十分常见。
实际的场景中不可能存在纯粹的共有资源与纯粹的独享资源,因此常常将这两种模型混合使用。例如:微信中普通用户可以对自己的“资源”(朋友圈)具有完全的管理权限。但普通用户无法对其他用户进行管理,“举报”这个功能的实现则有赖于系统中其他具有更高权限的角色进行干预。