热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

系统设计_用户权限系统设计与RBAC模型

篇首语:本文由编程笔记#小编为大家整理,主要介绍了用户权限系统设计与RBAC模型相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了用户权限系统设计与RBAC模型相关的知识,希望对你有一定的参考价值。









<让产品从0到1系列第 11 辑>




产品微言 第  97  期















权限管理,就是解决 “Who对What(Which)进行How的操作” 问题。








文  |  人人都是产品经理专栏作家  杜松


在 2B产品的用户角色设计思路 一文中,着重探讨了在整个系统中,用户和角色的关系,并基于业务过程对角色进行了场景的细分,并详细的解释了为什么要在做产品原型设计之前分析业务角色,设计各个角色的关系。


本文则讨论如何基于用户角色进行权限管理。






01


权限管理的基本概念





系统的权限管理,简单的说就是针对不同身份的用户设置不同级别的访问、请求和处理数据的范围级别。考虑的是企业的数据安全和信息隐私问题。


对2B的产品而言,必须充分考虑到业务的复杂性和扩展性,使得产品的业务管理和控制权限能够随着业务和组织架构的发展而快速部署,需要特别注意的是,不同的业务形态、不同的管理机制,都会给权限系统的设计带来重要影响。


这也是为什么2B的产品难以标准化的一个因素——业务的独特性和(管理)文化的独特性。


权限管理,本质上是对用户,以及用户的行为的范围控制,通过一种巧妙的设计,约束不同身份的用户在系统上的操作路径和操作权限。这里涉及到三个关键问题:


1、用户与角色


用户,指的是真实“人”,是系统上每一个具体的操作实体(系统的一个账号),而角色这是一个抽象概念。比如管理员是一个角色,一个系统可以配置多个管理员账户。


这里还需要区别一个概念:业务角色和权限角色。


业务角色是针对业务过程的抽象,而权限系统的角色,则是对管理过程的抽象。两种之间存在一定的相关性,多数情况下业务角色是可以直接对应为系统的权限角色。


2、行为与资源


用户在系统上的行为,可归纳为两类:




  • 数据权限:可以查看、操作的数据范围,比如部经理可以查看整个部门的业务数据,而员工只可以查看个人的数据


  • 功能权限:对系统资源(页面、菜单、按钮等)的查看、操作权限,比如某个菜单的可见性



3、关系管理


考虑的是整个组织的管理架构,是一对一还是一对多关系,是否有层级划分,是否有继承关系等。


从这三个关键词中,我们就能理解整个权限管理,解决的就是某个用户在访问系统时,可以查看什么内容,执行什么操作,得到什么结果。


也就是权限控制系统,管理的是用户行为的集合,也就是建立一套用户使用资源的规则。


这个集合来自于产品的“用户画像”,用户拥有的系统资源即可通过标签系统来进行分类管理。


在实际应用中,特别是平台型产品,权限的管理非常严格,同时也非常复杂。比如一个O2O平台有1000个门店就很难通过创建1000个用户分别来分配权限的方式进行管理和维护。


必须要有一个高效的模型解决这种复杂的业务,这个模型就是RBAC。






02


RBAC设计实践





RBAC的思想,即用角色来解耦权限和用户的关系,其目的是解决日益增长的业务所带来的快速增长的用户和权限数量。


传统(早期)直接为用户配置权限的设计模型,由于其耦合性太高,必然导致维护性和扩展性随业务增长来极速降低,无法支持大型业务平台的运转。


在RBAC模型中,一个用户可以有多个角色,一个角色可以有多个权限,通过将角色和权限分离开来提高设计的可扩展性,通常一个用户有多个角色,一个角色也会属于多个用户(多对多),一个角色有多个权限,一个权限也会属于多个角色(多对多)。


如下图所示:


用户权限系统设计与RBAC模型


用户和角色、权限之间,是松散的一对一、一对多甚至多对对的关系,而且这个关系是物理结构上的上下层级关系,带来的好处就是降低平台的耦合性,极大的提高了系统的可操作性和易维护性,数据的安全性也非常具有保障,极大的降低了管理的开销。


回到上文我们设计的用户角色,不管是坐席,门店还是工程师,都可以依据其业务范围和标签属性,就可以轻松的实现对权限的指派和回收。


RBAC认为,权限授权实际上是Who、What、How的问题。who、what、how构成了访问权限三元组,权限的管理用一句话来表达就是:Who (用户) 对 What (资源) 进行 How (行为)的操作 。


Who:权限的拥用者或主体,也就是用户实体。

What:权限针对的对象或资源,可以直接理解为产品界面上的菜单、按钮等

How:具体的权限,查看、操作资源和数据的具体操作。


这个过程可以分解为两个步骤:


用户权限系统设计与RBAC模型


我们只需要通过给角色授权,分配每个角色可以查看、操作的功能和数据范围,然后将附有权利的角色施加到某个用户账号,就使得该用户获取了相应系统权限了。


通过“角色”这一层抽象的中间身份,整个系统就变得更为灵活:角色的权限可以随时调整或者被系统回收,每个用户账号的操作权限可以随业务场景的不同而发生改变。


比如,一个工程师登录工程师的界面,则拥有工程师的权限,登录到门店系统,则拥有该门店授权的操作范围。


下图即为一个完整的用户授权实例:



这种设计下,任意一个账号,都可以根据实际业务需要,随时调整权限范围,对大型平台产品而言,这种灵活性非常重要(RBAC模型还可以进一步扩展,比如用户组、角色互斥等)。


从上图,我们也可以发现权限管理必须具备的两项基本原则:


1、职责分离:不同的角色完成不同的业务分工,通过分配不同的角色实现责任的互相约束实现对组织业务和数据的安全管理


2、最小特权:系统可以限制分配给角色的权限多数、大小,为任意账号分配权限,只要不超过该用户完成任务的基本需要即可


也正是因为RBAC的特性,我们在做产品设计时,更应该把精力集中于“用户实体”的实际业务流转过程,关注其行为背后的动机和逻辑,才能够设计一个高效的后台系统。


但,RBAC有一个“缺陷”——没有提供操作顺序控制机制,无法进行严格的操作次序控制,没有办法要求用户先做什么,后做什么,必须借助外部机制来进行控制。


当然,对于权限管理而言,既要充分考虑到系统的灵活性,也要考虑实际的应用程度和研发成本的投入,越是灵活的系统,也就必然带来更多的成本投入,其结果是带来管理开销的节约。


所有优秀的设计,都基于对业务、规则的深刻理解。

越早进行系统的考虑,成本越低,效果也越好。





<本文完>









系列目录








从点子到产品,2B产品大复盘


第一部分:如何启动一个新产品










  1. 新产品调研的方法和失效原因分析




第二部分:如何设计一个新产品







未完待续......





———— /  END  / ————


题图来自 Pixabay



杜松的产品笔记,长按关注


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
author-avatar
垚垚8858
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有