首页 > 其他分享 >基于RBAC模型的权限管理设计

基于RBAC模型的权限管理设计

时间:2023-05-26 19:06:12浏览次数:37  
标签:映射 角色 模型 用户 关联 RBAC 权限 资源

[toc]

目的

管理系统用户的功能菜单权限,物理资源(文件、数据)权限。

RBAC模型

简介

RBAC模型(Role-Based Access Control:基于角色的访问控制)是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。

RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为Who、What、How的问题,Who、What、How构成了访问权限三元组,具体的理论可以参考RBAC96。

核心对象

用户、角色、权限

组成

RBAC0

RBAC0是基础,很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。譬如我们做一款企业管理产品,可以抽象出几个角色,譬如销售经理、财务经理、市场经理等,然后把权限分配给这些角色,再把角色赋予用户。这样无论是分配权限还是以后的修改权限,只需要修改用户和角色的关系,或角色和权限的关系即可,更加灵活方便。此外,如果一个用户有多个角色,譬如王先生既负责销售部也负责市场部,那么可以给王先生赋予两个角色,即销售经理、市场经理,这样他就拥有这两个角色的所有权限。

RBAC1

RBAC1建立在RBAC0基础之上,在角色中引入了继承的概念,即增加角色组的概念。简单理解就是,给角色分成几个等级,用户关联角色组、角色组关联角色,角色关联权限。从而实现更细粒度的权限管理。

RBAC2

RBAC2同样建立在RBAC0基础之上,仅是对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类,即静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。静态职责分离,如果一个任务有3个步骤,那么要求必要有至少3个不同用户处理完毕,任务才完结。又如,一个任务有2个步骤,要求必须由两个不同角色的用户来处理,且不能是同一个用户,即一个用户不可同时拥有该两个角色,这种可称之为静态互斥角色。动态职责分离,动态分配系统资源和功能的权限,如某些资源在特定时间才允许对某些用户开放。

RBAC3

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

拓展RBAC模型

针对物理资源的权限管理

系统资源可分为逻辑资源和物理资源。逻辑资源如软件系统的菜单、页面、按钮等等;物理资源如视频文件、音频文件、pdf文件等等。其中逻辑资源可以通过权限来控制,物理资源可通过在角色下设置资源列表,通过角色关联资源列表实现,也可直接将用户和资源列表关联实现。

增加用户组管理

基于RBAC模型,还可以适当延展,使其更适合我们的产品。譬如增加用户组概念,用户组凌驾用户之上,是用户的一个集合。可通过增加UserGroup实现,也可以通过引入组织架构实现(即用户的管理变成了组织-部门-用户的管理)。

权限管理设计

功能权限管理

  • 以RBAC0模型为基础建立核心业务实体:单位(公司/部委/组织机构)、部门(科室)、用户、角色、权限
  • 使用关联实体为核心业务实体建立映射关系:用户角色、角色权限等
  • 为方便数据查询和业务拓展,增加单位权限、单位角色映射关系。此两项非必须。
  • 可按照RBAC1模型的设计思路,增加角色组,用户关联角色组、角色组关联角色,角色关联权限。从而实现更细粒度的权限管理。
  • 可按照RBAC1模型的思想,将部门和用户的映射关系修改为m:n,将能够实现一个用户归属多个组织的权限管理。如分公司的董事长同时兼任集团公司部门领导的情况。其中隐含了单位和部门关系为多对多,部门和用户关系为多对多。当用户登录的时候,让用户自己选择需要在哪个组织下工作。鉴于这种情况的项目相对而言为少数,大部分项目没有那么复杂的组织架构,可以对外提供两套解决方案。

基于RBAC模型的权限管理设计_权限管理

资源权限管理

业务弱关联性设计

  • 资源本身作为一个业务实体,为资源划分类型
  • 资源和单位建立映射关系,用户隶属于单位
  • 资源和部门建立映射关系,用户隶属于部门
  • 资源和角色建立映射关系,用户关联角色
  • 资源和行政区划建立映射关系,用户关联行政区划或部门关联行政区划或单位关联行政区划
  • 拓展:资源和XXX业务实体建立映射关系,用户关联XXX业务实体

基于RBAC模型的权限管理设计_权限管理_02

优点:资源和业务实体为弱关联性,可封装成微服务组件对外赋能 缺点:关系模式更加复杂,开发、运维成本高

业务强关联性设计

基于组织架构、职权(角色)、业务归属、区域、坐标等的业务实体建立映射关系

  • 数据权限的管理最简单的维度就是基于功能权限的管理
  • 根据业务数据归属分别建立用户和数据的映射关系
  • 根据业务数据所属业务闸口、区域(行政区域,地缘,自定义划区)和业务实体建立映射关系,业务实体最终落到用户上
  • 根据业务数据治理出来的坐标体系建立映射管理
  • 其他维度的数据权限管理

