【B端产品知识总结】角色权限管理设计思想

news2024/11/13 14:58:04

目录

前言

一、简单的用户权限

二、基于角色的权限访问模型(RBAC)

三、RBAC模型的其他权限方案

1、用户组权限设计

2、继承角色权限设计

3、基于角色设计的约束

四、权限控制的设计

1.页面权限

2.操作权限

3.业务权限

4.数据权限

五、对于B端系统权限设计补充

1、B端系统中初次权限的赋予

2、B端系统中初次配置用户

3、B端系统禁止删除同级角色

4、商业领域下权限的版本分割


前言

做过了大量B端产品后,就会发现B端产品有很多类似的功能模块,比如系统设置里的用户角色权限和基础信息维护,虽然说B端产品的业务可能不相同、服务的客户群体也不一样,但是对于管理端的用户管理体系是必不可少的。基于B端业务的不同复杂度和相关B端数据的敏感度,产品经理在拿到任何一个B端系统的需求时,就需要了解业务方对权限的需求后第一时间就要考虑基于用户角色的控制访问,以便于后期功能更新迭代不至于再大动干戈的处理系统用户相关的信息。

作为B端产品中的后台管理功能,角色权限管理的设计非常考验产品经理的基本功,这个功能即使做好了不能代表产品能有多优秀,但是一旦没有做好就会导致系统各种流程的错乱和用户数据展示的有问题进而导致产品崩溃,所以产品经理往往对B端产品的系统权限架构设计有着一定的畏惧心理。接下来我们从简到易剖析角色权限,让我们在面对不同业务时,能够更加游刃有余的面对。

一、简单的用户权限

当一个B端系统因为需要用户进行登录,进入系统后会展示B端系统的所有的功能模块和系统数据并且能进行操作,这乍一看好像没有什么问题,但是例如系统的用户管理任何一个用户都可以操作并且对其他用户进行修改,这是不是就不大合理了,所以这也引申出了不同用户需要有不同的用户管理权限。

当一个系统用户数量较少时又有权限的需求,可以在创建用户时直接开放权限管理,管理员在创建该用户就清楚用户可以看到那些页面和操作那些数据,这样就可以做到一个简单的用户用户权限分配

这种方法对研发人员实现起来也是比较容易,对于小型的功能型系统用户数偏少的系统或者权限系统体量小可以采用这种解决方案可以节省一定的开发成本。但是对于中大型系统的用户往往是比较多的,例如一个系统中正常使用用户有100个,我们也可以用创建用户关联权限的这种方式,如果是1000个呢是不是就比较繁琐,而且如果有很多用户需要更改权限是不是也比较麻烦,此时我们可以用一种通用的技术模型来解决这个问题-- RBAC模型。

二、基于角色的权限访问模型(RBAC)

RBAC通常用于配置角色拥有权限(页面权限、操作权限、业务权限、数据权限),实现每一种角色可以对应一组相应的权限,然后角色和用户进行关联。 实现原理:创建的用户按角色进行归类,通过用户的角色来确定用户能否针对系统资源进行相对权限功能的操作。 RBAC模型的三要素为:用户、角色、权限。

当有了角色的概念后,我们可以给角色设置相关的权限,再创建用户时只需要绑定一个相应的角色,当权限有变动我们只需要改变角色就可以改变这个角色关联的所有用户对应的权限,这样无需对每一个用户都进行权限调整,大幅度提升权限调整的效率,这样看是不是就简单多了。

RBAC模型的两种基本对应关系:

用户和角色为多对一的关系(用户只能关联一种角色)

用户和角色为多对多的关系(用户可以关联多种角色,用户关联的角色权限取并集)

这两种对应关系可以参考具体业务需求去决定使用哪种设计方案。RBAC的这种基于角色的权限控制方案适用于90%的B端产品。当对于一个系统对权限控制需求有更高的控制需求时,例如SAAS等大型系统又牵扯不同展示数据和不同的控制权限基础的RABC模型往往不适合,我们则需要考虑其他的用户权限方案。

三、RBAC模型的其他权限方案

RABC基础模型通过将一类用户绑定角色,然后让角色赋予权限的方式一定减轻了管理的负担。

