产品的权限设计

权限设计在B端的管理系统里比较常见。一般的场景是不同类型的人员需要在一个系统里协同完成某项业务操作,他们分别具有不同的权限,操作不同的资源。在C端产品里,也能够看到权限的设计的存在,相对管理系统来讲的话,要简单一些。

两个例子

先从简单的说起吧,比如,微信群里,有两个角色,群主和普通成员,分别有不同的权限。

普通成员:添加群成员,一般发言等
群主:删除群成员,设置群公告,群主管理权转让。

群主不仅有普通成员所有的权限,还有一些特殊权限,这些权限是普通成员所没有的。下图是根据微信的权限例子画的一个简单权限结构模型。

对系统来说,不论是群主还是普通成员,他们都是用户,但各自的权限不相同,但软件设计不可能根据不同的类型的用户单独去配置功能。如果后期增添了某一功能,岂不是需要分别对不同类型的用户配置相应功能。不管这个操作后期是不是让电脑来操作完成,都达不到功能灵活配置的需要。

权限控制本质是用户与资源的的配置,但是我们不可能为每个用户都要去配置权限。引入了角色对象,是为了将用户与权限隔离开,降低两者之间的耦合度,也就是两者之间的关系。通过角色来控制用户的权限分配,做到弱化用户与权限之间关联。比如,某个角色因需求的变化引起权限的增加或减少,我们只需要控制需求变动对用户角色的影响即可。

微信群的例子里面,群主与用户面向的资源有重叠的部分,也有差异的部分。不管是重叠的部分也好,还是差异的部分也好,他们对权限都是通过功能的有无控制来实现。比如说,当群成员较少的时候,群内每个人都可以改群名称,他们都有这个功能。但群成员的删除,只有群主有,群成员无。这里未涉及到不同用户角色拥有同一个功能,但操作的资源的广度不一样。所以说,这里权限设计通过功能的控制已经满足系统设计的需要。

但在一些较为复杂的例子里面,仅仅从功能上考虑是不够的,还要考虑到数据范围的控制。

举例说,公司内部管理系统软件的权限设计,根据业务类型划分,使用产品的用户角色有:

  • 管理员。主要负责系统不同角色人员的管理。
  • 财务。主要负责财务的管理与审核。
  • 销售。主要负责销售业务。
  • 人事。主要负责人事安排。

按照上面业务类型的划分,他们抽象的功能划分结构是这样的:


接着考虑下面的例子,在一个部门里,有不同级别的职位,不同的职级的人功能权限相同,但操作的数据范围是不一样的。比如说,销售部门的某一个副总监,能查阅到公司在整个华南地区的业务数据,他下属带的一个的业务员,负责广州地区业务,那么他就只能看到广州的业务数据,他上级的总监,不仅能查阅到华南地区的业务数据,还能查到其它地区的业务数据。总监,副总监,业务员都有查阅数据功能,但职位不同,所能够查看的数据范围也就一样。

不在一个部门里,同样会需要这样的考量。财务部门的财务总监,因为财务审计,可能需要查看所有地区的业务数据,他就需要有查看销售部门负责的所有地区的业务数据。产生这种需求是由公司的职能结构决定的。

功能权限和数据权限

上面的两个例子可以看到,对于业务不复杂的产品,仅从功能去设计是足够的。当系统变得复杂的时候,就需要在功能限制的基础上,加上数据范围的限制。可以认为,数据权限是对功能权限的补充。两者并不是独立的分类。

在权限的设计上,我是从两个方向来分解的,横向和纵向,横向对应的即是功能权限的设计,纵向对应的是数据权限的设计。其划分的原则:

横向(功能权限)。在B端产品上,按组织的内部业务主体结构类型来划分。这种参照的现实依据是公司在实际业务运转中对在内部已经作了分割。比如,公司A内部,有部门a,b,c,d。一般情况下,a,b,c,d各自的内部数据是无法相互查阅的,业务操作都是相互独立,彼此因为没有对方的功能权限而无法进行相应的业务操作。C端产品上的会员制,等级制也都是功能权限的体现。

纵向(数据权限)。纵向的划分的建立在功能基础上的,通常是反映的是不角色的等级关系的。在B端产品上,数据权限的划分往往基于组织架构的,这是为了满足管理的需要。比如说,销售部门里,销售总监和普通销售业务在一些重叠的功能上,看到数据范围不一样,前者显然要比后者大。

权限设计的难度在角色和资源的分配上,因为不同角色不仅在资源有业务交叉,不同角色之间在业务的又有交叉,最终反映的是功能权限和数据权限的设计。如果处理好功能权限和数据权限对资源的分割,那么不同用户角色的划分及用户角色之间的关联就有较为清晰的划分,也会为后期的产品迭代提供足够的空间。附权限设计的思路:

上图是个人对权限设计的总结,把系统看作一个完整的资源,不同角色处于不同位置,占据的资源不同。其中把握的核心点就是,从两个方向解构:

  • 先横向做功能分解,再纵向做数据分解。数据分解是对功能分解的补充,不是真正意义上的另一个维度的分解。
  • 横向以业务类型或业务模块划分来从功能上分解。
  • 纵向上以职级或组织架构来进行数据划分,是对功能权限进行补充。

用户与角色

用户与用户角色是多对多的关系。一个用户可以有多个角色,一个角色可以对应多个用户。每个角色对应不同的权限,管理员可以对用户进行角色编辑和权限的分管理与分配。

一般情况下,系统对角色的扩展和权限的扩展都是有一定需求的:

  • 增加角色。系统可根据自己需要来自定义角色。
  • 修改权限。系统可以随时更改角色相应的权限。
  • 权限的扩展。系统新增业务时,保证权限能够同步到相应的角色里。

最理想权限设计的是能够从业务上与职级上对权限进行打包,然后将权限赋给某一用户,只要是后期公司在业务结构上不做大的调整,都能满足自身角色变化之后权限所需的相应更改,并不需要考虑使用用户角色来满足权限的扩展。

实践中的思考:

功能权限和数据权限的区分是什么,各自的边界在哪里?

权限是对资源的控制和约束,如果只从这一点来出发,就难以去划分功能权限和数据权限的区别。起初,我的理解是数据权限是在数据上做的限制,功能权限是在功能操作上的限制,两者是独立的,这么理解似乎是对的。可是在后面梳理的时候发现了问题,销售部与生产部两个不同的业务部门,那么在权限控制上是归类到数据权限呢还是功能权限呢?还是说两者同样适用。如果说两者都能通用,那么两者的概念定义有问题,是不是应该去掉一项呢?如果我们在产品设计上,标尺是不清晰的,多面的,那么最终产品结构肯定混乱的,无法适应后期的扩展。这也是促使我去思考并决心找到两者的切入问题的出发点,以期达到「庖丁解牛」。所以我先从QQ群的例子来着手分析,在业务并不复杂的情况下,只考虑功能权限已足够达到权限管理的需要。在管理系统的例子里面,才有了数据权限的引入。也因此有了前面对权限的理解,先横向进行功能权限分解,在功能权限分解不能满足产品设计的需要,再考虑数据权限的补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容