产品权限分析与设计

news2024/12/26 0:41:52

目前我们使用的访问控制授权方案,主要有以下4种:

DAC自主访问控制

ACL 访问控制列表

MAC强制访问控制

RBAC 基于角色的访问控制

笔者将拆解和分析这4种权限管理方案的逻辑,并告诉你,这4种权限分别可以运用在什么样的场景中,以及它们应该怎么设计。

一、DAC自主访问控制

DAC(DiscretionaryAccess Control)自主访问控制方式:该模型针对每个用户指明能够访问的资源,对于不在指定的资源列表中的对象不允许访问。
《信息系统系项目管理师教程》(第3版)P656

如上图所示,我们假设有两名用户(用户1、用户2)和4个权限(权限1~4),用户1指明能够访问权限1和权限2,用户2指明能够访问权限3和权限4,授权成立之后就会出现如下的情况:

用户1可以正常访问权限1和权限2,但是如果想访问权限3或权限4,由于自身权限列表中没有这2个权限,所以不允许访问;用户2也是相同道理,可以访问权限3和权限4,但无法访问权限1和权限2。

这种授权方式适用于用户少权限多的场景,常见于网盘的资源分享中.

用过网盘的人都知道,网盘的分享功能就是选择想要分享的文件,点击分享,这个时候会生成分享链接,而这个分享链接,其实就是一个“用户对象”,这个“用户对象”指定了可以访问我们所选取的文件,这样当我们把链接分享出去的时候,打开链接的人就可以看到我们所选取的文件,但对于我们没有选取的网盘内的其他文件,是无法看到的。

同理,这个时候如果我选取另外的文件并创建新的分享链接,则等同于创建了一个新的“用户对象”,虽然新的分享链接中的文件可能与之前的分享链接中的文件重叠甚至完全相同,但是访问的时候,本质上还是根据不同的“用户对象”访问他们被指定允许访问的资源。

二、ACL 访问控制列表

ACL(AccessControlList)访问控制列表方式:该模型是目前应用最多的方式。目标资源拥有访问权限列表,指明允许哪些用户访问。如果某个用户不在访问控制列表中,则不允许该用户访问这个资源。
《信息系统系项目管理师教程》(第3版)P656

从定义上来看,这种授权方式跟上一种授权方式本质是一样的,但是授权的逻辑相反。

如上图,权限1和权限2分别指明允许用户1访问,权限3和权限4分别指明允许用户2访问。同样的,如果用户1想要访问没有被授权的权限3和权限4的时候,便访问不了。

这种授权方式与上一种授权方式适用的场景相反,更适用于权限少用户多的场景,常用于“抄送”功能中,比如发邮件时候的抄送功能,或者 OA 系统审批后的抄送功能,添加抄送人的过程其实就是针对当前的这个权限(邮件或审批单)指明允许哪些用户访问的过程。

三、MAC 强制访问控制

MAC(MandatoryAccess Control)强制访问控制方式,该模型在军事和安全部门中应用较多,‍目标具有一个包含等级的安全标签(如:不保密、限制、秘密、机密、绝密);访问者拥有包含等级列表的许可,其中定义了可以访问哪个级别的目标:例如允许访问秘密级信息,这时,秘密级、限制级和不保密级的信息是允许访问的,但机密和绝密级信息不允许访问。
《信息系统系项目管理师教程》(第3版)P656

如上图,假设有4个标签,标签1~4分别对应权限1~4(实际设计中,一个标签可能对应多个权限),标签等级为:标签1 > 标签2 >标签3 > 标签4,如果定义了用户1为标签2,用户2为标签3,如下:

则有:

如上,用户1可以访问标签2及其等级以下的权限(权限2、3、4),用户2可以访问标签3及其等级以下的权限(权限3、4)。

如上文所述,“该模型在军事和安全部门中应用较多”,因此在我们平时的产品中比较少接触到,接下来我随便画画,根据上文的定义尝试分析一下这个权限在做产品时可以怎么设计。

首先需要有设计一个“标签管理”页面:

标签需要有等级关系,等级可以手动输入,但注意等级不能相同,保存后如需调整等级,注意调整前需做好二次确认,一旦标签等级调整,意味着权限也会跟着变化,当标签从低等级往高等级调整时,会给已关联的用户释放更多的权限;删除标签时,如果标签已关联了用户,需要求取消用户关联,否则删除后,所关联的用户将失去所有权限,无法正常访问。

接着需要一个“标签编辑”页:

注意这里的等级不能与其他已添加的标签等级相同,标签名称原则上也不能相同,权限中,已经被其他标签关联的权限需要隐藏或不允许选择,否则如果一个高级别的标签跟一个低级别的标签都关联了同一个权限,这样根据等级授权就没有意义了;

把关联用户也放在标签管理页,是因为标签与用户是一对多的关系,这样配置起来效率更高,同样需要注意,已关联了标签的用户这里需要隐藏或不允许选择,也可以在用户管理页面增加关联用户标签的设计。

四、RBAC 基于角色的访问控制

RBAC(Role-BasedAccess Control)基于角色的访问控制方式:该模型首先定义一些组织内的角色,如局长、科长、职员;再根据管理规定给这些角色分配相应的权限,最后对组织内的每个人根据具体业务和职位分配一个或多个角色。
《信息系统系项目管理师教程》(第3版)P656

这种可以说是目前绝大多数系统都在用的一种权限管理方式。

如上图,假设有两个角色,角色1分配权限1和权限2,角色2分配权限3和权限4,用户1、2分别属于角色1、2:

则:

用户1可以访问角色1所拥有的权限1、2。

这种权限管理方式相对于另外3种,更具灵活性,在常规的产品设计中,用户与角色一般是一对一关系,即一个用户只能对应一个角色,但为了增加灵活度,也有系统会设计成一对多关系,即一个用户可以对应多个角色,用户的权限等于所对应的角色权限的总和,甚至还发展出给用户单独授权的设计,就是在用户继承了角色所有权限的基础上,还可以额外再给指定的用户单独授权,这样这个用户就比其他同角色的用户拥有更多权限。

还是随便画画,说说这种权限管理怎么设计。

首先需要一个“角色管理”页面:

系统初始提供一个“超级管理员”角色,该角色拥有所有权限,不可修改,不可删除。

接着是添加角色并授权:

然后是添加用户,除了常规的账号信息,还需要给用户指定一个角色,由此获得相应权限:

在用户列表可以给用户单独授权:

好了,以上便是4种权限管理方式的分析和设计,希望对还没做过权限设计的你有参考价值,感谢阅读!

原文出自:人人都是产品经理

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

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

相关文章

不能注册?让小白也能使用【ChatGPT】

ChatGPT介绍最近ChatGPT可谓是非常火爆,使得互联网各界人士都备受关注,如果你还不了解ChatGPT,那你真的有点落后了哈。 简单介绍一下ChatGPTChatGPT是由美国人工智能OpenAI研究开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言跟…

研一寒假C++复习笔记--左值和右值的理解和使用

目录 1--左值和右值的定义 2--简单理解左值和右值的代码 3--非const引用只能接受左值 1--左值和右值的定义 左值:L-Value,L理解为 Location,表示可寻; 右值:R-Value,R理解为 Read,表示可读&a…

Windows 安装appium环境

1 windows Appium环境 1.1 安装Node.js Node.js的安装相对简单,下载安装包安装(安装包node-v19.6.0-x64.msi), nodejs 安装 然后一路狂点下一步就可以了 安装完成后,在终端中输入node -v,显示版本号则表示安装成功 node-v16.13.1 1.2 JDK安装及环境变…

路由器刷固件

前言 我希望可以远程访问我的电脑。但,我不希望电脑总是处于运行状态,因为那样比较费电。所以需要一个方案,能将睡眠/关机中的电脑唤醒。 方案一:选用智能插座,远程给电脑上电。电脑设置上电自启。但,这存…

试题 算法训练 N皇后问题(明确清晰)

试题 算法训练 N皇后问题 提交此题 评测记录 资源限制 内存限制:256.0MB C/C时间限制:100ms Java时间限制:300ms Python时间限制:500ms 问题描述   在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即…

色彩-基础理论

颜色三大指标 色相 色相是颜色的一个属性,只有黑白灰没有色相这个属性(那银灰色是什么?) 颜色的相貌,指的也是给颜色一个名字 例如:暗红、酒红、土黄、墨绿 饱和度 颜色的鲜艳程度 纯度 饱和度主要取决于含色成分和消色成分&a…

IDE2022源码编译tomcat

因为学习需要,我需要源码编译运行tomcat对其源码进行一个简单的追踪分析。由于先前并未接触过java相关的知识,安装阻力巨大。最后请教我的开发朋友才解决了最后的问题。将其整理出来,让大家能够快速完成相关的部署。本文仅解决tomcat-8.5.46版…

