RBAC模型

注:原文于2017.5.24发于公众号

没有为什么,就是看到了这个知识点,所以记下来,学习。

RBAC is short for Role-based Access Control. 翻译过来就是“基于角色的访问控制”。该模型最常应用于系统权限设计中。权限系统的目的有三个:创造权限、分配权限、使用权限。该模型提供的解决方案是:许可角色的操作内容和范围,然后将角色赋予主体。

从简到繁,RBAC提供了四种模型:

  • 基本模型RBAC0(Core RBAC)
  • 角色分层模型RBAC1(Hierarchal RBAC)
  • 角色限制模型RBAC2(Constraint RBAC)
  • 统一模型RBAC3(Combines RBAC)

下面用图解和案例说明这四种模型的延展关系。

一、基本模型RBAC0(Core RBAC)

RBAC模型_第1张图片

其中有四个对象:

  • 用户(User)
  • 角色(Role)
  • 会话(Session)
  • 许可(Permission)

创建许可,定义被控制的对象和可对其执行的操作,这一步可以认为是原子化的设置。然后将许可赋予角色。当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的许可。而指定的这个过程,是通过会话实现的。用户必须通过会话才可以设置角色,是用户与激活的角色之间的映射关系。
此处都是多对多的关系。

举例:在校园里

  • 用户:学生A,学生B,教师C,教师D……
  • 角色:图书管理员、班长、学习委员、教导主任……
  • 许可:图书登记、考试督导、带领晨读、接待外宾……
    • “带领晨读”这个许可,既可以授予班长,也可以授予学习委员
    • “接待外宾”的许可,只可以授予教导主任
      “学生A”既可以是图书管理员,也可以同时担任班长
      “教师C”既可以是图书管理员,也可以同时任职教导主任

二、角色分层模型RBAC1(Hierarchal RBAC)

RBAC模型_第2张图片

这张图新增了角色的分层,即角色中产生了父子关系,在现实中代表的含义如:
没当上学习委员前你不能当班长;学习委员能做的事,班长全部都能做,但班长的事,学习委员只能做部分。

三、角色限制模型RBAC2(Constraint RBAC)

RBAC模型_第3张图片

这个模型升级的地方在于引入了静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。

SSD是用户和角色的指派阶段加入的,主要是对用户和角色有如下约束:
互斥角色:同一个用户在两个互斥角色中只能选择一个(学习委员和班长不能由同一位学生担任)

基数约束:一个用户拥有的角色是有限的,一个角色拥有的许可也是有限的(一名教师最多只能担任两个职务,做了教导主任和图书管理员就不能当教研组长)

先决条件约束:用户想要获得高级角色,首先必须拥有低级角色

DSD是会话和角色之间的约束,可以动态的约束用户拥有的角色,如一个用户可以拥有两个角色,但是运行时只能激活一个角色。

四、统一模型RBAC3(Combines RBAC)

RBAC模型_第4张图片

最后这个模型就是对上述两种模型的整合。

图片与部分内容来源:
http://blog.csdn.net/zwk626542417/article/details/46726491

RBAC模型_第5张图片

微信扫一扫关注该公众号

你可能感兴趣的:(RBAC模型)