⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 juejin.cn/post/7412933937670946850 「树獭叔叔」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

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

1. ACL 访问控制列表

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

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

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

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

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

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

ABAC模型的核心概念包括:

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

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

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模型通过将用户与角色相互关联,并通过角色与权限相互关联,实现了对系统资源的更加精细化的访问控制和管理。

文章目录
  1. 1. 1. ACL 访问控制列表
  2. 2. 2. ABAC 基于属性的权限控制模型
  3. 3. 3. RBAC 按角色进行权限管理的模型