01什么是RBAC模型权限?

我们先看下边一个小场景:

小明同学想晚上10点后进入图书馆学习,就在晚上10点准备进入图书馆时被保安王大叔给拦住了,理由是只有图书馆管理员10点以后才能进入图书馆。

1. 怎么样才能让小明同学在10点以后进入图书馆学习?

“让小明同学偷偷溜进去?” “给保安王大叔给好处?”

“还是让小明同学去“某组织”申请成为“图书馆管理员”?”

看来还是申请成为“图书馆管理员”比较靠谱,虽然需要写申请书,找老师签字等走一系列的流程,虽然麻烦,但是这是晚上10点以后进入图书馆的正规途径。

2. 进图书馆小场景和RBAC模型有什么联系?

首先我们先看下百度百科的介绍

RBAC(Role-Based Access Control):基于角色的访问控制(RBAC)是实施面向企业安全策略的一种有效的访问控制方式。”
“其基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。”

看了百度百科介绍是不是感觉一脸懵?我们结合上边的小场景去看:

  • 角色1:图书馆管理员
  • 角色2:保安
  • 用户:小明同学
  • 权限:晚上10点以后进入图书馆的权限
  • 系统:图书馆

“图书馆”将晚上10点以后进入图书馆的权限授权给“图书馆管理员”,只有“图书馆管理员”角色的权限才可以晚上10点进入图书馆。小明同学想晚上10点后进入图书馆,就需要成为“图书馆管理员”这个角色,直接将权限赋给小明是不可行的。如下图:

通过小场景,我们简单的理解了RBAC的基本概念,用“角色”将“用户”与“权限”进行分割,实现“用户”与“权限”的解耦。只要是小明同学属于图书馆管理员角色,他就可以进入晚上10点后图书馆,其他同学如果也申请了图书馆管理角色,同理也是可以在晚上10点以后进入图书馆的。

有人问会有疑问,为什么要设置“角色”,直接把权限赋予给“用户”就行啦,不需要这么麻烦呀。咱们接着往下看。

3. RBAC模型的特点

提升管理效率,降低授权复杂性

如果图书馆出了新规定,晚上10点禁止任何人进入图书馆。图书馆只需要将“图书馆管理员”角色下晚10点后进入图书馆权限关闭即可(如下图)。反之,试想如果没有“图书馆管理员”角色,直接将晚上10点以后进入图书馆权限赋给小明和其他同学。要取消权限就要对每个有权限的同学进行取消权限,大大增加了工作量。

适用企业管理变化

图书馆又发出新规定“图书馆出了新规定,晚上10点禁止任何人进入图书馆不合理,应该让“保安”可以在晚上10点进入图书馆进行巡逻。”通过RBAC模型方式,直接将“保安”角色赋予“晚上10点以后进入图书馆”的权限就可以了。


02 RBAC模型权限设计方法

模型1:RBAC0

RBAC0是RBAC的基础,RBAC1,RBAC2,RBAC3模型都是从RBAC0模型拓展而成。

RBAC0模型中用户,角色,权限都是多对多关系。例如:实际中企业可能由于各种原因会出现一人承担多个角色。比如担任人力岗位同时,也会承担行政的工作。

模型2:RBAC1

RBAC1在RBAC0的基础上,加入角色继承的概念。将角色下分成各个等级的小角色(如图),子级权限继承父级。如下图,根据子级等级不同来分配更细粒度的权限。

例如:公司的财务总监可以看到整个公司所有部门的财务报表数据,而销售部财务经理只能看到销售部财务报表数据,在销售部财务经理下可能还会设立其他岗位,比如财务专员,财务专员可能只有查看销售部具体某个报表的权限。

模型3:RBAC2

RBAC2是对RBAC0在角色,权限上增加了限制条件,例如: 公司规定有人被赋予了财务角色,就不能再赋予他审计角色。这样可以在一定程度上防止在年总审计时候,审计人与被审计人是同一个人。这就是角色互斥

用户拥有的角色数,角色可以被赋予给多少用户数,角色拥有的权限数都是可以被限制的,这就是基数限制

还有先决条件限制,比如想拥有高级产品经理,就必须先拥有产品经理角色。

最后还有一种是动态的限制用户及其拥有的角色,如果一个用户可以拥有两个角色,在运行是只能使用一个角色,这就是运行互斥。例如:未申请具体角色登录系统,角色为“通用角色”。通用角色可以使用系统岗位角色申请功能,同时也能使用系统中已对“通用角色”开通权限的功能,例如查看运维电话、帮助手册。

模型4:RBAC3

RBAC3=RBAC1+RBAC2

RBAC3集成了RBAC1的角色分级继承,同时也包括RBAC2中的各种限制。如下图


03 实例复盘

1. 前期分析

A系统(企业内部营销域平台)是我最近在参与项目之一,主要职责一部分是设计后台功能,这其中就包含了权限设计。

对于A系统的权限设计,我是从下边三个点出发进行分析:

