栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RBAC 权限控制模型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RBAC 权限控制模型

  • 如果没有权限控制,系统的功能完全不设防,全部暴露在所有用户面前,用户登录以后可以使用系统中的所有功能,这是实际运行中不能接受的。
  • 所以权限控制系统的目标就是:管理用户行为,保护系统功能。
  • 那么如何进行权限控制呢?
    • 定义资源
    • 创建权限
    • 创建角色
    • 管理用户
    • 建立关联关系

一、如何进行权限控制呢?
  1. 定义资源:资源就是系统中需要保护起来的功能。具体形式很多:URL 地址、handler方法、service 方法、页面元素等等都可以定义为资源使用权限控制系统保护起来。
  2. 创建权限:一个功能复杂的项目会包含很多具体资源,成千上万都有可能。这么多资源逐个进行操作太麻烦了。为了简化操作,可以将相关的几个资源封装到一起,打包成一个“权限”同时分配给有需要的人。
  3. 创建角色:对于一个庞大系统来说,一方面需要保护的资源非常多,另一方面操作系统的人也非常多。把资源打包为权限是对操作的简化,同样把用户划分为不同角色也是对操作的简化。否则直接针对一个个用户进行管理就会很繁琐。所以角色就是用户的分组、分类。先给角色分配权限,然后再把角色分配给用户,用户以这个角色的身份操作系统就享有角色对应的权限了。
  4. 管理用户:系统中的用户其实是人操作系统时用来登录系统的账号、密码。
  5. 建立关联关系:
    • 权限→资源:单向多对多
      • Java 类之间单向:从权限实体类可以获取到资源对象的集合,但是通过资源获取不到权限
      • 数据库表之间多对多:一个权限可以包含多个资源,一个资源可以被分配给多个不同权限
    • 角色→权限:单向多对多
      • Java 类之间单向:从角色实体类可以获取到权限对象的集合,但是通过权限获取不到角色
      • 数据库表之间多对多:一个角色可以包含多个权限,一个权限可以被分配给多个不同角色
    • 用户→角色:双向多对多
      • Java 类之间双向:可以通过用户获取它具备的角色,也可以看一个角色下包含哪些用户
      • 数据库表之间多对多:一个角色可以包含多个用户,一个用户可以身兼数职
二、 多对多关联关系在数据库中的表示

2.1.没有中间表的情况

如果只能在一个外键列上存储关联关系数据,那么现在这情况无法使用 SQL 语句进行关联查询。

2.2. 有中间表

select t_studet.id,t_student.name from t_student left join t_inner on t_studen.id = t_inner.stuent_id left join t_subject on t_inner.subject_id=t_subject.id where t_subjct.id=1

2.3.中间表主键生成的方式

方式一:另外设置字段作为主键

方式二:使用联合主键(组合起来不能重复即可!)

 三、RBAC 权限模型

鉴于权限控制的核心是用户通过角色与权限进行关联,所以前面描述的权限控制系统可以提炼为一个模型:RBAC(Role-Based Access Control ,基于角色的访问控制)。在 RBAC 模型中,一个用户可以对应多个角色,一个角色拥有多个权限,权限具体定义用户可以做哪些事情。

3.1 RBAC0~RBAC3:4种权限模型介绍

  1. RBAC0:最基本的RBAC模型,RBAC模型的核心部分,后面三种升级版 RBAC 模型也都是建立在 RBAC0的基础上。
  2. RBAC1:在 RBAC0 的基础上增加了角色之间的继承关系。角色 A 继承角色 B 之后将具备 B 的权限再增加自己独有的其他权限。比如:付费会员角色继承普通会员角色,那么付费会员除了普通会员的权限外还具备浏览付费内容的权限。
  3.  RBAC2:在 RBAC0 的基础上进一步增加了角色责任分离关系。责任分离关系包含静态责任分离和动态责任分离两部分。
    1. 静态责任分离:给用户分配角色时生效
      1. 互斥角色:权限上相互制约的两个或多个角色就是互斥角色。用户只能被分配到一组互斥角色中的一个角色。例如:一个用户不能既有会计师角色又有审计师角色。
      2. 基数约束:
        一个角色对应的访问权限数量应该是受限的;一个角色中用户的数量应该是受限的 ;一个用户拥有的角色数量应该是受限的
      3. 先决条件角色:用户想拥有A角色就必须先拥有B角色,从而保证用户拥有 X 权限的前提是拥有 Y 权限。例如:“金牌会员”角色只能授予拥有“银牌会员”角色的用户,不能直接授予普通用户 
    2. 动态责任分离:用户 登录系统时生效
      • 一个用户身兼数职,在特定场景下激活特定角色:马云在阿里巴巴内部激活创始人角色;马云在某企业级论坛上激活演讲嘉宾角色 
  4. RBAC3:RBAC3 是在 RBAC0 的基础上同时添加 RBAC2 和 RBAC3 的约束,最全面、最复杂。

3.2 模型图解

        3.2.1基本RBAC模型

        3.2.2扩展RBAC模型

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号