B端后台“权限设计”的99种解法与反思

编辑导语:合理的B端后台权限设计体系将有助于协助用户处理更多事务,提升用户的操作效率,也降低风险发生的可能性。那么,你了解权限设计中的每个模型吗?本篇文章里,作者从自身经验出发,阐述了B端后台权限设计的多种解法,一起来看一下。
B端后台“权限设计”的99种解法与反思
文章插图
“权限设计”是中后台的底层设计,它是系统设计中最为重要的一环。
优秀的权限设计能够有效提高系统的安全性、降低用户误操作,数据泄露的风险;差劲的权限设计,往往会导致系统流程不通,系统的稳定性和安全性受到威胁。
而产品经理在设计权限时,往往会一头雾水,不知从何下手。
其问题在于:一方面开源的权限产品较少,产品经理无从体验,借鉴。另一方面关于权限的文章良莠不齐,缺乏系统性的文章帮助了解权限构成,产品们只能摸着石头过河,犯一些认知之外的错误。
对此,笔者根据此前的产品实操经验,整合互联网优秀权限文章,输出自身关于权限的浅薄认知,望能起到些抛砖引玉的作用。
一、权限的定义是什么?权限,百度百科将其定义为:“保证职责的有效履行,任职者必须具备的,对某事项能进行决策的范围和程度。”
但笔者理解为:“不同的对象在不同使用场景下,所需要的产品相应的权力和责任的统一,其核心为权责明晰,权责分离,目的是建立分配资源的规则,以便用户能够通过这套规则,获取他们应获得的资源。”
二、权限的维度有多少?通常情况下,我们会将权限分成两个维度,分别为功能权限和数据权限。功能权限是指用户能够做什么样的操作,或者访问哪些资源,使用哪些功能;数据权限是指哪些数据属于你,或者属于你可以操作的范围。
从颗粒度维度来分,功能权限的颗粒度从粗到细一般分为“模块级”>>“页面级”>>“接口级”,由此引申出了常说的页面权限、模块权限、接口权限。
数据权限的颗粒度从粗到细一般分为“对象级”>>”字段级”,由此引申出对象级数据权限(具体到实际用户)、字段级数据权限(具体到表单字段)。
B端后台“权限设计”的99种解法与反思
文章插图
从权限操作维度来说,权限操作可以分为授权和鉴权。

  1. 鉴权是指验证用户是否拥有访问系统的权利,一般是指针对具体人的行为,根据权限规则进行合法性鉴别。在逻辑上,鉴权一般先于授权。
  2. 授权一般可理解为是分配给具体的权限给具体的人。它可分为功能授权和数据授权。
功能授权往往是单一维度的,一般会功能列表或者功能树上进行勾选,来确定用户所对应的可操作资源。
B端后台“权限设计”的99种解法与反思
文章插图
数据授权和功能授权不同,数据是多维的,是抽象的。因此,在做数据授权之前,往往需要考虑对数据维度进行拆分,而数据是抽象的,我们不能具象地看待单个用户的某一条数据,那没有任何意义,而是要内置抽象的规则,通过抽象的规则,去寻找数据背后的联系。
B端后台“权限设计”的99种解法与反思
文章插图
三、权限设计的模型有哪些?1. 自主访问控制(DAC:Discretionary Access Control)
自主访问控制是指由用户有权对自身所创建的访问对象(文件、数据表等)进行访问,拥有对象权限的用户。
可将对这些对象的访问权授予其他用户和从授予权限的用户收回其访问权限,此类权限模型往往应用于文档系统的权限设计,例如微软的NTFS文件系统。
B端后台“权限设计”的99种解法与反思
文章插图
DAC不仅能够分配权限,还能够对权限进行累加,继承,但是其最大的缺点在于,权限过于分散,不方便管理,例如,无法简单地将一组文件设置一个统一的权限开发给制定的一群用户。
2. 强制访问控制(MAC:Mandatory Access Control)
MAC模型往往用于信息敏感行业,该模型将系统中的信息分密级和类进行管理,以保证每个用户只能访问到那些被标明可以由他访问的信息的一种访问约束机制。
通俗地来说,在强制访问控制下,用户(或其他主体)与文件(或其他客体)都被标记了固定的安全属性(如安全级、访问权限等),在每次访问发生时,系统检测安全属性以便确定一个用户是否有权访问该文件。例如多级安全(MultiLevel Secure, MLS)就是一种强制访问控制策略。