tensorflow.js 视频图片多目标检测

前言:Tensorflow.js 官方提供了很多常用模型库,涵盖了平时开发中大部分场景的模型。例如,前面提到的图片识别,除此之外还有人体姿态识别,目标物体识别,语音文字等识别。其中一些可能是 Python 转换而来&…

前后端RSA互相加解密、加签验签、密钥对生成(Java)

目录一、序言二、关于PKCS#1和PKCS#8格式密钥1、简介2、区别二、关于JSEncrypt三、关于jsrsasign四、前端RSA加解密、加验签示例1、相关依赖2、cryptoUtils工具类封装3、测试用例五、Java后端RSA加解密、加验签1、CryptoUtils工具类封装2、测试用例六、前后端加解密、加验签交互…

导数与微分总复习——“高等数学”

各位CSDN的uu们你们好呀,今天,小雅兰来复习一下之前学过的知识点,也就是导数与微分的总复习,依旧是高等数学的内容,主要是明天就要考高等数学了,哈哈哈,下面,让我们一起进入高等数学…

取电芯片全协议都可兼容

乐得瑞PD协议芯片/PD取电芯片/PD受电端协议芯片 支持5/9/12/15/20v定制 1、概述 LDR6328S 是乐得瑞科技有限公司开发的一款兼容 USB PD、QC 和 AFC 协议的 Sink 控制器。 LDR6328S 从支持 USB PD、QC 和 AFC 协议的适配器取电,然后供电给设备。比如可以配置适配器输…

二十九、异常处理

目录 ①前言: ②常见的运行时异常 ③常见的编译时异常 ④异常的处理机制 ⑤自定义异常 ①前言: 1.什么是异常? 异常是程序在“编译”或者“执行”的过程中可能出现的问题,注意:语法错误不算在异常体系中。 比如: 数据索引越界异常&…

C语言的程序环境和预处理详解

目录 一、程序的翻译环境和执行环境 二、编译和链接详解 2、1 翻译环境 2、2 编译过程详解 2、3 执行环境 三、预处理详解 3、1 预定义符号 3、2 #define 3、2、1 #define定义的符号 3、2、2 #define 定义宏 3、2、3 #define 替换规则 3、3 宏和函数的对比 3、4 条件编译 3、5…

CUDA中的底层驱动API

文章目录CUDA底层驱动API1. Context2. Module3. Kernel Execution4. Interoperability between Runtime and Driver APIs5. Driver Entry Point Access5.1. Introduction5.2. Driver Function Typedefs5.3. Driver Function Retrieval5.3.1. Using the driver API5.3.2. Using …

Springboot扩展点之BeanPostProcessor

前言 Springboot(Spring)的扩展点其实有很多,但是都有一个共同点,都是围绕着Bean和BeanFactory(容器)展开的,其实这也很好理解,Spring的核心是控制反转、依赖注入、面向切面编程&…

西湖论剑 2023 比赛复现

WEB real_ez_node 在 route/index.js 中: router.post(/copy,(req,res)>{res.setHeader(Content-type,text/html;charsetutf-8)var ip req.connection.remoteAddress;console.log(ip);var obj {msg: ,}if (!ip.includes(127.0.0.1)) {obj.msg"only for…

【设计模式之美 设计原则与思想:面向对象】13丨实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?

面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP),是面向对象开发的三个主要环节。在前面的章节中,我对三者的讲解比较偏理论、偏概括性,目的是让你先有一个宏观…

电脑重装系统注册表恢复方法

​今天讲关于大家的电脑在遇到一些故障的时候,以及电脑用久了之后会卡顿,那么这时候大家一般都会给电脑重装系统。重装系统之后却发现自己电脑里的注册表不见了,重装系统后怎么恢复注册表?小编就带着大家一起学习重装系统注册表恢复到底是怎…

【博客615】通过systemd设置cgroup来限制服务资源争抢

通过systemd设置cgroup来限制服务资源争抢 1、场景 我们的宿主机上通常会用systemctl来管理一些agent服务,此时我们需要限制服务的cpu,memory等资源用量,以防止服务之前互相争抢资源,导致某些核心agent运行异常 2、systemd与cgro…

生成树协议 — STP

目录 一、环路的出现 1、广播风暴: 2、MAC地址表翻滚: 二、生成树 1、定义: 2、生成树使用的算法: 三、802.1D 1、BPDU: 2、TCN—拓扑变更消息(也是BPDU): 3、部分名词&am…