当系统用户逐渐增多,用户之间出现了细分角色,这样就需要将把很多用户的角色进行变更,这样的工作量仍然很大;当一个角色的因为职级的问题需要再增加一个角色而且这两个角色只是增加了一部分审批的业务权限,这导致角色量也会越来越多,这样管理员也会需要不断增加角色并且更改用户的角色,这样工作量也不小;当用户成员之间角色牵扯一定的互斥关系,例如采购角色和财务角色是不能分配到同一个用户的,要不然采购的信息提交财务审核通过,这些角色是需要进行隔离的,要不然当一个用户既是‘运动员’又是‘裁判员’ ,那么就会出现问题;

这些需求的出现我们就需要设计更加符合业务角色权限控制,分别有用户组权限设计、继承角色权限设计、约束角色设计。

1、用户组权限设计

当角色类型类型逐渐增多,管理员去维护角色种类也会越来越麻烦,我们可以在相同使用场景内的用户创建一个用户组的方式对用户组进行角色和权限的赋予。比如采购人员可以创建一个采购组,采购组关联采购审批角色和采购运营角色,当采购组的审批角色被取消时只需要取消该采购组的采购审批角色即可,不需要再对所有采购人员进行取消采购审批角色。这样当角色类型增多但是将场景使用人进行分组就可有效的减少对用户和角色的变更。

其实细想这种设计我们可以将用户组抽象为职能(岗位),当一个系统用户数很多但是职能(岗位)明确的情况下我们可以使用用户组权限设计,来将用户组(抽象为企业的某一具体职能岗位)进行关联角色权限,这样就不需要对每个用户进行角色的配置,还可以减少管理员的权限分配工作量。而且用用户组的方式可以将初级岗位划分一定的菜单页面数据的角色权限和基础的业务数据权限。事实上一个用户在企业中往往都会有直属部门和岗位的划分,当我们将部门和岗位职能都抽象为两个用户组,我们可以根据这个纬度来设计更加复杂的角色权限,这样的组合方式也会解决用户对应系统权限配置的灵活性。

当然如果在设计这种权限方式时可以保留基础的RABC的设计,让用户可以直接关联角色,使方案进行融合使用。

2、继承角色权限设计

当一个大型企业的部门和相关岗位类型很多但是权职相对规范时,我们在可以考虑用用户组权限设计方案来规划,但是由于角色都是固定规范的权限匹配,对于配置较多角色配置时会出现遗漏错误并且也会出现权限分配错误的情况,例如一个标准化部门中含有产品总监、产品经理、产品专员、产品助理,产品总监的权限肯定是要大于产品助理的,但当多个角色配置不当就会出现一定权限问题。此时我们可以考虑在角色配置时增加继承角色权限的配置。

继承角色配置的优势是可以将角色设计为角色树,层级越高权限越大且层级低的权限不能对其层级高的进行权限编辑,但是层级高的可以配置自己子层级的权限,层级高的角色也可以给层级低的进行角色变更。这样管理员在划分角色时可以只划分主管一级的角色,主管在拿到他账号权限时,可以自主分配创建自己部门的角色及相应的权限。例如产品总监可以在自己的账号角色权限下创建编辑产品经理、产品专员的角色权限。这样对系统管理员由于只分配主管的角色可减少工作量的同时也会减少角色配置的错误。

3、基于角色设计的约束

当产品经理在设计基于角色权限控制时,需要考虑是否对角色做约束控制,无论是基础的RBAC设计还是用户组权限设计和继承角色设计。在角色的创建之前我们需要根据一定业务范围和相关需求要去考虑是否去做。其设计思想是对于敏感性或者高权限的角色是否设置数量、互斥、

a.角色用户数量约束:一个角色所关联用户数量的限制,比如系统高级管理员admin,可以设置为只允许存在一个

b.角色身份互斥约束:一个用户不能分配到两个互斥的角色上,例如采购和财务,球员和裁判,这就需要创建角色后进行互斥的配置。//当一个用户可以关联互斥角色的前提下,如果再做用户角色的互斥就需要用户登录时需要进行选择进入系统的身份这种方式来实现。

c.多角色权限取并集/交集:在设计一个用户关联角色也可提前设置是取并集或者是交集,这样可以对权限做一定性质的规范,使系统用户的权限即可灵活又可限制。

四、权限控制的设计

