RBAC权限管理设计

  • 一、概述
  • 二、权限模型
  • 三、RBAC模型
    • 什么是RBAC模型
    • 基本模型RBAC0
    • 角色分层模型RBAC1
    • 角色限制模型RBAC2
    • 统一模型RBAC3
    • 基于RBAC的延展——用户组
    • 总结:

一、概述

不管是开发手机APP,Web网站还是小程序等项目,基本上都需要一个后台管理系统的支撑。而每个后台管理系统都有一个通用的模块就是用户权限管理模块,权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的用户访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。目前很多公司采用微服务架构,权限系统自然就独立出来了。

二、权限模型

迄今为止最为普及的权限设计模型是RBAC模型,基于角色的访问控制。权限是用户可以访问的资源,包括页面权限,操作权限,数据权限。

三、RBAC模型

什么是RBAC模型

RBAC是一套成熟的权限模型。在传统权限模型中,我们直接把权限赋予用户。而在RBAC中,增加了“角色”的概念,我们首先把权限赋予角色,再把角色赋予用户。这样,由于增加了角色,授权会更加灵活方便。
在RBAC中,根据权限的复杂程度,又可分为RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基础,RBAC1、RBAC2、RBAC3都是以RBAC0为基础的升级。我们可以根据自家产品权限的复杂程度,选取适合的权限模型。

基本模型RBAC0

RBAC0是基础,很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。

用户是发起操作的主体,按类型分可分为2B和2C用户,可以是后台管理系统的用户,可以是OA系统的内部员工,也可以是面向C端的用户,比如阿里云的用户。
角色起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限,同时每个用户关联多个角色,那么这个用户就有了多个角色的多个权限。
有人会问了为什么用户不直接关联权限呢?在用户基数小的系统,比如20个人的小系统,管理员可以直接把用户和权限关联,工作量并不大,选择一个用户勾选下需要的权限就完事了。但是在实际企业系统中,用户基数比较大,其中很多人的权限都是一样的,就是个普通访问权限,如果管理员给100人甚至更多授权,工作量巨大。这就引入了"角色(Role)"概念,一个角色可以与多个用户关联,管理员只需要把该角色赋予用户,那么用户就有了该角色下的所有权限,这样设计既提升了效率,也有很大的拓展性。

角色分层模型RBAC1

RBAC1建立在RBAC0基础之上,在角色中引入了继承的概念。简单理解就是,给角色可以分成几个等级,每个等级权限不同,从而实现更细粒度的权限管理。

举例:基于之前RBAC0的例子,我们又发现一个公司的销售经理可能是分几个等级的,譬如除了销售经理,还有销售副经理,而销售副经理只有销售经理的部分权限。这时候,我们就可以采用RBAC1的分级模型,把销售经理这个角色分成多个等级,给销售副经理赋予较低的等级即可。

角色限制模型RBAC2

RBAC2同样建立在RBAC0基础之上,仅是对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类,即静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。

举例:还是基于之前RBAC0的例子,我们又发现有些角色之间是需要互斥的,譬如给一个用户分配了销售经理的角色,就不能给他再赋予财务经理的角色了,否则他即可以录入合同又能自己审核合同;再譬如,有些公司对角色的升级十分看重,一个销售员要想升级到销售经理,必须先升级到销售主管,这时候就要采用先决条件限制了

统一模型RBAC3

RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分层,也包括可以增加各种限制。

举例:这个就不举例了,统一模型RBAC3可以解决上面三个例子的所有问题。当然,只有在系统对权限要求非常复杂时,才考虑使用此权限模型。

基于RBAC的延展——用户组

基于RBAC模型,还可以适当延展,使其更适合我们的产品。譬如增加用户组概念,直接给用户组分配角色,再把用户加入用户组。这样用户除了拥有自身的权限外,还拥有了所属用户组的所有权限。

举例:譬如,我们可以把一个部门看成一个用户组,如销售部,财务部,再给这个部门直接赋予角色,使部门拥有部门权限,这样这个部门的所有用户都有了部门权限。用户组概念可以更方便的给群体用户授权,且不影响用户本来就拥有的角色权限。

总结:

权限系统可以说是整个系统中最基础,同时也可以很复杂的,在实际项目中,会遇到多个系统,多个用户类型,多个使用场景,这就需要具体问题具体分析,但最核心的RBAC模型是不变的,我们可以在其基础上进行扩展来满足需求。

RBAC权限管理设计思想相关推荐

  1. RBAC权限管理设计

    RBAC权限管理设计 一.RBAC组成 1. RBAC 2. RBAC组成 3. RBAC支持的安全原则 4. RBAC的优缺点 二.RBAC权限分配 1. RBAC的功能模块 2. RBAC权限分配 ...

  2. 大型门户网站的RBAC用户权限管理设计

    这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百度.阿里巴巴.淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组.角色组.权限组.操作 ...

  3. 系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)

    权限设计(转:http://blog.csdn.net/chexlong/article/details/37697555)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可 ...

  4. 系统权限管理设计 (转)

    权限设计(初稿)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑 ...

  5. nest-mysql:RBAC权限管理

    文章问题导向 RBAC权限管理是什么?如何设计数据库?如何实现? 如果你都有了答案,可以忽略本文章,或去nest学习导图寻找更多答案 阅前必知 阅读此文,需要有一定的数据库知识 此文并非最佳实践,只能 ...

  6. SQL Server:OA权限管理设计的实现 下

    SQL Server:OA权限管理设计的实现 下 OA系统权限管理设计方案      不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是最基本的功能.      可以对"组 ...

  7. 通用权限管理设计 之 数据权限

    阅读目录 前言 初步分析 通用查询机制 数据权限规则 实际应用 结语 前言 前一篇文章<通用权限管理设计 之 数据库设计方案>介绍了[主体]- [领域] - [权限]( who.what. ...

  8. (转)通用权限管理设计 之 数据权限

    转自:leo's Space http://www.cnblogs.com/leoxie2011/archive/2012/03/20/2408542.html 阅读目录 前言 初步分析 通用查询机制 ...

  9. Java Web RBAC权限管理

    前言 权限管理是在项目中经常要使用到的模块,有着极其重要的功能.比较出名的权限框架,分别为 Shiro 和 Spring Security,两者各有优缺,这次我们不用任何权限框架来实现 RBAC 权限 ...

最新文章

  1. JVM实用参数 GC日志
  2. Docker Review - docker images 常用命令
  3. iOS NSOperation 非并发执行
  4. java 扫描所有子类_java获取全部子类或接口的全部实现
  5. Linux 安装Zookeeper单机版(使用Mac远程访问)
  6. Linux基础命令---findfs
  7. 使用jdbc连接mysql数据库代码示例
  8. 我见过的最漂亮代码---通过删除代码来实现功能的提升
  9. 水晶报表常见问题整理之一(20050417)
  10. 根据Request获取客户端IP
  11. Linux版本加载过程异响,完美解决Ubuntu Linux关机异响[SATA硬盘]
  12. python3 词频统计计数分析+可视化词云 jieba+wordcloud 数据分析
  13. Spring事务同步synchronized一起使用引发的问题
  14. 三大运营商流量卡的现状:不兼容,死卡,三网物联卡你选对了吗?
  15. 锐捷——DCHP动态分配IP地址
  16. 2017-2018-2 1723《程序设计与数据结构》问题汇总 (更新完毕)
  17. 清华牛人总结的数据分析笔记
  18. 最终幻想7php攻略,最终幻想7图文攻略 PS版FF7全剧情任务攻略(CD1)(6)
  19. 热烈祝贺重庆大学75周年校庆
  20. 加州大学圣地亚哥计算机硕士申请,美国加州大学圣地亚哥分校计算机工程硕士.pdf...

热门文章

  1. Go Web——HttpRouter路由
  2. 实验五 数码管扫描显示电路
  3. ultraedit使用教程
  4. 基于C#+MySQL开发的小型宾馆管理系统设计与实现
  5. 编程循迹小车传感器怎么定义_宝马DSC系统故障怎么办?如何解决?
  6. HWiNFO查询电脑硬件、电脑温度、测试性能(HWiNFO32, HWiNFO64)
  7. 准确率上升,损失loss也上升
  8. 电流互感器输出波形测试
  9. 池建国-锤子科技云平台研发总监
  10. bat脚本自定义魔兽warIII运行分辨率,去黑边