后台产品的基石:权限管理体系设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后台产品的基石:权限管理体系设计相关的知识,希望对你有一定的参考价值。

参考技术A 简而言之,我们日常使用的互联网应用,有一些需要做数据/信息的呈现,管理维护这些数据/信息的产品,就是后台产品。举个例子,在音乐app中有很多的歌曲、专辑、歌手等的内容,这些内容都需要在曲库后台中进行上传、信息关联等操作,这里的曲库后台就是一个后台产品。

后台产品中有大量的数据,需要较多的人员来对这些数据进行管理,不同人分别负责管理自己的数据。且不同的人,在整个数据管理流程中,需要进行的操作不同。那么此时,我们就需要对这些人员的权限进行不同的定义,具体人员可以看什么,不可以看什么,从而确保数据的稳定性,降低数据泄露的风险。同样用曲库后台举例子,有的人负责维护华语音乐,有的人负责英语音乐,那么负责话语音乐的人,不可以操作英语音乐的数据。在负责华语音乐的人中,有的人负责上传歌曲源,有的人负责整理音乐,打包成歌单呈现给用户,那么负责上传歌曲源的人,不可以去进行歌单的编辑。

人员层级的划分是做权限管理的基础,几乎稍有规模的公司,都会有人员管理层级的划分,我们称之为组织结构,在组织结构中,明确指定人员的汇报关系、负责的业务模块、人员的岗位等等。

组织结构的一个简单示意图如下,节点用于对业务模块、工作范畴进行划分。在一个业务模块内,不同职能的人员,用岗位来进行区分,例如研发进行功能的开发,QA进行功能的验证测试。

权限管理体系可以划分为三个层级:功能权限、数据权限、按钮/字段权限

1,功能权限:定义人员是否可以访问某个页面。例如曲库后台,曲库资源的管理人员,可以访问曲库资源的管理页面,不可以访问歌单资源的管理页面。

2,数据权限:定义人员在页面中,可查看的数据的范围。例如曲库后台,曲库资源的管理人员中,华语音乐管理员可查看华语音乐,不可查看英语音乐。

3,按钮/字段权限:定义人员针对查看到的数据,可以进行的操作,或可查看的字段。例如曲库后台有歌曲的上传和删除的操作,曲库资源的管理人员中,上传资源的人员只能看到上传按钮,不可查看歌曲的删除按钮。只可查看歌曲的基础信息,不可查看歌曲的定价信息。

从上图和上面的描述举例中,可以看出来,这三层权限控制是逐渐递进的关系,从最基本页面访问,到具体数据信息操作,对于权限的粒度管理越来越细致。

那么基于这个理论基础,在设计上如何实现呢?

1,功能权限:页面是具体功能的一个实现,而功能的使用与人员的职能相关,结合我们前面讲的组织结构可以得出,功能权限与岗位密切相关。因此我们做权限配置时,可以考虑将岗位与页面权限绑定,这样在岗位人员更替的过程中,只要岗位职能不变,那么我们对岗位和页面权限的绑定就是无需变更的。例如编辑人员拥有曲库编辑页的权限,运营人员拥有歌单编辑页的权限。

2,数据权限:同岗位的人员负责不同范围的数据,那我们可以通过定义人员可查看自己负责标签范畴内的数据来实现数据权限的管控。如果数据量特别大,同岗位的人员也需拆分给不同的管理人员来管理,甚至管理人员还是多层级的,那么此时就需要借助组织节点一起定义数据权限,最末级节点人员查看自己标签范畴内的数据,上级节点的人员查看自己下级节点人员的数据汇总。

3,按钮/字段权限:按钮/字段权限本质上还是对一个功能的控制,只是这个功能内嵌于页面内,比页面的颗粒度更细,所以按钮/字段权限可以和功能权限一样,与岗位绑定。

上述的三层权限体系可以满足我们基础的权限控制的需求了,但是在一些特殊的情况下,有一些上述体系不能满足需求的情况,该怎么去拓展这个权限控制体系呢?以下列举了一些。

对于岗位通用的权限,我们可以用岗位与权限绑定来配置。若同岗位员工的工作模块不同,有一些权限不可直接赋予岗位,而是与具体人员关联时,可以抽象出一层虚拟角色,这些角色集成一个工作模块的特殊权限,然后将角色直接赋予具体的人员。这样可以用虚拟角色来进行权限的规范管理,同时又能满足同岗位人员需要配置特殊权限的情况。

组织结构中的岗位和节点上下级关系,定义好了人员的全部权限。当对象的组织岗位关系不可调整,但是需要添加对象的各项权限时,我们可以通过加成权限来实现。加成权限就是指人员拥有自身所在组织岗位的权限,同时还可以拥有特殊配置的权限。

这个特殊配置的权限怎么配呢?

这个配置的基础结构时,配置对象在某些系统中拥有某些节点岗位的全部权限。我们把配置对象、某些系统、某些节点岗位拆开描述如下。

1,配置对象:这个要临时添加权限的对象,可能是员工,可能是某组织节点全部人员,甚至某岗位全部人员,因此这个配置对象可以根据需求去拓展,支持多选。

2,某些系统:一个大的后台中可以进一步拆分系统,如果需要限制是这个加成权限只在部分系统生效,那我们可以增加生效系统的配置。

3,某些节点岗位:这个就是配置对象具体需要什么节点岗位的权限,在某些节点岗位这一环节中配置。

这个是最简单的,可以通过添加人员的白名单和黑名单来解决。白名单中的员工,默认赋予全部数据的权限。黑名单中的员工,默认不拥有任何数据的权限。

白名单和黑名单的赋予,支持给通过节点、岗位、人员来配置,操作更灵活方便。

