权限设计的总结

作者: 产品大宝看世界 | 来源:发表于2018-12-08 15:23 被阅读85次


         最近刚好遇到朋友在问权限设计的问题,今日刚好抽出时间,将权限从从零到一规整一遍。权限设计是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:总结

         以上就是本人对如何做权限设计的总结分析,仅供大家参考,希望在工作中能够帮助到大家,也希望大家一起多提意见,指出不足,感谢阅读!

    相关文章

      网友评论

        本文标题:权限设计的总结

        本文链接:https://www.haomeiwen.com/subject/edyqhqtx.html