2.通用权限管理模型

简介: 本文介绍了ACL和RBAC两种常见权限模型。ACL通过直接为用户或角色授权实现控制,简单直观;RBAC则基于角色分配权限,解耦用户与权限关系,更易维护。RBAC还细分为RBAC0至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的合体,如下图:

相关文章
|
4月前
|
NoSQL Linux 网络安全
Redis集群部署指南
本章基于CentOS7讲解Redis集群搭建,涵盖单机安装、主从复制、哨兵集群及分片集群的部署与配置,详细演示Redis高可用与分布式架构实践全过程。
|
4月前
|
SQL 运维 分布式计算
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,助力用户全面掌握SQL使用情况,提升日志分析效率与治理能力。
 如何做好SQL质量监控
|
4月前
|
JSON 自然语言处理 算法
DSL语法、搜索结果处理
本文详细介绍了Elasticsearch的DSL查询与RestClient实现,涵盖全文检索、精确查询、地理坐标查询及复合查询,并结合黑马旅游案例实现搜索、分页、过滤与竞价排名功能。
 DSL语法、搜索结果处理
|
4月前
|
运维 Devops 开发工具
生产环境缺陷管理
git-poison基于go-git实现,通过“投毒-解毒”机制在多分支环境中精准追踪与管理bug,自动化卡点发布流程,避免人为疏漏导致的重复故障,提升研发协同效率与系统稳定性。
 生产环境缺陷管理
|
4月前
|
消息中间件 负载均衡 Linux
RabbitMQ部署指南
本文介绍了RabbitMQ在CentOS7上基于Docker的单机与集群部署方案,涵盖镜像安装、DelayExchange插件配置、普通集群与镜像模式搭建,并详细演示了仲裁队列的使用及集群扩容方法,实现高可用消息队列服务。
|
4月前
|
Nacos 负载均衡 存储
Nacos注册中心
本文介绍Nacos的安装部署、整合注册中心、服务分级模型、负载均衡策略、权重控制、环境隔离及实例类型,涵盖从入门到进阶的核心功能实践,助力微服务高效治理。
 Nacos注册中心
|
4月前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队中多环境自动化发布流程,涵盖DEV、TEST、PRE、PROD各环境职责,结合CI/CD平台实现代码部署与日志追踪,提升发布效率与系统稳定性。
生产环境发布管理
|
4月前
|
安全 Java 数据安全/隐私保护
2.OAuth2.0实战案例
本文介绍基于Spring Boot与Spring Cloud构建OAuth2授权服务的完整流程,涵盖父工程搭建、资源服务器与授权服务器配置、四种授权模式(授权码、简化、密码、客户端)的实现与测试,结合Spring Security实现安全认证,完成分布式系统下的统一权限管理。
 2.OAuth2.0实战案例
|
4月前
|
前端开发 程序员
常见注解及使用说明
本文介绍SpringMVC中@RequestMapping注解的作用及原理,通过注解将HTTP请求映射到控制器方法,实现前后端接口路径对应,并简述@GetMapping等派生注解的封装关系,帮助理解接口定义机制。
 常见注解及使用说明
|
4月前
|
敏捷开发 Dubbo Java
需求开发人日评估
本文介绍敏捷开发中工时评估的关键方法,以“人日”为单位,针对开发、自测、联调、测试及发布各阶段提供参考周期,并列举常见需求如Excel导入导出、增删改查、跨服务调用等的典型人日估算,助力团队科学规划项目进度。
需求开发人日评估

热门文章

最新文章