我们讲述了在各种B端应用场景下来设计符合业务的基于角色的权限设计方案,在传统的B端业务下我们可以使用RABC模型来设计;在用户数量多但是业务场景(岗位职能)较少时,我们可以使用用户组权限来设计;当业务场景(部门岗位职权规范)多的情况下,我们可以使用继承角色权限来设计;当业务场景有各种规则约束时,我们可以对角色上进行一定的约束来实现系统规范和灵活性;当B端系统有其他更加复杂的业务权限需求时,我们可以将几种方案进行组合设计。当需求的增加一定会导致开发资源的增加,这就需要产品经理在设计功能时需要评估尽可能在开发资源有限的情况下设计出符合业务的功能设计。

我们讲了这么多角色权限控制的应用场景,那么对于B端系统来讲角色控制的权限到底是什么,遇到不同类型的权限怎样评估怎样规划权限的划分合理呢?

其实权限就是指在一个人在企业中由于不同部门划分、不同职责划分后,由于在实际企业负责具体业务的不同,然后B端系统根据其抽象出来的在系统中实行其规定权力的身份。让其管理者基于系统的安全规则与策略,控制不同用户合理访问对应资源。权限管理的优势就是让企业工作中群组内不同人员、不同组织的分工,让不同角色专注于自己的工作范围,也可以降低操作风险发生概率,也便于管理。

在B端系统的场景下我们一般分为四种权限:页面权限、操作权限、业务权限、数据权限

1.页面权限

系统的可视化都是由一个个页面组成的,页面权限就是指一级页面到N级页面是否设置为可见,使用户进入系统中可以看到页面菜单权限

2.操作权限

用户在拥有页面及数据可视化的权限后,对页面进行数据的增删改差操作可定义为操作权限,操作权限往往是跟着页面权限下的

3.业务权限

业务权限其实也属于操作权限,但是往往业务权限需要有明确的业务角色进行划分,也是系统最重要的权限逻辑。例如重要表单的申请、业务数据的审批、用户变更等

4.数据权限

数据权限包含数据范围、数据字段,比如一个标准的系统中含有的规范性的字段往往可以跟随页面权限进行展示,但是一些业务数据往往都有保密性的要求,比如电商的进货价、虚拟机的密码等,这些数据也需要做成是否可见的字段数据权限进行配置。

在角色中上下级,同级有竞争中,在系统中也需要对用户数据做数据权限的划分,比如字段数据权限都配置为可见,但是用户A的客户数据不能展示到用户B的客户数据中,这种往往是在配置权限时进行数据权限的隔离使上级对下级的数据进行可见,同级中只能自己看到自己负责的数据。也适用于SAAS中不同企业数据隔离和团队数据隔离等。

注意事项:产品经理在做数据权限的设计时,需要与开发进行相关设计细节的沟通,以便达到页面模块、操作接口和业务接口都能进行根据业务需求进行分离和组合,并且在数据隔离后任何的角色用户在操作上,不会产生任何影响系统体验的功能。

补充:基础的数据权限可以根据部门唯独范围来进行划分,分为可见所有部门数据,可见本部门数据(是否包含子部门数据),可见本人数据,跨部门数据的标识来区分数据权限,每一个数据权限划分好后往往需要匹配一个角色/角色组。

五、对于B端系统权限设计补充

1、B端系统中初次权限的赋予

在B端系统中基本的操作逻辑是在系统中管理员去手动添加系统用户,在添加系统用户时就配置该用户的权限。但是往往在B端系统中我们会允许用户自行加入系统或者是对接其他系统进行用户数据的同步,这样会导致无法配置用户的权限。所以我们在B端系统中尽量默认创建一个最小权限角色,赋予这个角色用户最基础的权限,类似“游客”角色。也可以根据根据用户的某些特定信息,如部门岗位(用户组权限设计)等,为其自动赋予相应的角色权限。这样做既简化了用户的操作流程,又提高了系统的智能化水平。

2、B端系统中初次配置用户

在B端系统建立之初我们会设置一个最高权限的用户的角色(例如admin),这个角色帮助系统完成首次的角色与权限设置,为后续的业务人员添加和角色配置奠定基础。当这个角色拥有系统中的所有的操作和管理权限,此账户最好设置为一个规则复杂的密码来保障系统的安全性,并且需要将此账号进行隐藏,不在普通用户视图中进行展示,并且配置一定的登录和访问控制,例如admin账号的登录时间和地点进行设置,防止未经授权的访问,也可以配置多种身份校验,提高账号的安全性等。

