一. RBAC模型概述
RBAC模型(Role-Based Access Control:基于角色的访问控制):RBAC认为权限授权实际上是Who, What, How的问题,也就是访问权限的三元组。
RABAC属于译中分析模型,主要分为:基本模型RBAC0(Core RBAC)、角色分层模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)。
二. RBAC模型的分类
RBAC模型可以分为:RBAC0、RBAC1、RBAC2、RBAC3 四种。其中 RBAC0 是基础,其它三种都是在 RBAC0 基础上的变种。大部分情况下,使用 RBAC0 模型就可以满足常规的权限管理系统设计了。
1. RBAC0
RBAC0是RBAC的核心,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。RBAC0定义了能构成RBAC控制系统的最小的元素集合,RBAC0由四部分构成:
用户:权限的使用主体
角色:包含许可的集合
会话:绑定用户和角色关系映射的中间通道,而且角色必须通过会话才能给用户设置角色
许可:对特定资源的特定访问许可
图中:用户和角色是多对多关系,角色和许可也是多对多关系,用户与会话是一对一关系,会话和角色是一对多关系。
2.RBAC1
RBAC1是基于RBAC0模型基础之上的,引入了角色间的继承关系,角色之间有了上下级关系或者等级关系(父角色拥有其子角色的所有许可)。
3.RBAC2
RBAC2,它是RBAC的约束模型,RBAC2也是建立的RBAC0的基础之上的,在RBAC0基础上假如了约束的概念,主要引入了静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。
SSD是用户和角色的指派阶段加入的,主要是对用户和角色有如下约束:
a、互斥角色:同一个用户在两个互斥角色中只能选择一个
b、基数约束:一个用户拥有的角色是有限的,一个角色拥有的许可也是有限的
c、先决条件约束:用户想要获得高级角色,首先必须拥有低级角色
DSD是会话和角色之间的约束,可以动态的约束用户拥有的角色,如一个用户可以拥有两个角色,但是运行时只能激活一个角色。
4.RBAC3
RBAC3,它是RBAC1与RBAC2合集,所以RBAC3是既有角色分层又有约束的一种模型。
三.RBAC支持的安全原则
RBAC支持三个著名的安全原则:最小权限原则,责任分离原则和数据抽象原则。
最小权限原则:RBAC可以将角色配置成其任务所需的最小权限集合
责任分离原则:可以通过调用相互独立互斥的角色来共同完成敏感的任务。
数据抽象原则:可以通过权限的抽象来体现。