2.通用权限管理模型

简介: 本文介绍了ACL和RBAC两大权限模型。ACL通过用户/角色直接授权,简单直观;RBAC基于角色分配权限,更易管理。RBAC又分为RBAC0到RBAC3,逐步引入角色继承与职责分离,提升系统安全与灵活性。了解模型有助于构建清晰的权限体系。(238字)

笔者的学习认知中,对于一个新框架往往都会先去学习一下底层模型(即表结构及关系),因此这里我们就来了解一下通用的权限管理有哪些,各自的模型关系大概是什么样子,好对我们接下来的学习有个全局认知。
除了本节讲解的ACL、RBAC,还有一些的DAC、MAC、ABAC,感兴趣的读者们可以自行了解一下。
ACL权限模型
ACL(Access Control List)访问控制列表,是很古老的一个权限控制模型。核心思路:将某个对象的某种权限授予某个用户或某种角色,他们之间的关系是多对多,即一个用户/角色可以具备某个对象的多种权限,某个对象的权限也可以被多个用户/角色所持有。
用户表
权限表
角色表
直接给用户授权,1:N​
角色跟权限绑定,1:N​
给用户赋予角色​,1:N
如油炸小波是普通用户
油炸大波是管理员
权限如:可删除数据、有excel导入权限等
ACL使用非常简单,在搞明白原理之后,开发者可以不用任何权限框架就可以快速实现ACL权限模式。当然Spring Security也为ACL提供了相应的依赖:spring-security-acl,如果项目有使用可以直接添加此依赖。
RBAC权限模型
RBAC(Role-based access control)基于角色的访问控制,是一种较新且广为使用的权限控制机制,这种机制不是直接给用户赋予权限,而是将权限赋予角色。(看到这读者们是不是觉得跟ACL有相似之处呢)
RBAC将用户按角色进行归类,通过用户的角色来确定用户对某项资源是否具备操作权限。RBAC简化了用户与权限的管理,它将用户与角色关联、角色与权限关联、权限与资源关联,这种模式使得用户的授权管理变得非常简单和易于维护。RBAC权限模型有三个主要原则:
(1)最小权限:给角色配置的权限是其完成任务所需要的最小权限集合
(2)职责分离:通过相互独立互斥的角色来共同完成任务,即不能一个角色有重复功能,有这种场景就给一个用户赋予多个角色
(3)数据抽象:通过权限的抽象来体现
RBAC权限模型分类
RBAC0
在RBAC0中,一个用户可以具备多个角色,一个角色可以具备多个权限。如下图
用户表
角色表
1:n​
权限表
1:n​
访问合集
1:n​
1:1​
用户所具备的权限是用户所具备角色的权限合集
RBAC1
RBAC1是在RBAC0的技术基础之上建立的,主要是增加了角色的继承关系,让角色有了上下级。如下图
用户表
角色表
1:n​
权限表
1:n​
访问合集
1:n​
1:1​
用户所具备的权限是用户所具备角色的权限合集
0:n​
RBAC2
RBAC2也是在RBAC0的技术基础之上建立的,引入了静态职责分离和动态职责分离。
角色互斥:在实际项目中有一些角色是互斥的,如财务就不能自己报账自己审批,对于这个角色一般不能和其他角色见人。通过职责分离可以解决这一问题。
静态职责分离:在权限配置阶段就做限制。如同一个用户不能被授予互斥的角色,授予时做互斥判断。
动态职责分离:运行阶段进行限制。如一个用户即使有多个角色,代码也会实时判断其真正有效的角色是几个。
用户表
角色表
1:n​
权限表
1:n​
访问合集
1:n​
1:1​
用户所具备的权限是用户所具备角色的权限合集
静态职责分离


动态职责分离


RBAC3
RBAC3是RBAC1和RBAC2的合体,如下图:
用户表
角色表
1:n​
权限表
1:n​
访问合集
1:n​
1:1​
用户所具备的权限是用户所具备角色的权限合集
静态职责分离


动态职责分离


0:n​

相关文章
|
2月前
|
机器学习/深度学习 编解码 人工智能
102类农业害虫图像识别数据集分享(适用于YOLO系列深度学习分类检测任务)
102类农业害虫图像识别数据集分享(适用于YOLO系列深度学习分类检测任务) 数据集分享 在智慧农业与智能害虫监测的时代背景下,构建高质量的农业害虫识别数据集已成为实现自动化检测与分类的核心环节。
315 2
|
2月前
|
弹性计算 运维 安全
阿里云服务器镜像怎么选?公共、自定义、共享、云市场、社区镜像区别、适用群体与选择指南
在选择阿里云ECS服务器时,镜像选择至关重要,决定了服务器的初始环境、预装软件及运维复杂度。阿里云提供公共、自定义、共享、云市场和社区五大类镜像。公共镜像适合新手、资深运维及有合规要求的企业;自定义镜像适合中大型企业及需快速复制环境的用户;共享镜像适合团队协作;云市场镜像适合缺乏运维经验的用户;社区镜像适合技术极客及开源爱好者。用户应根据需求、成本、权限、地域及技术支持等因素,选择最适合的镜像。
541 3
|
2月前
|
数据采集 运维 数据中心
别再手动查IP段了!用ASN+IP查询工具一键识别云厂商数据中心
告别手动维护云厂商IP段!通过ASN+usage_type精准识别阿里云(AS45102)、AWS(AS16509)等云数据中心IP,毫秒级响应、准确率超95%,支持本地私有化部署,零误伤、免运维,反爬/风控集成极简。
864 0
|
网络虚拟化 虚拟化 Windows
|
28天前
|
数据采集 人工智能 算法
如何评估GEO优化的效果?
GEO(生成式引擎优化)是2026年数字营销核心赛道,聚焦AI场景下品牌曝光、信息准确与商业转化的量化评估。区别于传统SEO,其构建覆盖“AI可见—信息准确—用户转化—合规生态”的六维指标体系,强调数据可追踪、结果可验证、策略可迭代,助力企业实现AI流量高效转化。(239字)
|
1月前
|
机器学习/深度学习 JSON 自然语言处理
PAI-Rec 特征工程全解析:统计特征、实时特征、序列特征与 FG 特征算子
PAI-Rec是阿里云智能推荐的特征工程解决方案,支持离线统计、实时及序列特征自动衍生,并通过Feature Generator(17种内置算子)保障离线/在线特征一致性,大幅降低开发与维护成本。
453 9
|
JavaScript
Vue Print-js 打印问题记录~
Vue Print-js 打印问题记录~
|
存储 运维 分布式计算
如何设计信息安全领域的实时安全基线引擎
奇安信集团高级技术专家覃永靖在 FFA 2021 的分享
如何设计信息安全领域的实时安全基线引擎
|
存储 前端开发 JavaScript
【Django学习笔记 - 6】:cookie的配置
【Django学习笔记 - 6】:cookie的配置
758 0
【Django学习笔记 - 6】:cookie的配置
|
机器学习/深度学习 人工智能 自然语言处理
给神经网络加入先验知识!
给神经网络加入先验知识!

热门文章

最新文章