通用权限管理模型

简介: /

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


相关文章
关于Dev 控件里 gridcontrol 的gridview 显示序号和checkbox
关于Dev 控件里 gridcontrol 的gridview 显示序号和checkbox
|
5月前
|
存储 缓存 安全
Go map 底层原理
虽然大家天天都在用 `map`,但很多人对它的理解只停在“查得快”“底层是哈希表”“桶里有 8 个槽位”这几句。或许跟别人吹牛的时候,还有几分用处;但真到线上排查延迟抖动、锁竞争、内存占用、热点键冲突,这点认识往往是不够的。
399 1
|
存储 SQL 分布式计算
数据湖 VS 数据仓库之争?阿里提出大数据架构新概念:湖仓一体
随着近几年数据湖概念的兴起,业界对于数据仓库和数据湖的对比甚至争论就一直不断。有人说数据湖是下一代大数据平台,各大云厂商也在纷纷的提出自己的数据湖解决方案,一些云数仓产品也增加了和数据湖联动的特性。但是数据仓库和数据湖的区别到底是什么,是技术路线之争?是数据管理方式之争?二者是水火不容还是其实可以和谐共存,甚至互为补充?本文作者来自阿里巴巴计算平台部门,深度参与阿里巴巴大数据/数据中台领域建设,将从历史的角度对数据湖和数据仓库的来龙去脉进行深入剖析,来阐述两者融合演进的新方向——湖仓一体,并就基于阿里云MaxCompute/EMR DataLake的湖仓一体方案做一介绍。
30022 2
数据湖 VS 数据仓库之争?阿里提出大数据架构新概念:湖仓一体
|
9月前
|
JavaScript 前端开发 算法
Vue 与 React 深度对比:底层原理、开发体验与实际性能
本文深入对比Vue 3/Vue 4与React 19的核心原理、性能差异与开发体验。Vue基于Proxy响应式与编译优化,追求自动高效;React依托虚拟DOM、Fiber架构与并发渲染,强调灵活可控。两者在更新粒度、语法范式、学习曲线和生态上各有优劣。Vue适合快速开发与中小型项目,React更适配复杂交互与高定制需求。未来Vue趋向信号机制与Vapor Mode,React发力服务端组件与自动记忆化。选择应基于团队能力、项目场景与维护成本,追求技术适配性而非先进性。
1378 7
|
2月前
|
人工智能 自然语言处理 监控
阿里云百炼大模型平台全指南:定位、模型、场景与计费详解
2026年,阿里云百炼(Model Studio)已从单一模型服务平台,升级为集模型调用、微调、智能体开发、知识库构建、应用部署于一体的全链路MaaS(Model as a Service)平台。它聚合了150+款优质大模型,提供零代码/低代码与高代码双模式开发能力,搭配灵活的计费体系,成为个人开发者、中小企业与大型企业落地AI应用的首选平台。本文将从平台定位、模型矩阵、核心能力、落地场景、计费方案与选型建议等维度,全面解读2026年阿里云百炼大模型平台。
811 0
|
3月前
|
人工智能 开发框架 监控
AI智能体的开发流程
开发成熟AI智能体是系统工程,需融合自主规划、记忆管理与工具调用。本文详解企业级五阶段标准流程:需求定义、架构设计(LLM/记忆/规划/工具)、核心开发(框架/Prompt/函数调用)、评测优化(黄金数据集/轨迹分析/安全护栏)及LLMOps部署运维。(239字)
|
7月前
|
人工智能 弹性计算 安全
2026阿里云无影云电脑收费价格及配置选择指南,新手上云百科
阿里云无影云电脑(EDS)提供云端高性能计算,支持多端接入,弹性配置,数据安全。2026年推出个人版与企业版双轨体系,按需付费、灵活试用,适用于办公、设计、AI、游戏等场景,助力用户轻松拥有“随身云PC”。
2612 10
|
8月前
|
Kubernetes Cloud Native 开发者
云原生技术深度解析:构建数字化时代的操作系统
云原生是一种构建和运行可扩展应用的方法论,以容器、微服务、动态编排和服务网格为核心,推动软件交付的自动化与弹性。它历经虚拟化、IaaS到应用现代化的演进,依托Kubernetes、GitOps等技术实现高效运维,助力企业提速创新、降低成本,成为数字化转型的核心引擎。
|
8月前
|
数据安全/隐私保护
RBAC权限模型
RBAC(基于角色的访问控制)通过角色管理权限,实现用户与权限的间接关联,提升系统安全性与管理效率。其三大原则:最小权限、职责分离、数据抽象,使权限分配更清晰、灵活,广泛应用于现代权限管理系统中。
|
12月前
|
存储 消息中间件 分布式计算
zookeeper
ZooKeeper 是专为分布式系统设计的协调服务,提供一致性、可靠性与有序性支持,常用于服务注册、配置管理、分布式锁等场景。其核心基于 ZAB 协议保障数据同步与集群一致性,采用树形结构存储数据,并通过 Watcher 机制实现事件通知。架构上包含 Leader、Follower 和 Observer 三种角色,兼顾写一致性与读扩展性,是分布式系统的重要基础组件。
515 0