文章从权限模型跟概念出发,对权限系统的核心进行分析,抽象出权限系统中的核心要素,并结合案例对权限系统进行介绍。

  一个最简略抒发了权限模型的例子

  小明跟小李,分别用自己的账号跟密码登入了同一个平台页面。小明登录起来后,可以看见小说跟视频页面。小李登录起来以后,只能看见小说页面。

  emmm…..他俩有不同的权限。

  后台是什么样的模型来实现的呢。对于ToB领域的权限控制,产品总监一直用到的是RBAC模型

  什么是RBAC

  RBCA是英语role-based access control的简写,即基于角色的权限管理系统,用来实现对用户授权,访问系统的特定部份,实现不同细度的权限控制。可以理解为一种非功能性的需求,而是一种安全模式。据说通常一个企业超出500名职员,都会还要用到权限控制。至于“安全”这个主题,在对企业打分的时侯,不一定会成为一个加分项,但一定可以成为一个扣分项。

  RBAC的核心是角色(role)。所有使用者的才能操作的内容,都是通过角色来进行赋于跟严禁,而不是直接通过对使用者原本来继续赋于跟严禁。如硬件行业的行话,当一个系统很复杂了,那么就为他加一个层吧。同理,这样一个role层加入是为了简化复杂度。具体成因可以看RBAC跟ACL的差别

  下面来看一下,如果用户要执行一项操作,需要满足的RBAC的绕口令似的3原则

  角色分配:一个用户应当被分配一个角色角色授权:当前角色应当被授权给当前用户权限授权:权限应当被追授给当前用户的角色,当前用户能够执行这项权限RBAC跟ACL的差别

  传统的ACL是属于更底层更基础的数据对象的权限控制,比如一个文件可以读写的权限控制。RBAC是带有业务涵义的权限控制。比如可以抒发出银行业里,保险箱还要的开启还要中行总监跟储户的锁匙同时存在。又例如可以抒发出业务步骤中不能出现“自己审理自己”的这些荒谬现象。

  权限机制与账号机制的关系

  账号机制包含的内容是用户账号的注册/登录/密码更改/密码寻回功能。其中用户账号登陆,就会还要权限系统提供的功能来进行协助校准。

  校验内容包含:

  这个用户是不是被严禁,是否可以登入系统。这个用户登陆后,能够看见这些页面在他才能访问至的页面上,能够执行这些操作权限机制与组织构架的关系

  组织构架是企业的行政组织构架。企业所使用的系统typecho注册用户权限,都是其组织结构的反应。所以任何一个ToB的系统,如果要荣获顾客的认可,必须符合顾客的组织结构。

  大型企业的组织构架会相当复杂,比如国家电网这些重量级拳手,有职能部委,地区分部,一级市公司,直属单位typecho注册用户权限,再往前细分那就更多更复杂了。如果大型公司,可能就只有公司总体跟部委两个级别,比较简略。可以想见,对于越复杂的组织结构,所要求的权限控制的精细度,权限限制会愈加复杂

  权限机制与组织构架才能一眼所见的,最直接的关系,就是数据。组织与组织之间的数据,应该是隔离的,组织A的人员,不能否去访问跟操作其他组织的数据。这些须要通过权限机制来实现。

  简单权限系统的设计

  如前所述,首先还要设计的是角色。

  1. 角色分离

  一般角色可以根据两种维度进行分离,管理的维度跟业务的维度。

  管理角色:一般是企业的维保人员,可以登入系统,进行维护跟授权操作。一般通过自定义的方法,可以支持页面上改建。一般一个账户可以同时有多个自定义角色业务角色:按照职责进行确认,比如财务,保洁员,总经理等。一般通过外置角色的方法来实现,不支持页面上改建。一般一个账号可以有一个外置角色

  上面说的是通常,一般,一般。当然实际状况中总会有新的不同状况

  管理角色会发生变化,但是业务角色因为跟企业的组织构架,职级,职能相绑定,一般争创好以后是不会发生变化的。

  2. 用户分配角色

  参考RBAC三原则,当系统中改建一个用户时,必须为这个用户分配一个对应的角色

  3. 角色授权

  不管是外置角色还是自定义角色,当改建一个角色时,需要为这个角色进行授权。permission是一个操作,定义了就能调用这些资源,可以觉得授权的对象是由角色+资源(resource)+ 操作组成。资源是指菜单,功能,操作是一般涵义的CRUD操作,用user story来描述是,这个角色才能对这些资源做什么详细的操作。角色与资源之间是多对多的关系。

  一个授权的实例:角色是库房保管员,可以访问库房页面,并对库房里的货物进行出入跟出库操作。系统管理员为小明争创了一个xiaoming的账号,并给xiaoming绑定了库房保管员的角色。结果就是:小明登入系统后,能够对库房的货物进行操作了。

  本文由 @花生草 原创公布于人人都是产品总监,未经作者许可,禁止转载。

  题图来自Unsplash,基于CC0合同。

  给作者打赏,鼓励TA抓紧创作!

  赞赏

  1人打赏

最后修改:2020 年 12 月 27 日 04 : 06 AM
如果觉得我的文章对你有用,请随意赞赏