通用权限管理模型

简介: 本文介绍通用权限管理模型,重点解析ACL(访问控制列表)和RBAC(基于角色的访问控制)的核心思想与模型结构。ACL直接授权用户或角色操作对象,简单灵活;RBAC通过“用户-角色-权限-资源”模式实现权限分离,提升管理效率。进一步讲解RBAC0、RBAC1(含角色继承)、RBAC2(含职责分离)三个层级,帮助构建系统化权限认知体系。

2.通用权限管理模型

笔者的学习认知中,对于一个新框架往往都会先去学习一下底层模型(即表结构及关系),因此这里我们就来了解一下通用的权限管理有哪些,各自的模型关系大概是什么样子,好对我们接下来的学习有个全局认知。
除了本节讲解的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的技术基础之上建立的,引入了静态职责分离和动态职责分离。

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

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

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


相关文章
|
JavaScript 前端开发 Java
提升Vue.js技能!不得不看的三本Vue.js 3书籍
Vue.js是流行的 Web 前端框架,目前最新版本是Vue.js 3。本节介绍三本有关Vue.js 3的书籍。
513 0
|
17天前
|
JavaScript 数据可视化 Java
开源医院随访系统:基于Spring Boot、Vue前后端分离的源码解决方案
医院随访系统是连接院内HIS/EMR的智能平台,支持电话、短信、微信等多渠道随访,涵盖关怀与管理两类场景。采用Java+Spring Boot+Vue技术栈,具备模板灵活配置、智能提醒、满意度闭环、数据报表等功能,延伸医疗服务链,提升康复质量与管理决策水平。
105 0
|
1月前
|
JavaScript 数据可视化 前端开发
从零开始:使用 Vue-ECharts 实现数据可视化图表功能
本文介绍如何使用 Vue-ECharts 在 Vue 项目中快速开发图表,重点讲解安装、引入方式及分组柱状图的实现,帮助开发者高效完成数据可视化。
290 0
|
监控 算法 Java
Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidstat文件                                           procpidtasktidstat文件 系统中有关进程cpu使用率的常用命令 ...
10264 40
|
3月前
|
SQL 自然语言处理 BI
另辟蹊径的 Text2SQL,不用大模型也能搞 chatBI
润乾报表NLQ组件摒弃大模型路线,采用规则词典与领域知识库,将自然语言精准转化为MQL查询语言,实现稳定、低成本、可维护的ChatBI。其核心在于结构化语义解析,避免“幻觉”,支持复杂多表关联与计算,适用于企业级BI场景,是可靠高效的自然语言查询解决方案。
|
数据采集 存储 SQL
数据中台全景架构及模块解析!一文入门中台架构师!
数据中台全景架构及模块解析!包括数据采集、数据存储、数据开发处理、数据资产管理、数据质量和安全、数据服务。一文入门中台架构师!
|
5月前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
1232 1
|
5月前
|
IDE Linux 开发工具
IntelliJ IDEA最新版安装下载教程及安装教程(附安装包)
本文介绍IDEA的下载与安装教程,包含获取下载地址、安装步骤及激活方法。需注意安装路径为英文目录,运行激活脚本时需管理员权限。按指引操作即可完成激活并使用。
3257 0
|
8月前
|
存储 算法 Java
JvM JDK JRE 三者区别与联系详解
本文深入解析了Java编程中的三个核心概念:JVM(Java虚拟机)、JDK(Java开发工具包)和JRE(Java运行环境)。JVM是执行Java字节码的虚拟计算机,实现“一次编译,到处运行”;JDK包含JRE及开发工具,用于编写和调试Java程序;JRE负责运行已编译的Java程序。文章详细阐述了它们的功能、组成及应用场景,并通过实例说明其在实际开发中的作用,帮助开发者理解三者联系与区别,提升开发效率与问题解决能力。适合Java初学者及进阶开发者学习参考。
1356 3
|
10月前
|
人工智能 自然语言处理 运维
Qwen3 全尺寸模型支持通过阿里云PAI-ModelGallery 一键部署
Qwen3 是 Qwen 系列最新一代的大语言模型,提供了一系列密集(Dense)和混合专家(MOE)模型。目前,PAI 已经支持 Qwen3 全系列模型一键部署,用户可以通过 PAI-Model Gallery 快速开箱!