什么人用?

用户从哪来?

作为企业内部使用的营销系统,用户主体部分都是企业员工。其中少部分为供应商团队用户。企业内部员工通过与人力系统进行组织对接,打通人力系统与A系统用户数据。员工可以直接使用统一企业账号(portal)进行登录。供应商团队用户是没有portal的,这部分账号需要进行创建分配。

什么身份(角色)

在找到“人”之后就要进行开始“身份”调研了。“身份”调研阶段是跟进在整个业务调研阶段中,例如在调研中会梳理到实际业务组织架构。虽然已经确认有了人力系统组织架构,但是根据实际经验往往人力架构与实际业务中架构会有一些差异。

通过前期业务调研后我们整理出组织架构,在组织架构梳理中明确了组织中父子级对应关系,在前期调研中也许明确出岗位角色中是否有“限制条件”,例如岗位角色是否有唯一性限制,如下图所示中每个分公司里只有一个运营总监,销售总监等等。(RBAC2中基数限制

用什么功能(权限)

功能权限分为功能权限与数据权限。

功能权限指的角色在系统内操作范围,例如角色A可以点击报表导出按钮或者管理员角色在系统中可以看到后台管理菜单并可以对其进行操作。

数据权限指的角色在系统中可操作的数据范围,例如报表中只显示该角色的数据范围内数据,比如上海公司的运营总监查看数据权限只是上海分公司内的,同时筛选数据条件范围也只限于其权限内。

通过前期业务调研针对不同的业务场景流程,在设计相关功能时需整理出功能权限表,权限表体现需要标注具体功能可以对哪些角色可见,功能内某个按钮具体操作权限。有了这份表格,我们可以在系统上线初始化时,将角色的权限配置好,方便用户上线后即用。

2. 设计阶段

在梳理了用户,角色,权限(功能&数据)关系后,就要着手进行功能设计了。

根据用户流向策略,绘制出了如下后台业务流程图(初版)。

用户来源主要是来自人力组织对接与自行创建分配用户。人力岗位与角色在对接中形成组织对接关系,在具体功能权限赋予时,需要系统运营人员根据实际业务需求进行配置。

基于初版流程图,先整体设计出后台功能架构。

用户中心:账号管理 数据管理
角色中心:角色管理 角色功能管理 角色组织岗位管理 角色数据管理
组织管理:组织对接

用户心中:账号管理主要功能为账号创建,查看,删除,导出,修改,账号状态修改(停用/冻结).针对供应商账号可以该功能模块进行创建,其他操作可以对所有账号进行。数据管理主要展示用户的数据权限查看,导出,删除。

角色中心:角色管理主要功能为角色创建,查看,删除,导出,修改。角色功能管理是角色与功能权限进行配置。角色组织岗位管理为角色与组织岗位关系的查看、导出。角色数据管理可为角色进行数据模板配置,用户在提报角色数据权限时,只能根据数据模板设置进行相应权限提报。

组织管理:组织对接功能与人力系统进行组织对接。

3. 场景演练

张三是新入职新员工,其岗位是上海分公司一级销售代表。在入职后张三需要使用A系统进行日常办公。因为A系统与人力系统有组织对接,所以张三直接使用portal账号密码登录即可,登录后需要进行角色与数据权限申请。

申请时角色默认为组织对接后角色,数据权限申请范围是该角色可选择数据权限。例如张三岗位为上海分公司一级销售代表,其角色为一级销售代表,那么张三进入申请功能时角色默认为一级销售代表。但申请数据数据权限时只能选择上海,品牌选择现在为全部或多选(数据权限是通过角色数据管理进行配置)。张三选择完数据权限,提交申请后,审批由张三的上一级领导进行操作,审批通过后张三可以以一级销售代表的角色身份登录系统开展业务。

下图为新员工角色数据权限流程图。

后记

由于该项目暂时还未正式上线,所以复盘的时隐藏了大部分信息,例如原型图。可能会导致大家阅读起来比较困难,后续我会根据实际情况不断更新项目实例。

给大家一点建议:整体权限设计应该在项目开始时就要贯穿其中,优秀的后台权限设计方案,必定是依靠着前台清晰的功能设计而生成的。所以尽量多参与项目调研阶段与需求分析阶段,最好整体都参与其中。

在整个项目权限设计中思想都是基于RBAC模型去设计的,RBAC模型的特点之一也是可以灵活多变的支持企业组织架构的伸缩,同时也提高了运维管理的效率。遗憾点是在设计初期并未考虑到分公司自行运营A系统的长远需求(近几年并不会实际落地),没有在设计时提出“租户”或者“用户组”概念。

你需要来自trustedinstaller的权限才能删除_一文详解To B权限设计相关推荐

  1. 你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案

    近几年随着react.angular.vue等前端框架兴起,前后端分离的架构迅速流行.但同时权限控制也带来了问题.网上很多前.后端分离权限仅仅都仅仅在描述前端权限控制.且是较简单.固定的角色场景,满足 ...

  2. 你需要administrators提供的权限才能删除_终于解决了:你需要来自XXX的权限才能对此文件进行更改

    不知道大家遇到过下图这种问题没有: 就是你删除文件的时候,提示你需要来自XXX的权限才能对此文件(夹)进行更改 总之阿虚是遇到过不少次 很多时候就算你用360.火绒的文件粉碎机,也粉碎不了! 那怎么办 ...

  3. 计算机权限删除文件win10,高手设置win10需要administrator权限才能删除文件的解决手段...

    小编每日都会收到很多网友来咨询各种各样的电脑系统问题,今天就有一位网友说他遇到了win10需要administrator权限才能删除文件的情况,新手用户往往在遇到win10需要administrato ...

  4. 需要administrator权限才能删除文件的处理方法

    1.首先请先跟着如下链接操作: win10删除文件:文件访问被拒绝,你需要提供管理员权限才能删除此文件_hello-CSDN博客_win10文件夹访问被拒绝无法删除https://blog.csdn. ...

  5. 对于“你需要Administrator权限才能删除该文件”情况的处理办法

    每次我们删除文件的时候都会遇到权限不足的问题,缺少Administrator权限的情况就是其中之一,比如下面这张图就是我们可能会遇到的: 虽然我们无法删除外面这个最大的文件夹,但你点进去后其实是可以删 ...

  6. 怎么用计算机管理权限删除文件,如何删除需要管理员权限才能删除的文件夹?...

    方法1 01首先我们要先注册管理员权限,点击左下角Windows的Logo图标,点击开始 - 运行(输入notepad)确定或者按回车键,打开记事本. 02接着,在记事本中复制以下编码: 在记事本中复 ...

  7. 需要管理员权限才能删除文件解决方法

    win10解决需要admin权限才能删除文件的问题 1.按"win+R"键.输入"gpedit.msc"后确定. 2.依次点击"计算机配置" ...

  8. 文件需要管理员权限才能删除的解决

    今天在部署项目时进入webapps目录下,要删除我的项目war文件解压后的文件,发现删除不了.说是文件需要管理员权限才能删除的解决. 右键点击要删除文件,选择属性,选择安全. 点击编辑,添加Admin ...

  9. 你需要提供管理员权限才能删除文件夹 win10删除文件需要管理员权限

    遇到需要提供管理员权限才能删除文件夹的情况是不是TMD,烦死了! 我在网上找了好久,大多都是说要右键单击属性,修改为完全访问.但这样太麻烦,而且不一定成功. 其实有一种很简单的方法: 选中文件后,点击 ...

  10. 电脑文件夹需要权限才能删除怎么处理?(已解决)

    文件夹无法删除是一件比较棘手的事情,不知道大家是怎么解决的呢?本文来为大家详细讲解,电脑文件需要权限才能删除的处理方法. 方法一:获得权限 很多时候因为权限的问题无法删除电脑文件夹,这种情况下对应的解 ...

最新文章

  1. Qt创建多线程的步骤
  2. 关注WebWork(四)
  3. JavaScript中的基本数据类型与引用数据类型
  4. mybatis实现增删改查xml配置和后端Java编程完整教程
  5. 在Linux上编译dotnet cli的源代码生成.NET Core SDK的安装包
  6. MS SQL 监控数据/日志文件增长
  7. 【华为云技术分享】解密如何使用昇腾AI计算解决方案构建业务引擎
  8. 【linux】linux 查找 或者 搜索 文件 find
  9. shell for循环命令行_24 道 shell 脚本面试题
  10. 用友u8怎么导出凭证_CASE11 用友U8导入期初档案凭证批量作废编辑自动现流(5/5)...
  11. 实用的SQL函数(用于将符合条件的某列所有记录合成一行)
  12. OpenCV-Python实战(10)——详解 OpenCV 轮廓检测
  13. java 继承list_Java集合—List—继承关系
  14. win10共享打印机怎么设置_怎样设置打印机共享?
  15. Protoc与GRPC的使用
  16. 斜线“\”与反斜线“/”应用场景的整理(转)
  17. C语言将循环小数/有限小数转换为分数
  18. 解决ngress-nginx-controller 报错问题
  19. 2023上海国际民宿展与您相约7月5-7日,共启民宿升华之旅!
  20. PostgreSQL数据库进程数据结构——ProcGlobal

热门文章

  1. 27.TCP/IP 详解卷1 --- FTP: 文件传输协议
  2. 洞泾机器人园区地址_2020年4月上海市北新泾商圈写字楼市场租赁情况
  3. 前端了解的简要php
  4. 201671010129 2016—2017—2 《Java程序设计》Java总结
  5. 每天CookBook之JavaScript-073
  6. 你知道数据库索引的工作原理吗?
  7. leetcode——Divide Two Integers
  8. 【转】java关键字final ,抽象类、接口介绍
  9. vim中自动格式化代码
  10. 搭建Windows下基于Eclipse 的 PHP 开发环境