什么是RBAC?
全称:role-based access control 基于角色的权限访问控制
作用:实现访问控制
RBAC模型概括
RBAC权限授权的过程可以概括为:W是否可以对Z进行H的访问操作,并对这个逻辑表达式进行判断是否为true的过程,也是将权限问题转换为Z、H的问题,W、Z、H构成了访问权限三元组。
权限与角色相关联,用户通过称为适当角色的成员而得到这些角色的权限,极大的简化了权限的管理。
RBAC的组成
3个基础组成部分
- 用户
- 角色
- 权限
RBAC通过定义角色的权限,并且对用户授予某个角色来控制用户的权限,从而实现了用户和权限的逻辑分离,方便了权限的管理
1. user(用户):每个用户都有不同且唯一的ID,用来进行识别,并被授予不同的角色
2. role(角色):不同的角色具有不同的权限
3. jurisdiction(权限):访问权限
关系:
- 用户--->角色的映射:用户和角色之间的映射关系
- 角色--->权限的映射:角色和权限之间的映射关系
例如:
用户的角色不同,看到的权限也就有所不同
RBAC的安全原则
- 最小权限原则:将角色配置成其完成所需的最小权限集合
- 责任分离原则:通过调用相互独立且互斥的角色来完成敏感任,例如:记账员和财务管理员共同参与过账操作
- 数据抽象原则:借助于抽象许可权这样的概念实现,例如:在账目管理活动中,可以使用信用,借方等抽象许可权,而不是使用典型的读、写、执行权限
RBAC的优缺点
优点:
1. 便于授权管理
2. 便于角色的划分
3. 便于赋予最小权限的原则
4. 便于职责的分离
5. 便于客体分类
缺点:
- 没有提供操作顺序的控制机制,这一缺陷使RBAC模型很难适应那些对操作顺序有严格要求的系统
RBAC的3种模型
1. RBAC0:最简单、最原始的实现方式,也是其他RBAC模型的基础
在该模型中,用户和角色之间可以是多对多的关系,一个用户在不同场景下是可以有不同的角色。
2. RBAC1:基于RBAC0模型,引入了角色间的继承关系,角色上有了上下级的区别
3. RBAC2:基于RBAC0模型的基础上,进行了角色的访问控制