ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RBAC模型

2021-08-06 22:00:47  阅读:253  来源: 互联网

标签:角色 RBAC0 模型 用户 RBAC 权限 用户组


前言

权限管理几乎是所有后台管理系统必要的组成部分,主要针对不同权限的人对资源的访问控制,可以避免因权限缺失而导致不必要的风险问题,如资源数据泄露、或误入系统操作不当导致的风险。

目前我所了解的权限框架有:

  • Apache Shrio
  • Spring Security

权限模型

目前普及度最高的就是 RBAC 模型(Role-Based Access Control)

RBAC模型主要分为RBAC0、RBAC1、RBAC2、RBAC3,RBAC0是所有模型的基础,其他三种是基于RBAC0模型的扩展与变形。

RBAC0模型

RBAC0是基础,定义了能构成RBAC模型的最小集合。

用户

发起操作的主体。不限于单个用户,也可以是用户组。只要是对资源有访问需求的都可以称之为用户。

角色

起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限。如果一个用户关联多个角色,那么用户就拥有了多个角色的权限许可。简而言之就是权限的集合。

权限许可

用户对资源的访问权限许可。包括:页面权限,操作权限,数据权限等。

会话

用户通过会话对角色进行操作,即用户对角色的分配控制操作。

RBAC1模型

RBAC1模型引入了角色继承的概念,即角色拥有上下级关系或等级关系。父类角色拥有子类角色的所有的权限。

角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。

而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。这种设计可以给角色分组和分层,一定程度简化了权限管理工作。

比如:部门主管只能更改该部门的员工信息,经理能更改所有部门主管的信息和所有部门的员工信息。

RBAC2模型

RBAC2RBAC0 的基础上引入了静态职责分离(Static Separation of Duty,简称SSD)和动态职责分离(Dynamic Separation of Duty,简称DSD)两个约束概念。他们两个作用的生命周期是不同的。

  • SSD 作用于约束用户和角色绑定时。

    1. 互斥角色:就像上面的例子你不能既是A又是B,互斥的角色只能二选一 ;

    2. 基数约束:用户的角色数量是有限的不能多于某个基数;

    3. 条件约束:只能达到某个条件才能拥有某个角色。经常用于用户等级体系。

  • DSD 作用于会话和角色交互时。当用户持有多个角色,在用户通过会话激活角色时加以条件约束,根据不同的条件执行不同的策略。

RBAC3模型

1 + 2 = 3 —> RBAC1 + RBAC2 = RBAC3

整合了RBAC1、2的模型,目前迭代后的最全面版本。

用户组

我们前面提到过用户组,当平台用户基数增大,角色类型增多时,并且有一些用户具有相同的属性,比如研发部的所有员工,如果直接给用户分配角色,管理员的工作量就会很大,如果把相同属性的用户归类到某用户组,那么管理员直接给用户组分配角色,此时用户组的每个用户都拥有该角色。之后其他用户加入到该用户组后,会自动获取用户组的所有角色,退出用户组同时也会撤销该角色,无需手动管理角色。

标签:角色,RBAC0,模型,用户,RBAC,权限,用户组
来源: https://www.cnblogs.com/leejk/p/15110464.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有