以上是我对后台产品权限设计体系的一些分享,希望对进行后台产品设计的初级同学有一些帮助,欢迎留言一起交流。

后台系统资源/数据权限系统设计

参考技术A 鉴于后台的权限,数据分级越来越细化,越来越错综复杂,我对现有的项目后台进行了一个初步的升级。参照传统的CRM管理系统改造了权限系统。

在一套后台管理系统中,系统通常会有多种需求的用户登陆。例如系统维护人员、运营分析人员、文案编辑人员、部门管理人员等等,而系统维护人员登陆要看到日志界面和服务器监控界面,文案编辑人员要看到文章界面等等,不同的用户登陆到后台还需要展示不同的菜单和界面,

单单运营分析人员,在系统中可以可能有A分公司运营助理、B分公司运营主管、C部门运营经理、华东大区运营总监等等类型,A分公司的运营助理只能看A公司的运营数据,C部门运营经理只能看到C部门的运营数据,大区运营总监应该要看到属于华东大区的所有公司以及部门的数据,不同人员能够查看的数据范围应该是不同的

其次,上述提到的的文案编辑人员,还会区分出总编辑,和文案撰稿人,虽然同样能看到文章管理界面,但总编辑拥有添加、编辑、删除、审核、发布等功能,普通文案只有有添加、修改的权限。

本文将对上述提到的场景提出一种基础的解决方案。

【 角色】: 系统运维、运营分析、部门职员这类拥有不同权限功能的标签,我们称之为“ 角色” 。

【 组织部门】: A分公司、C部门、华东大区、无论大小我们统称为“ 组织部门” 。

【岗位】: 运营助理、运营主管、运营经理、运营总监我们统称为“ 岗位” 。

【 数据权限】: 大区运营和部门运营所能看到的数据范围不同,我们称之为“ 数据权限”。

【 资源权限】: 文章管理撰稿人比总编辑少了审核、发布的功能,这些功能我们称之为“ 资源权限” 。

有了角色,部门组织,岗位,数据权限,资源权限这5个概念的结合就可以结合出满足一般使用场景的权限设计。

      我们将数据权限、资源权限接关联在一个角色上,然后将关联好的角色与用户绑定,这样就完成了权限对用户的分配。另外,我们也可以将角色关联在某个部门的岗位上,然后用户只要填写所属部门和岗位即可获得权限。

     比如文案总编辑、撰稿人、审稿人、编辑助理这类有特定的功能职能的用户群体,我们能就可以创建成角色。但要注意的是,角色一般是可以多个同时并存的。比如创建一个新文案负责人,组织允许他既可以自己撰稿,也可以帮助别人审稿,这时候往往不会在当独为他设计一个撰稿审稿人角色,而是同时为他分配撰稿人+审稿人两个角色。这样,该用户的权限就变成了他所有角色关联的权限之和。从而减少因为权限的交叉带来的冗余角色。

    岗位和角色的概念其实是挺相似的,一个岗位一定程度上代表了他在组织中的角色。然而同样的岗位在不同的组织部很可能是不同的:   例如A部门的采购主管和B部门的采购主管。同样是主管的岗位,但A采购公司规定可以查看整个部门数据、不允许查看订单,而B采购可以查看订单数据、但不允许查看部门其他采购主管的数据,从而造成了同岗不同权。

    这时,我们可以单独为这些部门各自创建岗位,并将角色组直接关联在各自的岗位上。例如在A分公司中分配一个岗位叫做采购主管, 然后我们为这个岗位预设好 “采购数据分析员”,“采购数据录入员”,“订单审核人员”的角色。 这样以来,当A公司来了一位新的采购主管,我们只要为他创建好账号,然后为他设置这个岗位就可以实现权限的绑定。

    撰稿人可以编写文章,审稿人只能查看和标记审核结果,区分两者权限不同,依靠的就是资源权限的不同。我们可以在撰稿人角色上绑定“文章:编辑、文章:查看、文章:添加”这三个资源权限,为审稿人角色绑定“文章:查看、文章:审核”两个资源权限,然后在系统中判断用户的权限来控制相应的入口显示。例如判断用户的权限中不包括“文章:审核”权限,页面就隐藏掉审核的开关按钮。

    数据权限我们目前只分三种,“仅自己数据”,“部门数据”,“全部数据”。如字面含义一样,“仅自己数据”只能查看与自己直接关联的数据,比如自己的销售额,自己的考勤记录。“部门数据”允许用户看到整个部门乃至下级部门的所有成员的数据,比如整个部门的销售额,部门中某个用户的考勤记录。“全部数据”属于最高级别的数据权限,一般是平台的总公司总经理、或者某个系统的总负责人可以使用的到。需要注意的是,数据权限需要结合“资源权限“以及下面将提到的“组织部门“一起组合使用才能发挥效果。

   组织部门可以区分用户在系统中的不同组织、不同等级关系。比如一个平台往往可以接入众多的公司,如图

组织与组织之间有明显的层级架构关系,结合数据权限、资源权限、角色、岗位、就可以灵活配置出例如图中销售部门A的销售经理权限,以及销售团队1的队长权限等等。

上述的结构只是一种方案,当然方案不可能是万能的,具体的实现还需要结合实际项目需求进行设计开发。

以上是关于后台产品的基石:权限管理体系设计的主要内容,如果未能解决你的问题,请参考以下文章

后台设计基石:用户权限管理(RBAC)及工作流(workflow)

系统权限功能的设计

权限管理(React)

后台系统资源/数据权限系统设计

项目后台管理之权限管理(RBAC)

后台管理系统的权限设计该怎么做