2.通用权限管理模型

简介: 本文介绍了ACL和RBAC两种常见权限模型。ACL通过直接为用户或角色授权实现控制,简单灵活;RBAC则基于角色分配权限,支持角色继承与职责分离,更适用于复杂系统。还简要提及DAC、MAC、ABAC等模型,帮助读者建立权限管理的全局认知。

笔者的学习认知中,对于一个新框架往往都会先去学习一下底层模型(即表结构及关系),因此这里我们就来了解一下通用的权限管理有哪些,各自的模型关系大概是什么样子,好对我们接下来的学习有个全局认知。

除了本节讲解的ACL、RBAC,还有一些的DAC、MAC、ABAC,感兴趣的读者们可以自行了解一下。

ACL权限模型

ACL(Access Control List)访问控制列表,是很古老的一个权限控制模型。核心思路:将某个对象的某种权限授予某个用户或某种角色,他们之间的关系是多对多,即一个用户/角色可以具备某个对象的多种权限,某个对象的权限也可以被多个用户/角色所持有。

ACL使用非常简单,在搞明白原理之后,开发者可以不用任何权限框架就可以快速实现ACL权限模式。当然Spring Security也为ACL提供了相应的依赖:spring-security-acl,如果项目有使用可以直接添加此依赖。

RBAC权限模型

RBAC(Role-based access control)基于角色的访问控制,是一种较新且广为使用的权限控制机制,这种机制不是直接给用户赋予权限,而是将权限赋予角色。(看到这读者们是不是觉得跟ACL有相似之处呢)

RBAC将用户按角色进行归类,通过用户的角色来确定用户对某项资源是否具备操作权限。RBAC简化了用户与权限的管理,它将用户与角色关联、角色与权限关联、权限与资源关联,这种模式使得用户的授权管理变得非常简单和易于维护。RBAC权限模型有三个主要原则:

(1)最小权限:给角色配置的权限是其完成任务所需要的最小权限集合

(2)职责分离:通过相互独立互斥的角色来共同完成任务,即不能一个角色有重复功能,有这种场景就给一个用户赋予多个角色

(3)数据抽象:通过权限的抽象来体现

RBAC权限模型分类

RBAC0

在RBAC0中,一个用户可以具备多个角色,一个角色可以具备多个权限。如下图

RBAC1

RBAC1是在RBAC0的技术基础之上建立的,主要是增加了角色的继承关系,让角色有了上下级。如下图

RBAC2

RBAC2也是在RBAC0的技术基础之上建立的,引入了静态职责分离和动态职责分离。

角色互斥:在实际项目中有一些角色是互斥的,如财务就不能自己报账自己审批,对于这个角色一般不能和其他角色见人。通过职责分离可以解决这一问题。

静态职责分离:在权限配置阶段就做限制。如同一个用户不能被授予互斥的角色,授予时做互斥判断。

动态职责分离:运行阶段进行限制。如一个用户即使有多个角色,代码也会实时判断其真正有效的角色是几个。

RBAC3

RBAC3是RBAC1和RBAC2的合体,如下图:

相关文章
|
6月前
|
人工智能 数据挖掘 语音技术
智眸:基于 Rokid Glasses的房产经纪人带看辅助应用
智眸是贝壳找房为房产经纪人打造的AI眼镜应用,基于Rokid Glasses实现“镜在眼前,智慧搭伴”。通过双端协同,实时投送小区信息、智能提词、全场拾音录制,解放双手、提升专业形象与带看效率,助力经纪人专注服务、沉淀数据。
649 1
|
9月前
|
人工智能 Serverless API
一键部署Stable Diffusion教程
本教程指导用户通过阿里云函数计算一键部署Stable Diffusion,支持多种绘图风格,提供免费额度体验。包含详细步骤与注意事项,助力快速搭建AI绘画环境。
一键部署Stable Diffusion教程
|
9月前
|
Java 数据库连接 调度
xxljob执行源码分析
本文深入解析XXL-JOB分布式任务调度框架源码,涵盖架构设计、核心执行流程与关键线程池机制。内容包括任务触发、注册、失败重试、日志报告及时间轮调度原理,结合带中文注释的源码包与分析导图,全面剖析其高性能设计实现。
 xxljob执行源码分析
|
9月前
|
缓存 开发工具 git
QLExpress使用及源码分析
基于阿里巴巴QLExpress规则引擎,通过实体构建、接口定义与脚本编写(如user.yaml),实现灵活的业务规则配置。支持AST语法树解析、上下文赋值与缓存机制,适用于动态表达式执行与规则计算场景。
|
9月前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度框架的本地部署与使用流程,涵盖源码获取、服务端数据库初始化、配置修改、服务启动及客户端注册执行器等步骤,并演示如何配置调度任务、选择路由策略及测试执行效果,帮助快速上手使用。
 xxljob本地运行
|
6月前
|
IDE 编译器 开发工具
别再只盯着Keil了!看看IAR和CCS能拯救你多少脑细胞
本文深度对比Keil、IAR与TI CCS三大嵌入式IDE:Keil胜在生态成熟、入门友好;IAR以极致编译优化和安全认证见长;CCS则专精TI芯片,多核调试能力突出。从编译器性能、调试深度、RTOS支持到CI/CD适配,全面解析各自优势与痛点,并探讨VS Code+GCC等开源方案的崛起挑战。(239字)
1287 2
|
数据采集 传感器 人工智能
英伟达Newton与OpenTwins如何重构具身智能“伴随式数采”范式
大规模真实数据的采集成本极为高昂,需要投入大量的人力、物力与时间。在复杂的环境中布置大量传感器和监测设备,其采购、安装、维护和更新费用都十分昂贵。物理世界的场景极其丰富且动态多变,要穷尽所有可能的情况几乎是不可能完成的任务。机器人可能需要在各种气候、地形和社会环境中工作,全面采集这些场景数据在现实中是无法企及的。不同机器人构型之间的差异使得数据难以复用,例如人形机器人和轮式机器人的数据因其运动和交互方式不同,通用性很低。这种缺乏实体间数据共享的局面,加剧了重复劳动和资源浪费,形成了阻碍行业发展的“数据孤岛”。
582 2
|
人工智能 编解码 物联网
设计师集体破防!UNO:字节跳动创新AI图像生成框架,多个参考主体同框生成,位置/材质/光影完美对齐
UNO是字节跳动开发的AI图像生成框架,通过渐进式跨模态对齐和通用旋转位置嵌入技术,解决了多主体场景下的生成一致性问题。该框架支持单主体特征保持与多主体组合生成,在虚拟试穿、产品设计等领域展现强大泛化能力。
1096 4
设计师集体破防!UNO:字节跳动创新AI图像生成框架,多个参考主体同框生成,位置/材质/光影完美对齐
|
人工智能 Linux 文件存储
旧台式电脑的 10 种用途
旧台式电脑的 10 种用途
1471 14
|
人工智能 IDE 测试技术
通义灵码与魔搭Notebook深度集成:在线编码开箱即用,开发效率倍增
通义灵码2.0 AI程序员于2025年1月上线,目前已支持超过百万开发者。该工具的智能编程能力现已与阿里云AI模型开发平台魔搭ModelScope实现技术集成
938 0

热门文章

最新文章