美文网首页产品经理@产品@IT·互联网
SaaS后台经验分享:如何设计权限管理

SaaS后台经验分享:如何设计权限管理

作者: PMhome123 | 来源:发表于2018-12-21 16:59 被阅读4次

    权限管理的作用

    SaaS后台系统中,数据具有敏感性,由于工作职责不同,所以用户拥有的权限也不同。因此,系统需要给用户分配权限,使得用户在规定范围内使用系统。

    RBAC模型介绍

    本文介绍的RBAC模型是一个模型族,它包含了RBAC0~RBAC3四个概念性模型。

    1. 基本模型RBAC0定义了完全支持RBAC概念的任何系统的最低需求。RBAC1和RBAC2两者都包含RBAC0,但各自都增加了独立的特点,它们被称为高级模型。
    2. RBAC1中增加了角色分级的概念,一个角色可以从另一个角色继承许可权。
    3. RBAC2中增加了一些限制,强调在RBAC的不同组件中在配置方面的一些限制。
    4. RBAC3称为统一模型,它包含了RBAC1和RBAC2,利用传递性,也把RBAC0包括在内。这些模型构成了RBAC模型族。

    本文主要介绍RBAC0模型,虽然是最基础、最核心的权限模型,但只要学习理解了其中的思想,便可以设计RBAC1~3的模型了;

    RABC0的设计

    RBAC(Role-Based Access Control )意为基于角色的访问控制,角色是权限集合,通过给用户分配权限达到控制访问的目的。


    RBAC0示意图

    RBAC认为权限的过程可以抽象概括为:判断【Who是否可以对What进行How的访问操作(Operator)】这个逻辑表达式的值是否为True的求解过程。

    即将权限问题转换为Who、What、How的问题,因此我们需要定义的是角色、资源和行为。

    比如我们需要考虑:

    • 系统有哪些用户,可以分为哪些角色;
    • 系统有哪些功能(资源)需要按权限来划分;
    • 功能(资源)的拆分粒度,到页面还是到具体按钮操作;
    • 新用户的默认角色和权限;
    • 用户与角色是“多对一”还是“多对多”;
    • 新增的功能是默认全部角色“可用”还是“不可用”;
    • ......
      这些都是比较细节的问题,我们在设计功能时需要考虑。

    下面主要说一下Who,What,How的定义。

    1.定义角色(Who)

    前期需要进行用户访谈,了解不同岗位的用户的工作职责,并抽象出几个角色。

    然后,用户与角色之间的关系需要明确是“多对一”还是“多对多”。这个问题需要结合业务场景进行讨论,如果用户的工作职责界限分明、不同工作岗位都有专门员工,那么此时可以设计成“多对一”,即用户只有一个角色,一个角色可以对应多个用户;


    用户与角色“多对一”

    如果某些用户的工作内容跨越几个职能,则可以设计成“多对多”,即一个用户可拥有多个角色,一个角色也可对应多个用户。


    用户与角色“多对多”

    这里还需注意的是,为了系统的灵活性,角色的权限应是可编辑的,管理员可以创建角色,并对角色的权限进行修改以应对工作场景的变化。

    2.定义资源(What)

    资源包括功能和数据。
    定义功能时需要明确,功能权限到页面级别还是操作级别。在一些权限严格的业务场景,比如电商ERP中,则会要求定义到操作级别,比如销售报表导出按钮,计算毛利率按钮等;如果权限比较宽松的,则可能只到页面级别,比如该角色是否能访问订单列表等等。这些都需要根据业务需求决定。

    定义数据时则比较简单,可以根据该角色绑定的店铺或区域来限制用户的数据权限,比如美国运营专员只绑定美国区的,则只能获取美国区的数据。

    3.定义行为(How)

    行为包括增删查改。不同的角色可根据需要设置不同的操作权限,比如对于同样的成绩管理页面,学生只能查看成绩,不能修改成绩;但教师同时拥有修改成绩和查看成绩的功能。

    相关文章

      网友评论

        本文标题:SaaS后台经验分享:如何设计权限管理

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