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的合体,如下图:

相关文章
|
搜索推荐 JavaScript 前端开发
77 网站点击流数据分析案例(原理及意义)
77 网站点击流数据分析案例(原理及意义)
1769 0
|
Rust Kubernetes 负载均衡
Sentinel 2.0:流量治理全面升级
Sentinel 诞生于 2012 年,诞生之初主要为支撑双 11 的限流降级等稳定性场景,后续逐渐在阿里集团内部迅速发展成为基础模块,覆盖了所有流量稳定性的核心场景。
Sentinel 2.0:流量治理全面升级
|
10月前
|
存储 安全 小程序
认识OAuth2.0
OAuth2.0是一种开放授权标准,允许第三方应用在用户授权下安全访问资源,无需获取用户账号密码。其核心是通过令牌(token)实现权限控制,广泛用于第三方登录、服务间资源调用等场景,支持授权码、简化、密码和客户端四种模式,兼顾安全性与灵活性。
223 0
|
3月前
|
存储 人工智能 运维
跨智能体协同新方案:OpenClaw 与 Hermes Agent 记忆互通、一键迁移完整实操教程
随着AI智能体技术快速迭代,OpenClaw、Hermes Agent两款主流开源智能体已成为开发者搭建自动化工作流、工程开发、业务运维的核心工具。OpenClaw擅长IDE工程开发、代码重构、本地项目迭代,适配研发场景精细化作业;Hermes Agent主打跨平台调度、自主进化、长效任务执行,适合云端自动化运维、多场景事务处理。多数开发者会同时部署两款智能体,兼顾本地开发与云端调度优势,但长期以来,两款智能体存在**记忆隔离、数据孤岛、会话独立、经验不互通**的核心痛点。
339 1
跨智能体协同新方案:OpenClaw 与 Hermes Agent 记忆互通、一键迁移完整实操教程
|
10月前
|
数据采集 领域建模 数据库
领域模型图(数据架构/ER图)
本文介绍通过四色原型法构建领域模型并生成ER图的过程。运用MI(时标)、PPT(参与方-地点-物品)、Role(角色)和DESC(描述)四种原型,逐步抽象风控系统的业务流程,提炼实体与关系,最终形成数据架构中的ER图,为数据库设计提供基础支撑。(238字)
|
10月前
|
Java Shell 测试技术
Jmeter快速入门
本文介绍JMeter的安装与快速入门,包括下载、解压、运行步骤,以及中文语言设置和基本使用方法,帮助用户快速上手性能测试工具JMeter。
|
10月前
|
canal 缓存 关系型数据库
微服务阶段原理篇
本文介绍了电商系统中ES索引与MySQL数据同步的解决方案,重点阐述了基于Canal和MQ的异步同步机制。通过解析MySQL的binlog日志,Canal实现数据变更的实时捕获,并结合RabbitMQ保证消息顺序性,最终实现Elasticsearch索引的高效更新。该方案解耦了业务逻辑与索引维护,提升了系统性能与一致性。
 微服务阶段原理篇
|
8月前
|
前端开发 数据挖掘 应用服务中间件
阿里云服务器2核2G配置可选实例规格,收费标准与活动价格和选购参考
阿里云提供多种2核2G配置的服务器实例规格,包括经济型e、密集计算型ic5、通用算力型u1和u2a等,适用于不同场景,如Web应用、开发测试、轻量级应用及企业级应用,价格因实例规格和付费方式(按量付费或包年包月)而异。2026年,用户可以以38元/年的抢购价购买轻量应用服务器,经济型e实例99元/年且续费同价,通用算力型u2a实例则提供更稳定的企业级性能,用户可根据需求和预算选择合适的实例规格。
|
10月前
|
XML 算法 安全
详解RAG五种分块策略,技术原理、优劣对比与场景选型之道
RAG通过检索与生成结合,提升大模型在企业场景的准确性与可控性。分块策略是其核心,直接影响检索效果与生成质量。本文系统解析五种主流分块方法:固定大小、语义、递归、基于结构及LLM分块,对比其优缺点与适用场景,并提出组合优化建议,助力构建高效、可信的RAG系统。
436 0
|
10月前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度的部署与使用。包含源码获取、数据库导入、服务端配置启动、客户端注册及执行器配置。详细说明各数据表作用、路由策略类型,并演示任务创建、参数设置与执行日志查看,助你快速上手XXL-JOB。

热门文章

最新文章