3、B端系统禁止删除同级角色

B端系统中管理员在人员管理/角色管理中处理自己的角色时,需要格外小心。因为一旦管理员修改或删除了自己的角色,可能会导致系统失去管理权限,从而无法正常添加其他成员或维持系统的运行。因此,在设计系统时,我们需要加入相应的判断机制,当管理员是管理角色或者是自己关联的角色时,禁止其编辑或删除自己的角色。

4、商业领域下权限的版本分割

往往B端系统都会存在商业化的需求,基于角色权限分配后,可以进行一个完整系统的功能的功能切割,按照功能切割为多个VIP版本,例如基础版、进阶版、企业版等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2079212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MyBatis】转义符+缓存机制

目录 一. 特殊符号处理 二. MyBatis缓存机制 1. 什么是缓存&#xff1f; 2. 一级缓存 3. 二级缓存 一. 特殊符号处理 1. 在 mybatis 中的 xml 文件&#xff0c;一些特殊符号需要转译&#xff1a; <!--转义字符 " <" 号会报错&#xff0c;">&qu…

哪个软件可以把试卷扫描成空白卷?这几款很不错

哪个软件可以把试卷扫描成空白卷&#xff1f;在数字化学习日益普及的今天&#xff0c;将试卷扫描成空白卷成为了许多教师和学生提升学习效率的重要手段。传统的扫描仪不仅体积庞大、操作复杂&#xff0c;而且成本高昂&#xff0c;不太适合个人用户。那么要怎么做呢&#xff1f;…

图纸文件怎么加密,六款图纸加密软件推荐

在现代设计与工程领域&#xff0c;图纸和设计文件的安全性至关重要。无论是建筑设计、机械工程还是电子电路图&#xff0c;图纸泄露都可能造成无法估量的损失。因此&#xff0c;选择一款可靠的图纸加密软件是保护知识产权的首要任务。在本文中&#xff0c;我们将推荐六款备受好…

尚硅谷Java面试题第四季-Java基本功

1.服务可用性多少个9是什么意思&#xff1f; 2.Arrays.asList()把数组转换成集合大坑 代码&#xff1a; public class Arrays_BugDemo {public static void main(String[] args){List<Integer> list Arrays.asList(1,2);list.add(3);list.forEach(System.out::println…

【Notion的一些简单介绍】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

鸿蒙位置服务

