美文网首页权限管理
Day 561:权限设计

Day 561:权限设计

作者: kafkaliu | 来源:发表于2018-08-10 22:03 被阅读3次

    权限模型

    核心问题:判断某人对某资源是否可进行某操作(即权限)

    常见模型:

    1. 最简单的模型

    用户 - 权限 - 资源

    比如:运营人员小A对某个页面(比如说活动页面)可以进行增删查改(小技巧:permissions可以用一个字节的不同位表示不同权限)

    2. 最常用的模型

    RBAC:即基于角色的访问控制。最简单模型中有个问题,即通常公司里有很多像小A这样的运营人员,他们职责差不多,如果都要这么设置比较麻烦,特别是职责发生变化时,需要更改每个人的权限。

    这些类似职责的人聚集合到一起就是岗位,是角色的一种。角色代表的是一组权限。

    这个模型和现实比较对应,即人在公司里总是某个岗位上的,这个岗位则定义了一组权限。

    比如:运营人员小A,岗位是运营,运营可以在活动页面上增删查改,也可在专辑页面上做同样操作。可以减少权限的重复操作,也可避免最简单模型中权限改动时的麻烦。

    这个模型也叫RBAC0,是RBAC中最核心的概念。

    对于公司组织架构来说,岗位总是在某个部门之下。部门意味着有一组基本权限,而部门之下的岗位则是继承了这些权限。所以这又引申出RBAC的另一个变种,RBAC1。与RBAC0的差别是,角色有了继承关系。

    RBAC0告诉我们,组织中的用户可以有多个岗位。但在实际工作中有些岗位是不能兼任的,比如说销售和财务,因为销售提交合同,而财务审核合同,是不允许自己审核自己合同的。为了解决这个问题,在RBAC0基础之上衍生除了RBAC2,引入了静态和动态规则,叫静态职责分离(SSD)和动态职责分离(DSD)。

    SSD:在设置阶段就做好了限制。比如同一用户不能授予互斥的角色,用户只能有有限个角色,用户获得高级权限之前要有低级权限等等。

    DSD:在运行阶段进行限制。比如运行时同一用户下5个角色中只能同时有2个角色激活等等。

    相应的,可以把RBAC1和RBAC2结合起来,就成了RBAC3。

    相关文章

      网友评论

        本文标题:Day 561:权限设计

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