SaaS系统用户权限设计
作者的上一篇文章简单介绍了SaaS系统的概念和SaaS的成熟度模型。随着云计算的发展,越来越多企业产品业务向软件服务平台转型。其中系统的权限设计是十分关键和重要的部分,本文以O2O业务为例讲解SaaS系统权限设计。
1、系统需求
平台管理员只能管理租户的账号和相关信息,不能操作租户的内部业务。各租户拥有自己的角色和权限,相互不能影响。不同租户的数据、服务在物理上共享,而在逻辑上完全隔离,对于每个租户来说这个系统好像只为自己服务。为了确保系统数据的安全性,使用户能放心地将商业数据放在系统上使用,SaaS系统的权限管理在系统设计中成为尤为重要的一环。
2、RBAC权限模型
访问控制是针对越权使用资源的防御措施,目的是为了限制访问主体(如用户等) 对访问客体(如数据库资源等)的访问权限。企业环境中的访问控制策略一般有三种: 自主访问控制(DAC)、强制访问控制(MAC)和基于角色的访问控制(RBAC)。其中,自主访问、强制访问的工作量大,不便于管理。基于角色的访问控制是目前公认的解决大型企业的统一资源访问控制的有效方法。
基于角色的访问控制基本原理是在用户和访问权限之间加入角色这一层,实现用户和权限的分离,用户只有通过激活角色才能获得访问权限。通过角色对权限分组,大大简化了用户权限分配表,间接地实现了对用户的分组,提高了权限的分配效率。且加入角色层后,访问控制机制更接近真实世界中的职业分配,便于权限管理。
RBAC模型是典型的基于角色的访问控制模型,包括RBAC0、RBAC1、RBAC2和RBAC3四个不同层次的模型。其中RBAC0是基础模型,定义了支持RBAC的最小需求,如用户、角色、权限、会话等概念,RBAC0模型图解如图2-1所示。RBAC1加入了角色继承关系,可以根据组织内部权力和责任的结构来构造角色与角色之间的层次关系; RBAC2加入了各种用户与角色之间、权限与角色之间以及角色与角色之间的约束关系,如角色互斥、角色最大成员数等。RBAC3是对RBAC1和RBAC2的集成,它不仅包括角色的层次关系,还包括约束关系。
在RBAC模型中,角色是系统根据管理中相对稳定的职权和责任来划分,每种角色可以完成一定的职能。用户通过饰演不同的角色获得角色所拥有的权限,一旦某个用户成为某角色的成员,则此用户可以完成该角色所具有的职能。通过将权限指定给角色而不是用户,在权限分派上提供了极大的灵活性和极细的权限指定粒度。
图2-1 RBAC0模型图解
3、SaaS平台用户设计
一般SaaS平台基本角色由平台管理员、租户用户、租户管理员、租户其他角色组成。如图2-2以O2O业务的企业架构为例,图解系统角色关系。
图2-2 SaaS平台用户设计图解
平台管理员:负责平台的日常维护和管理,包括用户日志的管理、租户账号审核、租户状态管理、租户费用的管理,租户权限的管理,要注意的是平台管理员不能对租户的具体业务进行管理。如果租户数量大,还可以对平台管理员划分角色,可以按地域划分,比如西北地区、东北地区等,让平台管理员分别管理不同的租户;也可以根据业务进行划分,比如租户管理员,租费管理员等。
租户:指访问SaaS平台的用户企业,在SaaS平台中各租户之间信息是独立的。租户信息包括租户的名称、地址等租户企业的相关信息,主要用来区别各租户,并且由平台管理员对租户账号状态进行管理。各租户可根据需要自行选择SaaS平台功能模块并依此付费。
租户管理员:为租户角色分配权限和相关系统管理、维护。
租户用户:根据租户管理员分配的权限以及自己的角色进行相关的业务管理。各租户用户只能访问该租户选择的 SaaS 平台的功能模块。一个系统用户如果有多个角色,则他只能看到当前角色下的数据,通过角色切换,可以达到查看所属其他角色下的数据信息。
租户角色:根据业务功能分由租户管理员进行角色划分,划分好角色后,租户管理员可以对相应的角色进行权限分配。角色有上下级关系,上级可以查看下级的数据,下级不能访问上级的数据,平级之间不能相互访问。角色上层可再加入分组层(如分部门或团队等),不同组别的数据范围不同,资源、操作可以共享也可以隔离。
4、小结
本文就SaaS系统权限设计作简单讲解,后续文章将会讲解SaaS系统产品设计的其他环节,谢谢阅读。
相关阅读
本文由 @ ohdkooou 原创发布于人人都是产品经理。未经许可,禁止转载。
没讲明白透彻
你这套,租户能创建自己的组织架构和用户体系吗,不跟其他租户共享的?
你好,有一点我没太明白,权限在角色是,是不是意味着每个租户是一个角色;不然怎么保证每个租户看到的菜单不一致
每一个租户是一个用户或者一个账号?
讲的很好!非常感谢!
对于角色上下级关系、角色互斥能不能再详细说下,或者举个实际案例,感谢
请教个问题,每个租户都有自己的一套用户角色权限系统吗? 还是整个SaaS共用一套角色权限系统
每个租户都会有一套自己的角色权限系统(也是基于权限控制的)
这个是不是还是可以理解为整个系统共用一套角色权限设置,只是设计时按照多租户模式设计的?
再详细一些,讲一讲细粒度权限划分吧。
受益匪浅,赞赞赞
请问SaaS系统的单用户和多用户有哪些区别?产品设计方面有什么不同?方便的话可不可以加一下微信。
你好,我们最近也涉及这块,单租户和多租户设计模式等问题,方便加V交流吗?
请教下,平台管理员对应的登录账户,是如何获得管理员权限的呢?如果平台管理员帐号对应的帐号因故失效,如何将当前的平台管理员所对应的账号替换掉?
请教一下作者,文中的图是用什么软件做的呢
AXURE就可以做, 还有一般的做图工具应该都可以做出来吧
之前也设计过两个个SAAS平台用户管理系统,觉得文章大体的总结是没问题的,但是没有真正涉及到SAAS这个模块,例如大平台下多系统的权限管理这个概念,可以有不同的设计,如:同一个角色可以跨系统操作,以租户的实际需要进行设置;或者,按照系统进行单独角色权限设置,没有跨系统角色权限的设置,;这些都可以容纳到整个SAAS平台用户管理系统中
你好,最近在做权限管理系统,方便加个好友交流下吗?
抱歉没有经常上这个账号,不知道您的问题是否有被解决,如果有需要可以加我微信:ljx3558418,大家可以互相交流~
可以分享下这方面详细的内容吗?蟹蟹
麻烦请教作者,根据文中的描述,组织架构的建立是依靠角色直接的层级和分组关系,这里面其实是没有单独的职位的概念的,是么
角色和组织架构是分开的。比如市场经理和产品经理,是组织架构,我可以把他们都分在经理角色下,让他们都有权看到每个月的销售业绩。
是的,您说的这个是现在做得比较多的做法,组织架构决定用户层级,角色决定权限,而角色的赋予和用户本身的组织结构节点是没有关系的。
我看作者文里的意思好像是说可以通过角色的上下级关系直接形成组织架构节点,用户通过分配角色而自动产生组织架构。不知道我理解的对不对。如果是这样的话,用户-角色-权限更符合人-职位-职能的线下逻辑,不过在组织架构的调整上会带来很多冗余。
嗯,不过按角色自动产生组织架构,感觉不太灵活。可能不同组织架构下的人员都具有相同的权限,如果这样就还是要设置多个角色了。
是的哈
手动赞 😉
写的太粗了
这都粗?发个细的来,我觉得作者总结的很好,还有哪些方面没涉及到,欢迎补充,我再去仔细学习。
确实粗,哪些方面没涉及 ?你就搜后台权限设计,很多的~
确实粗啊,只是建立了一个基本结构