基于RBAC模型的权限管理设计_映射关系_03

优点:方便和业务集成、迁移顺滑 缺点:和业务强绑定

缓存设计

基于RBAC模型的权限管理设计_权限管理_04

可能出现的问题: 1:用户权限信息庞大,往redis中存储大数据块 2:用户权限信息庞大,Mysql数据库查询效率低

标签:映射,角色,模型,用户,关联,RBAC,权限,资源
From: https://blog.51cto.com/u_14656761/6358251

相关文章

  • mysql创建用户及分配操作权限
    MySQL在安装时,会默认创建一个名为root的用户,该用户拥有超级权限,可以控制整个MySQL服务器,所以如果滥用root账户,对于系统来说是很不安全的。MySQL提供了以下3种方法创建用户。使用GRANT语句创建用户使用CREATEUSER语句创建用户在mysql.user表中添加用户1.使......
  • 深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick
    深度学习进阶篇-预训练模型[3]:XLNet、BERT、GPT,ELMO的区别优缺点,模型框架、一些Trick、TransformerEncoder等原理详细讲解1.XLNet:GeneralizedAutoregressivePretrainingforLanguageUnderstanding1.1.从AR和AE模型到XLNet模型自回归模型(AutoregressiveModel,AR),通过估计......
  • iOS MachineLearning 系列(18)—— PoseNet,DeeplabV3与FCRN-DepthPrediction模型
    iOSMachineLearning系列(18)——PoseNet,DeeplabV3与FCRN-DepthPrediction模型本篇文章将再介绍三个官方的CoreML模型:PoseNet,DeeplabV3和FCRN-DepthPrediction。PoseNet是人体姿势分析模型,可以识别图片中的人体部分,然后以17个基准点来描述人体的姿势。关于人体姿势的识别,其实Vision......
  • drf——权限、认证源码分析、过滤、排序、分页
    权限、认证源码(了解)权限源码#继承了APIView才有的---》执行流程---》dispatch中的三大认证 self.initial(request,*args,**kwargs) #1.APIView的dispatch中self.initial(request,*args,**kwargs) definitial(self,request,*args,**kwargs):se......
  • JEECG-BOOT访问权限控制的BUG
    http://doc.jeecg.com/2044037根据此链接,还是无法解决权限问题,最后查到是一个两个角色都设置了一个用户,而后台权限获取SQL只取一个导致权限列表获取错误。  ......
  • 计量经济学笔记-2一般回归分析和模型设定
    2.一般回归分析和模型设定问题1:辨别相关性是不是因果关系统计关系:预测关系经济关系:因果关系问题2:一般归回分析和线性回归模型问题3:线性回归模型的系数coefficients的经济意义回归分析是研究变量Y和变量X之间关系的常用工具。用于考察X对Y的影响用X的信息预测......
  • 1005.Django项目用户功能之认证权限以及班级管理
    一、Token1.Token概述在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请,登录系统使用Token、令牌、代表执行某些操作的权利的对象。更通俗点可以叫暗号,在一些数据传输之前,要先对暗号的核对,不同的暗号被授权不同的数据操作。方法:①引入--客户端请求......
  • 关于linux系统中umask值的说明-以及计算转换成默认权限符号的方法
    关于linux系统中的umask值,我们可以通过man手册的解释为:Theuserfile-creationmaskissettomode简单的理解,就是用户的umask的值决定着文件(也包括目录)创建时的默认权限,对于root用户来说,一般为0022[root@qq-5201351~]#umask0022这样可能还是不能很直观的表达出,可以通过......
  • GB28181流媒体平台LiveGBS中如何根据业务需求控制监控视频流的播放权限,实现用户自定义
    随着目前对信息安全的越来越重视,视频监控领域的视频流也需要做各种安全策略。视频监控流流媒体平台输出的直播流需要做权限限制,只允许哪些IP访问、只允许哪些用户访问等等各种权限限制。为了满足不同用户不同场景各种不同的播放权限需求,LiveGBSGB28181流媒体平台提供了可以设置播......
  • 计算机网络(二)OSI七层模型、TCPIP四层模型与原理五层模型
    1OSI参考七层模型(法律上的标准)OSI七层模型OSI:开放式互连通信参考模型分层的原因:标准化、降低各个层之间的关联依赖①应用层:能产生流量能够和用户交互的应用②表示层:加密压缩,开发人员考虑的问题③会话层:服务器和客户端建立的会话netstat-nb④传输层:进行可靠传输、不......