最近刚好遇到朋友在问权限设计的问题,今日刚好抽出时间,将权限从从零到一规整一遍。权限设计是B端产品产品经理必备的技能之一,做任何后台系统都会考虑到权限怎么设计,权限设计的好坏,直接会影响整个系统的可扩展性和易用性,本文是针对权限设计相关知识的总结归纳,希望能给你带来相关的帮助。
1.为什么要做权限设计?
这里可以引用一个小故事来说明:一家培训机构,由于起初规模比较小,只有老师,教学顾问,财务,老板四个角色,公司产品数据主要靠EXCEL表格来完成,因为规模比较小EXCEL能很好的展示整个公司的内部数据,但随着培训机构规模不断变大,公司从北京开到每个二线城市,再从二线城市做到三线城市,人员变多,公司组织结构变长,以前的EXCEL已经不能满足目前的管理需求,这里就需要公司有统一的管理平台,来为公司内部管理进行服务;内部信息化平台面临的问题有:线下的组织结构是层级关系,每个员工的功能职权是不一样的,这些东西都应该体验在系统中,所以系统的权限设计,怎么满足线下业务的扩展,线下员工的离职和就职,线下员工能更好的在线上做自己份内的事?
2.权限设计术语介绍:
用户:参与系统活动的主体,如人。
角色:特定权限的集合;
权限:角色可使用的功能,分角色的功能权限和角色的数据权限;
RBAC设计方案:基于角色的权限设计方案,更好的管理用户;
操作类型:对资源可能的访问方法,如增加、删除、修改等;
功能:对资源的操作,是资源与操作类型的二元组,如增加销售单、修改销售单等;
资源:系统中的资源,主要是各种业务对象,如销售单、付款单等; 数据类型:业务系统中常用的数据权限类型,如公司、部门、项目、个人等;
数据对象:具体的业务对象,如甲公司、乙部门等等,包括所有涉及到数据权限的对象值;权限设计原则:第一:权限的粒度要做到最小,保证在权限分配时,只赋予用户足够完成其工作的权限;第二:避免出现权限互斥的情况
权限设计原则:第一:权限的粒度要做到最小,保证在权限分配时,只赋予用户足够完成其工作的权限;第二:避免出现权限互斥的情况;
3.权限设计的分类
A.功能的权限设计(模块权限,页面权限,按钮权限)
功能权限指:用户应该在系统中拥有哪些功能模块,哪些页面可以访问,以及页面的按钮哪些可以操作。这里可以比方功能权限是一个容器,数据是水,容器可以加温水,冰冻水,改变水的的矿物质成分,对水进行各种相关的操作。
B.数据权限设计(能访问到的数据库权限)
数据权限指:数据可以指容器里面水的范围,功能权限是容器,虽然拥有相关的功能,但能对哪里的水进行操作,这里的水的范围可能是:全国,A省,B省,或者一个市等等;
所以基于数据的权限设计(数据权限则是控制你可以看到哪些数据,比如市场A部的人只能看到或者修改A部创建的数据,他看不到或者不能修改B部的数据。)
4.下面会用一个实例来讲功能权限设计和数据权限设计:
组织层级关系背求1:目前一个大型连锁培训机构,机构目前的组织结构为:总部,城市,学校,部门管四层结构;现要设计一个系统:能够管理整个培训机构的行政系统,角色的建立每个校区都有个性化需求,每个城市及校区有自己建立角色的需求;根据业务我们可以将权限分为:超级管理员用户,城市后台用户,学校后台用户,部门管理员四层关系;
第一步梳理:梳理层级关系(我们可以找出每一个层级的BOSS)
超级管理员:
超级管理员是每个后台系统都存在的隐含角色,他拥有系统所有的功能权限和系统权限
集团管理员
集团管理员是超级管理员的子集,是配合超管管理下面的业务,他和超管只是平级的子集关系
城市管理员(我们也可对这个城市组织节点授权)
城市管理员:他拥有整个城市的功能权限和数据权限,他可以建立用户,将自己的权限分配给城市的用户,该城市用户的权限是自己的子集;
学校管理员(我们也可对学校组织节点授权)
学校管理员:学校管理员拥有城市管理员分配给他的权限,他的权限是城市管理员的子集,每个学校都有部门,学校管理员可以建立部门用户,部门所在的用户是自己权限的子集
部门管理员(我们也对对这个部门组织节点授权)
权限的层级关系部门管理员:部门管理员可以建立职位(角色),新建的用户权限是自己权限的自己;
第二步:每一层建立角色
每个后台用户可以自定义角色,给相应的用户授权,每个后台用户的权限是上一个后台用户权限的子集,后台用户创立角色的权限是子集的权限子集;这里也可以首先给城市,学校,部门这个组织节点分配权限,当每一层的管理员建立角色分配权限时只能是这个城市权限的子集;
第三步:给角色授权
这里我要将所有的权限进行打散:系统功能的筛选无非是从:系统名称-模块名称-功能项(这里的功能项已经拆解到按钮级别了)
第四步:给用户授权
角色创立了,我们就可以对用户进行授权,角色和用户的关系可以是一对一,也可以是一对多的关系;
总结:
1:权限的设计是基于线下业务的层级关系,对于多层级权限,我们要分层去授权,所以每一层都有角色权限的管理,每一层的角色定义也不一样;
2:权限是个集合关系,每一层建立的用户权限是该层级管理员权限的子集(也可指该层级组织的子集)
3:功能权限设计只是给了用户拥有模块,页面,按钮操作的权限;
4:遇到相同层级组织的功能权限分配,不仅是功能不一样;如集团管理建立城市管理员用户时,会给城市管理分配一个城市属性,再分配其角色,属性其实是一种数据权限,角色是重功能权限;
5:跨组织的用户怎么分配权限,如某用户即属于城市A又属于城市B,城市A分配的是角色a,城市B分配的是角色b? 由于角色a和角色b只是户的功能页面授权,功能页面存在差异所以必须拆开显示,而不能合并显示;所以遇到跨组织的用户权限分配必须拆开显示;
6:数据权限和功能权限的区别,数据权限是填充物,功能权限是框架和改变填充物的器具;
5:总结
以上就是本人对如何做权限设计的总结分析,仅供大家参考,希望在工作中能够帮助到大家,也希望大家一起多提意见,指出不足,感谢阅读!
网友评论