RBAC 权限模型
RBAC 权限模型
RBAC 模型(Role Based Access Control)基于角色的权限访问控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。如下图
RBAC 支持公认的安全原则:最小特权原则、责任分离原则和数据抽象原则。 在 RBAC 之中,包含用户 users(USERS)、角色 roles(ROLES)、目标 objects(OBS)、操作 operations(OPS)、**许可权 permissions(PRMS)**五个基本数据元素,此模型指明用户、角色、访问权限和会话之间的关系。
RBAC 又可以分为 RBAC0,RBAC1,RBAC2,RBAC3
- RBAC0 基础模型:是 RBAC 的核心思想。
- RBAC1 角色分层模型:是把 RBAC 的角色分层模型。
- RBAC2 角色限制模型:增加了 RBAC 的约束模型。
- RBAC3:其实是 RBAC2 + RBAC1 角色限制模型 + 角色分层模型 RBAC0【基础模型】是 RBAC 的核心,主要有四部分组成
- 用户(User)
- 角色(Role)
- 许可(Permission)
- 会话(Session)
RBAC1【角色分层模型】,基于 RBAC0 模型,引入角色间的继承关系,即角色上有了上下级的区别,角色间的继承关系可分为一般继承关系和受限继承关系 RBAC2【角色限制模型】,基于 RBAC0 模型的基础上,添加了责任分离关系,主要引入了 SSD(静态职责分离)和 DSD(动态职责分离)
- 静态职责分离(Static SD)指定角色的互斥关系,用于用户指派阶段,避免同一用户拥有互斥的角色
- 动态职责分离( Dynamic SD ):指定角色的互斥关系,用于角色激活阶段
SDD 主要应用在用户和角色之间(授权阶段),主要约束: 特点:
- 互斥角色,同一个用户不能授权互斥关系角色,如不能同时授权会计和出纳角色
- 基数约束,一个用户拥有角色是有限的,一个角色拥有的许可是有限的
- 先决条件约束,用户想得到高级权力,必须现拥有低级权力
DSD 会话和角色之间的约束,只要动态决定怎么计划角色,如:一个用户拥有 5 个角色,只激活 1 个 RBAC3【统一模型】,也就是最全面级的权限管理,它是基于 RBAC0 的基础上,将 RBAC1 和 RBAC2 进行整合了,最前面,也最复杂的:RBAC3=RBAC1+RBAC2(统一模型=角色分层模型+角色限制模型) RBAC 的扩展,即用户组 为了更好地管理用户,对用户进行分组归类,简称为用户分组。组也具有上下级关系,可以形成树状视图,用户组可以是组织架构中的实体单位。同时也可以是虚拟的,由用户自己添加、配置的一个角色的集合。角色又是权限的集合。 系统授权方式有两种:
- 正向授权(可访问资源)
- 负向授权(不可访问资源)
权限分类:
- 菜单权限
- 功能权限
- 行级权限
- 列级权限
- 组织机构/部门级数据权限
- 范围型业务数据权限