专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  工作炒股两不误,这款IDEA插件,各位股神值 ... ·  22 小时前  
Java编程精选  ·  网友感叹:事业编一年6万,干40年退休总共挣 ... ·  4 天前  
Java编程精选  ·  别再手动拼接 SQL 了,MyBatis ... ·  3 天前  
芋道源码  ·  效率爆表:30款 IDEA ... ·  6 天前  
51好读  ›  专栏  ›  芋道源码

详解三大权限模型

芋道源码  · 公众号  · Java  · 2024-10-25 09:30

正文

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/post/
7412933937670946850


权限控制是软件系统中常见的模块之一,权限模型是信息安全管理中用于定义和控制不同用户对系统资源访问权限的方法。每种模型有其独特的方式来指定谁可以访问什么资源、在什么条件下可以访问以及可以执行哪些操作。本文对三种最常见的权限模型进行介绍。

1. ACL 访问控制列表

ACL是一种基于对象和主体的权限控制模型,它通过为每个对象定义一个访问列表来进行权限管理,根据对特定对象的访问权限,来控制主体对该对象的访问。

ACL是最细粒度的权限控制方式,它直接将每个对象(如文件、目录或网络资源)的权限分配给具体的用户或者用户组。

ACL很好理解,对于所有的资源以及所有的用户,维护一个一一对应的权限表即可。但是,随着用户或者资源变得越来越多,权限约束会逐渐膨胀,难以维护。


基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

2. ABAC 基于属性的权限控制模型

ABAC是一种基于属性的权限控制模型,它通过定义规则来根据主体和对象的属性来控制访问权限。这种模型可以更灵活地控制访问权限,根据更多的因素来做出访问决策。

在ABAC模型中,访问决策是基于用户的属性,如角色、部门、地理位置、所属组织等,以及资源的属性,如文件类型、所属部门等。此外,环境的属性,如时间、地点等,也可以用于决定访问权限。

ABAC模型的核心概念包括:

  1. 属性:ABAC模型以属性为基础来描述用户、资源和环境。属性通常包括标识符、类型和值。例如,一个用户的属性可以是他的部门或职位,而一个资源的属性可能是它所属的项目或类型。
  2. 策略:ABAC模型中的访问控制策略是根据属性来制定的。策略可以使用逻辑表达式来组合多个属性,以确定访问权限。例如,一个策略可以规定只有部门为“销售部”且角色为“经理”的用户才能访问销售报表。
  3. 访问控制决策:ABAC模型使用属性来做决策,根据用户的属性、资源的属性和环境的属性来决定用户是否有权访问某个资源。访问决策可以灵活地根据不同的属性组合来调整访问权限。

ABAC模型的优点包括灵活性和可扩展性,它允许组织根据具体需求和情况来定义访问规则,适应复杂的访问控制需求。ABAC模型还可以与现有的用户目录和身份管理系统集成,并且可以与其他访问控制模型如RBAC(基于角色的访问控制)和DAC(自主访问控制)配合使用,以提供更全面的访问控制保护。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

3. RBAC 按角色进行权限管理的模型

RBAC是一种按角色进行权限管理的模型,它将用户分配给特定角色,然后为每个角色分配权限。这样可以简化权限管理,提高安全性和可维护性。

RBAC模型中主要包括以下几个要素:

  1. 角色(Role) :角色是权限管理的核心,它是一组权限的集合,表示了一类用户所拥有的访问权限。角色应该根据组织的职能和权限划分得当,以便有效管理权限和精细控制用户的访问。
  2. 用户(User) :系统中的实际用户,通过将用户分配到不同的角色来获得相应的权限。
  3. 权限(Permission) :权限是指对系统资源进行操作的许可,可以是读取、写入、修改、删除等不同操作。
  4. 用户-角色关联关系(User-Role Assignment) :将用户分配到相应的角色,以确定用户的权限范围。
  5. 角色-权限关联关系(Role-Permission Assignment) :确定不同角色拥有的具体权限。

RBAC模型的实现通常包括三个层次的访问控制:

  1. 用户级别的访问控制:用户根据其所属的角色具有相应的权限,从而控制用户对系统资源的访问。
  2. 角色级别的访问控制:对特定角色的权限进行管理和控制,以确保不同角色拥有正确的权限。
  3. 系统级别的访问控制:对整个系统资源进行访问控制,防止未经授权的访问。

RBAC模型具有以下优点:

  1. 灵活性:可以根据实际需要灵活划分和管理角色,并快速调整权限。
  2. 简化管理:对用户、角色和权限的管理更加简单直观,易于维护和更新。
  3. 安全性:RBAC模型可以减少了权限分配和审计工作量,有助于减少内部和外部的安全风险。

总的来说,RBAC模型通过将用户与角色相互关联,并通过角色与权限相互关联,实现了对系统资源的更加精细化的访问控制和管理。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)