通用权限管理模型

简介: 本文介绍了ACL和RBAC两种常见权限模型。ACL通过直接为用户或角色分配对象权限实现控制,简单直观;RBAC则基于角色进行权限管理,通过用户-角色-权限-资源的关联,提升授权灵活性与可维护性。还简要提及DAC、MAC、ABAC等模型,并详解RBAC的四类扩展:RBAC0(基础)、RBAC1(角色继承)、RBAC2(职责分离)、RBAC3(综合)。

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

相关文章
|
弹性计算 数据可视化 Ubuntu
基于阿里云ECS搭建FISCO-BCOS区块链
用ubuntu操作系统下的ECS搭建FISCO-BCOS节点,开发区块链网络
基于阿里云ECS搭建FISCO-BCOS区块链
|
3月前
|
Linux 数据安全/隐私保护 虚拟化
虚拟机安装(CentOS7)
准备CentOS7镜像及VMware Workstation工具,可使用提供的百度云链接下载。通过VMware创建虚拟机,参考指定教程完成安装,默认用户名为root,密码由用户自设。确保电脑满足运行需求。(236字符)
|
3月前
|
Web App开发 存储 人工智能
AI 英语学习智能体的开发
AI英语学习智能体已进化为具备感知、规划、记忆与执行能力的自主教学系统。本文涵盖核心架构、技术栈选型、开发模块与流程,指导从MVP到企业级落地,建议聚焦细分场景切入,如雅思口语或外贸陪练,实现高效低成本开发。(238字)
|
2月前
|
人工智能 搜索推荐 API
FlashLabs 正式发布 Chroma 1.0 - 全球首个开源、端到端、实时语音到语音 AI 模型 → 支持个性化语音克隆
FlashLabs 发布全球首个开源、端到端、实时语音到语音 AI 模型 Chroma 1.0,支持低延迟(TTFT \x26lt; 150ms)、高保真语音克隆与强对话能力,旨在成为 OpenAI Realtime API 的开源替代方案。
368 3
|
3月前
|
消息中间件 人工智能 NoSQL
RocketMQ:A2A协议实现多智能体优化
Apache RocketMQ推出LiteTopic轻量级通信模型,结合A2A协议与AgentScope框架,为多智能体系统提供高可靠、低延迟的异步通信方案,支持会话持久化、断点续传与动态协同,助力AI应用构建稳定高效的协作基座。
 RocketMQ:A2A协议实现多智能体优化
|
2月前
|
Linux iOS开发 MacOS
Python环境安装全攻略(Windows、macOS、Linux一步到位教程)
本文为Python初学者提供Windows、macOS和Linux三大系统下的环境安装详细教程。涵盖下载、安装、配置及验证全过程,强调关键步骤如添加PATH路径、使用命令行检测版本等,确保零基础用户也能顺利完成Python环境搭建,快速进入编程学习。
|
3月前
|
存储 缓存 JavaScript
Vue3 Composition API深度解析:原理、用法与迁移实践
本文深度解析Vue3 Composition API的核心优势、常用API、底层原理与迁移实践,对比Options API的局限性,详解ref、reactive、watch、生命周期钩子等用法,剖析基于Proxy的响应式机制,并提供渐进式迁移策略,助开发者高效掌握Vue3开发范式。
358 0
|
3月前
|
人工智能 自然语言处理 安全
适合零售行业的智能客服系统推荐(2025年12月更新)
2025年,零售智能客服已成服务升级核心。瓴羊Quick Service、合力亿捷、环信、智齿科技等系统凭借AI技术,实现多渠道协同、高并发响应与业务系统集成,助力企业降本增效,提升客户体验。
|
6月前
|
机器学习/深度学习 算法 物联网
面向能效和低延迟的语音控制智能家居:离线语音识别与物联网集成方案——论文阅读
本文提出一种面向能效与低延迟的离线语音控制智能家居方案,通过将关键词识别(KWS)集成至终端设备,结合去中心化Mesh网络与CoAP协议,实现本地化语音处理。相较云端方案,系统能耗降低98%,延迟减少75%以上,显著提升响应速度与能源效率,为绿色智能家居提供可行路径。(236字)
537 17
面向能效和低延迟的语音控制智能家居:离线语音识别与物联网集成方案——论文阅读
豆瓣贴吧顶贴脚本,24小时多账号回复评论插件,贴吧自动顶贴软件【autojs】
该实现包含三个核心模块,主模块实现自动顶贴流程,配置模块支持外部配置加载,异常处理模块保障

热门文章

最新文章