位置服务 1、首先申请权限 在module.json5文件下申请位置权限 "requestPermissions": [{"name": "ohos.permission.LOCATION", // 权限名称,为系统已定义的权限"reason": "$string:location_reason", // 申请权限的原因,…

别让病毒毁了你的数据,用户必备的ClamAV扫描神器!

背景 在Linux环境中&#xff0c;尽管由于其独特的权限管理和文件系统结构使得病毒感染的概率较低&#xff0c;但为了确保系统的安全性&#xff0c;尤其是在处理共享文件或邮件服务器时&#xff0c;安装和使用病毒扫描工具依然至关重要。ClamAV是一款开源的防病毒软件&#xff…

KPaaS:微服务架构下的持续集成与部署(CI/CD)应用实践

在微服务架构下&#xff0c;CI/CD&#xff08;持续集成/持续部署&#xff09;已经成为软件开发过程中的一项关键实践。这种实践不仅提高了开发团队的工作效率&#xff0c;还确保了软件的质量和安全性。通过将代码更改频繁地集成到主分支&#xff0c;开发团队可以更早地发现潜在…

oppo手机短信删除了怎么恢复?可用这2个恢复方法

日常使用OPPO手机时&#xff0c;如果不慎删除了重要的短信&#xff0c;怎么办&#xff1f;oppo手机短信删除了怎么恢复&#xff1f;今天小编就分享2种简单的恢复办法&#xff0c;帮大家找回那些被误删的短信。 方法一&#xff1a;通过oppo手机的云端备份服务恢复短信 OPPO手机…

1259:【例9.3】求最长不下降序列 动态规划

1259&#xff1a;【例9.3】求最长不下降序列 题目链接 【输入样例】 【输入样例】 14 13 7 9 16 38 24 37 18 44 19 21 22 63 15【输出样例】 max8 7 9 16 18 19 21 22 63思路&#xff1a; 确定状态&#xff1a; a[n]数组放数据&#xff0c; dp[n]数组放第i个位子前最长子序…

产品经理如何提升系统思考能力

很多工作年限比较短的产品经理&#xff0c;分析问题的时候最初看到的都是单点&#xff0c;只有积累了足够的经验和阅历后&#xff0c;才能看到单点之外的“全局”&#xff0c;才会慢慢形成自己的系统思考能力&#xff0c;才会提高自己的认知能力。 产品经理如果想往更高层面发…

nacos配置持久化到Mysql数据库

Nacos持久化配置&#xff08;Mac版本&#xff09; 一&#xff1a;生成持久化nacos数据的表 找到mysql-schema.sql表(如下图)&#xff0c;里面全部内容直接在mysql库中执行&#xff0c;生成表。 mysql-schema.sql位置&#xff1a; nacos/distribution/target/nacos-server-2.…

erlang学习:gen_server书上案例22.6练习题5

检查是否有懒惰的工人&#xff0c;也就是接受工作但不按时完成的进程。把任务请求函数修改为 返回{JobNumber, JobTime, F}&#xff0c;其中JobTime是工人必须完成任务的秒数。如果工人在JobTime 1时还未完成任务&#xff0c;服务器就应当向其发送一个hurry_up&#xff08;快点…

创建视频说明书二维码的具体步骤(三步操作)

原创二维码教程&#xff0c;2024.8.27&#xff0c;长沙 视频说明书二维码是一种创新且有效的工具&#xff0c;能够为用户提供直观的操作指导和使用体验&#xff0c;广泛应用于各种场景中。 1.电子产品说明书 手机、平板和电脑&#xff1a;在包装盒内或产品说明书上加入视频二…

kkfileview最新源码编译+部署+踩坑问题

kkFileView为文件文档在线预览解决方案&#xff0c;该项目使用流行的spring boot搭建&#xff0c;易上手和部署&#xff0c;基本支持主流办公文档的在线预览&#xff0c;如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等&#xff0c;其开源免费&#xff0c;且…

2535. 解密 [CSP-J 2022]

代码 #include <bits/stdc.h> using namespace std; long long m,n; int check(int x){if(x * (m - x) n) return 0;if(x * (m - x) < n) return 1;if(x * (m - x) > n) return 2; } int main(){int k;cin >> k;while(k--){long long e, d,p0,q0;scanf(&q…

脑靶向肽 ;SHp ;CLEVSRKNC ;缺血归巢肽

【脑靶向肽 SHp 简介】 SHp多肽是一种抗肿瘤多肽&#xff0c;它可以通过激活P53基因&#xff0c;调节细胞凋亡相关基因的蛋白表达&#xff0c;从而抑制肿瘤细胞的增殖并诱导细胞凋亡。在最新的研究中&#xff0c;SHp多肽被发现可以促进T细胞对肿瘤细胞的杀伤作用&#xff0c;显…

【C++】提示并输入一个字符串,统计该字符串中字母个数、数字个数、空格个数、其他字符的个数

1、提示并输入一个字符串&#xff0c;统计该字符串中字母个数、数字个数、空格个数、其他字符的个数 only只是一个简单的小练习 #include <iostream> #include <string>using namespace std;int main() {string str; //定义一个字符串类型cout<…

《黑神话》的成功只是开始,国产3A拿什么和氪金游戏对抗?

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/2240.html 《黑神话&#xff1a;悟空》作为国产3A游戏的代表&#xff0c;虽然在品质和口碑上取得了巨大成功&#xff0c;但其盈利能力相较于国产氪金游戏仍有一定差距。根…

PG_RMAN 部署与使用

PG_RMAN 简介&#xff1a; pg_rman是一款开源的备份恢复软件,支持在线和基于PITR的备份恢复方式。 pg_rman类似于 oracle的rman,可以进行全量、增量、归档日志的备份。 pg_rman特点: 使用简单,一个命令即可完成备份和恢复支持在线全备、增量、归档日志备份支持备份压缩。支持自…