B端系统的角色权限设计
B端系统的角色权限设计是保障系统安全、提升操作效率的核心框架,直接影响产品的灵活性与可扩展性!这篇文章聚焦“从0到1构建灵活权限架构”,以经典的RBAC模型为核心,详解设计全流程。

在B端系统架构中,角色和权限可以说是支撑系统的框架,它关系到系统的安全性、便捷性和延展性。
本文将探讨一下如何从0开始设计一个灵活可扩展的权限架构。
一、梳理组织架构与业务场景
1. 先梳理企业的组织架构和岗位职责
绘制出企业组织架构图,理解岗位、小组、部门之间的层级关系、管理关系。
2. 了解业务流程及每个岗位在涉及业务中的职责、边界
例如普通销售应只能查看自己客户的基本信息、消费记录等,而部门经理可查看本部门下所有销售的客户信息。
最好能够至少一个岗位挑一位员工访谈,明确他们日常工作内容、需要操作及查看的业务、数据。
二、构建合适灵活的权限模型
选择一个合适的权限模型作为技术实现的蓝图。
目前最经典且广泛应用的是RBAC(基于角色的访问控制) 模型。
这里先简单介绍一下RBAC模型。
RBAC模型的三要素:用户 -> 角色 -> 权限
- 用户:系统用户,即使用系统的人。
- 角色:权限的集合,与具体的职位或职责绑定(如“销售经理”、“HR专员”)。
- 权限:对功能、数据(如“客户管理”、“财务报表”)进行操作(如“查看”、“编辑”、“删除”)的限制边界。
权限的精细化分级:
- 功能权限:控制用户能否看到并使用某个功能模块或菜单(如:能否看到“数据报表”菜单)。
- 数据权限:控制用户能看到哪些数据范围(如:本人的数据、本部门的数据、全部数据)。这是B端系统复杂性的核心所在。
- 操作权限:控制用户对数据能执行哪些操作(如:增、删、改、查、导出、审批)。
一般功能权限和操作权限是结合一起设置的,就称为“功能权限”。
例如想给一个用户配置了“合同管理”页面的“新增”操作权限,那他肯定是有“合同管理”这个菜单权限的。

基于RBAC模型,我们可以对每个岗位的功能权限、数据权限包装成一个聚合角色。(当然,其中要去除线下业务。)
如销售专员可以包装成“销售专员”角色 ,各分店的销售专员岗位都可以授权这个角色。


三、设计要点扩展
1. 授权角色而非岗位
有的同学可能疑惑,角色和岗位名称基本都是一致的,为什么不直接授权给岗位,非要多包一层“角色”用来授权呢?
理论上直接授权给岗位也是可行的,但是实际中会存在一些问题。
以下通过举几种实际情况来说明RBAC模型优势:
(1)一个岗位对应多个角色
例如“销售主管”岗位,既对应“销售经理”角色又对应“部门负责人”,又对应“订单审核员”角色。
那只需要将“销售主管”岗位对应匹配上这三个已经设置好权限的角色就好,无需再一个个勾选繁多的功能/数据权限。
(2)多个岗位权限一致
另外,例如像“销售专员”、“客服代表”如果权限完全一致,那可以都授权“客户管理人员”这个角色就行,就不需要每个岗位都一一去配置权限了。
(3)员工岗位变动
例如公司组织架构调整,合并部门、撤销更为等,当员工岗位变动时,只需更改其背后绑定的角色,其权限即可自动更新,不需要重新梳理权限。
2. 系统角色与业务角色
系统角色与上方所说的业务角色“销售主管”“销售经理”不同,
通常指“超级系统管理员”“系统管理员”等对系统、用户、账号、数据进行管理的角色。
系统角色一般是与业务角色区分开在不同页面模块进行授权管理。
主要是设置例如“创建角色”“恢复数据”这样的系统权限。
但大部分系统只设一个系统管理员角色,且默认为最高权限,不会将系统角色的授权放在前端页面上。
3. 数据权限的“并集”和“交集”
3-1 . 先聊一下数据权限的几种划分维度:
(1)基于组织架构的数据权限
这是最常见的一种维度。一般分为:
- 所有机构的
- 本机构的
- 仅本部门的
- 本部门及下级部门的
- 仅本人的
(2)基于数据归属的数据权限
这个维度也是较为常见的。一般分为:
- 我所在部门创建的
- 我下级创建的
- 我负责的
- 我参与的
- 归属我的
- 我创建的
(3)基于其他维度划分的数据权限
例如按项目划分。一般分为:
- 本人及下级参与的
- 项目我部门参与的
- 项目我负责的
- 项目我参与的
项目具体基于什么维度,怎样划分需要根据组织架构及业务去制定。
3-2 . 数据访问范围的“交集”
例如HR仅能查看本机构自己负责的招聘人员信息。
则给HR授权角色的数据权限时,需授权“本机构的”且“我负责的”权限。
3-3. 数据访问范围的“并集”
例如销售可以看到归属自己的客户及他有参与的项目的客户信息。
则给销售分配角色权限时,需要授权“归属我的”及“我参与的项目”的数据权限。
4. 对特殊需求员工赋予聚合角色+功能角色
给角色取名时,一般都会采用和岗位名称一致的名称,这样较简单直观。且大部分同个岗位的权限是一致的,创建对应的一个“聚合角色”就可以。
对于有特殊需求的员工,例如兼岗需要额外负责某项工作(以某个营销专员还需要审批合同为例),就需要授权聚合角色(营销专员)+功能角色(合同审批人员)。
写在最后
设计好角色权限对一个B端系统来说非常重要,这涉及到产品的搭建架构和后续扩展性。若初期没有通盘考虑好,等后期要推翻原有逻辑,就会造成大量的重构成本。
本文由人人都是产品经理作者【Zoe】,微信公众号:【Zoe life】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
- 目前还没评论,等你发挥!

起点课堂会员权益




