博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RBAC:基于角色的权限访问控制
阅读量:4095 次
发布时间:2019-05-25

本文共 1042 字,大约阅读时间需要 3 分钟。

RBAC:基于角色的权限访问控制(Role-Based Access Control)

RBAC关系图

用户与角色之间是多对多关系,角色与操作(权限)之间也是多对多关系

在这里插入图片描述

数据库表的设计

在数据库表设计中,如果是多对多关系需要使用关联表

  1. 用户表:登录的用户
  2. 角色表:用户拥有的角色
  3. 权限表:角色拥有的权限
  4. 用户角色表:用户表和角色表的关联表
  5. 角色权限表:角色表和权限表的关联表
    在这里插入图片描述

RBAC的3种模型

(1)RBAC0

RBAC0是最简单、最原始的实现方式,也是其他RBAC模型的基础
在这里插入图片描述
在该模型中,用户和角色之间可以是多对多的关系,即一个用户在不同场景下是可以有不同角色的。例如:项目经理也可能是组长也可能是架构师。同时每个角色都至少有一个权限。这种模型下,用户和权限被分离独立开来,使得权限的授权认证更加灵活

(2)RBAC1

基于RBAC0模型,引入了角色间继承关系,即角色上有了上下级的区别
在这里插入图片描述
角色间的继承关系可分为一般继承关系受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承

这种模型适合于角色之间层次分明,可以给角色分组分层

(3)RBAC2

RBAC2,基于RBAC0模型的基础上,进行了角色的访问控制

在这里插入图片描述

RBAC2中的一个基本限制是互斥角色的限制,互斥角色是指各自权限可以互相制约的两个角色。对于这类角色一个用户在某一次活动中只能被分配其中的一个角色,不能同时获得两个角色的使用权

该模型有以下几种约束:

  • 互斥角色 :同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。互斥角色是指各自权限互相制约的两个角色。对于这类角色一个用户在某一次活动中只能被分配其中的一个角色,不能同时获得两个角色的使用权。常举的例子:在审计活动中,一个角色不能同时被指派给会计角色和审计员角色
  • 基数约束 :一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;同样一个角色对应的访问权限数目也应受限,以控制高级权限在系统中的分配。例如公司的领导人是有限的
  • 先决条件角色 :可以分配角色给用户仅当该用户已经是另一角色的成员;对应的可以分配访问权限给角色,仅当该角色已经拥有另一种访问权限。指要想获得较高的权限,要首先拥有低一级的权限。就像我们生活中,国家主席是从副主席中选举的一样
  • 运行时互斥 :例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色
你可能感兴趣的文章
再见,Eclipse...
查看>>
超全汇总!B 站上有哪些值得学习的 AI 课程...
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
神器面世:让你快速在 iOS 设备上安装 Windows、Linux 等操作系统!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
太赞了!GitHub 标星 2.4k+,《可解释机器学习》中文版正式开放!
查看>>
程序员用 AI 修复百年前的老北京视频后,火了!
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>
当你无聊时,可以玩玩 GitHub 上这个开源项目...
查看>>
B 站爆红的数学视频,竟是用这个 Python 开源项目做的!
查看>>
安利 10 个让你爽到爆的 IDEA 必备插件!
查看>>
自学编程的八大误区!克服它!
查看>>
GitHub 上的一个开源项目,可快速生成一款属于自己的手写字体!
查看>>
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>
JS中各种数组遍历方式的性能对比
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>
linux 内核—进程的地址空间(1)
查看>>