RBAC(Role-Based Access Control)作为当前使用范围最广的一种权限设计模型,有 3 个基础组成部分,分别是:用户、角色和权限。RBAC 通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离(区别于ACL模型)。不同角色对应不同权限,用户可充当多个角色。
原则
权限划分
在权限管理系统当中一般划分为以下几种权限:
- 页面权限:可看到的页面
- 操作权限:可进行的交互行为
- 数据权限:可查看的数据
安全原则
RBAC的三个著名安全原则:最小权限原则、责任分离原则和数据抽象原则
- 最小权限原则:RBAC可以将角色配置成其完成任务所需的最小权限集合。
- 责任分离原则:可以通过调用相互独立互斥的角色来共同完成敏感的任务,例如要求一个计账员和财务管理员共同参与统一过账操作。
- 数据抽象原则:可以通过权限的抽象来体现,例如财务操作用借款、存款等抽象权限,而不是使用典型的读、写、执行权限。
分类
标准的RBAC模型包括四个部件模型,分别为基本模型RABC0、角色分级模型RABC1、角色限制模型RABC2、统一模型RABC3。
- RBAC0(基本模型)定义了完全支持RBAC概念的任何系统的最低需求。RBAC0的模型中包括用户(U)、角色(R)和许可权(P)等3类实体集合,RABC0是权限管理的核心部分,其他的版本都是建立在0的基础上。
- RBAC1(角色分级模型)基于RBAC0模型,引入角色间的继承关系(Hierarchical
Role),即角色上有了上下级的区别,角色间的继承关系可分为一般继承关系和受限继承关系:
- 一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。
- 受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。这种模型合适于角色之间的层次明确,包含明确。
一般继承关系:上级可继承下级角色的权限,而不受到下级角色所属的限制 | 受限继承关系:上级继承下级角色的权限,但是必须是下级角色所属的上级 |
---|---|
- RBAC2(角色限制模型)引入了角色间的约束关系,主要约束规则包括:角色间的互斥关系,在处理用户和这些角色之间的关系时,包括静态分离和动态分离,静态分离指互斥的角色不能同时赋予同一个用户;动态分离指用户不能同时操作两个互斥的角色进行登录。
当采用静态分离时,互斥的角色不能同时被赋予同一个用户 | 动态分离时,互斥的角色可以同时被赋予同一个用户,则用户登录后需要选择使用的角色,同时要支持根据需要切换角色 |
---|---|
- RBAC3(统一模型)同时包含了1和2的特性(继承关系和约束关系)。