2.通用权限管理模型

简介: 本文介绍通用权限管理模型,重点解析ACL(访问控制列表)和RBAC(基于角色的访问控制)的核心概念与表结构关系。涵盖RBAC0-RBAC3的演进,包括角色继承、职责分离等机制,帮助构建系统化权限设计认知。(238字)

2.通用权限管理模型

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


相关文章
|
4月前
|
JSON 安全 机器人
钉钉通知
本文介绍如何通过Java代码调用钉钉机器人API实现系统告警消息推送。内容涵盖机器人创建、Webhook配置、Postman测试及Java代码实现,并提供限流策略与关键词安全设置等最佳实践,助力实时监控与异常通知。
|
4月前
|
消息中间件 运维 物联网
语音通知
语音通知服务适用于科技公司服务器或物联网设备异常时的告警通知。通过语音电话形式,向处理人播报预设模板内容,支持变量替换实现个性化提醒。需开通语音服务并申请资质、话术、号码及模板,可通过API发起呼叫并查询记录,支持主动查询与消息回执两种结果获取方式,提升运维响应效率。
语音通知
|
4月前
|
安全 Java 应用服务中间件
4.认识SpringSecurity
Spring Security 是 Spring 生态中的安全框架,提供认证、授权及安全防护功能。支持多种认证方式(如表单、OAuth2、JWT等),基于过滤器链实现请求控制,可防御 CSRF 等攻击,保障 Web 应用安全。
|
数据可视化 定位技术
OKR:如何将战略目标拆解成可执行的团队任务
在现代职场中,方向不明和目标模糊常使团队陷入困境。OKR(目标与关键结果)的引入,如同“人生GPS”,不仅让工作更加有序,还帮助团队重拾奋斗的意义。通过明确大方向、拆解目标及搭建透明看板,OKR实现了目标清晰、过程透明、结果可衡量,有效提升了团队的执行力和士气。
758 1
OKR:如何将战略目标拆解成可执行的团队任务
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的绩效管理与考核
【7月更文挑战第25天】 ERP系统中的绩效管理与考核
661 2
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
传感器 机器学习/深度学习 人工智能
智能物流:自动化仓库与配送系统
【10月更文挑战第22天】在21世纪的全球化经济中,物流行业作为连接生产与消费的桥梁,其效率与准确性至关重要。本文深入探讨智能物流的核心技术,如自动化仓储、无人驾驶配送和物联网,以及应用案例和未来发展趋势,揭示自动化仓库与配送系统如何引领物流行业的智能化转型。
1565 0
|
域名解析 缓存 运维
【域名解析DNS专栏】域名解析故障排查手册:常见问题与解决方案
【5月更文挑战第22天】【DNS故障排查手册】解决域名无法解析、速度慢、污染劫持及配置错误问题。检查网络、清理缓存、更换DNS服务器、使用HTTPS、DNSSEC及CDN。示例:使用nslookup查询域名解析。定期检查优化DNS服务器,确保稳定安全。
5660 4
【域名解析DNS专栏】域名解析故障排查手册:常见问题与解决方案
|
C++ 开发者
C++课程设计:图书管理系统【附源码】
图书管理系统,C++ 实现,附全套源码
5794 2
C++课程设计:图书管理系统【附源码】
|
传感器 编解码 程序员
基于USB接口的温度控制器(1)
基于USB接口的温度控制器(1)
570 0

热门文章

最新文章