权限模型概述

权限模型概述

目前业界主流4种权限模型:

  • ACL:访问控制列表
  • RBAC:基于角色的访问控制
  • ABAC:基于属性的访问控制
  • PBAC:基于策略的访问控制

访问控制列表(ACL)

ACL

  • ACL 是最早也是最基本的一种访问控制机制,它是用来描述用户权限之间关系的数据列表。它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行 CRUD 等操作。当试图访问这项资源时,会首先检查这个列表中是否有关于当前用户的访问权限,从而确定当前用户可否执行相应的操作。
  • 由于 ACL 的简单性,使得它几乎不需要任何基础设施就可以完成访问控制。但同时它的缺点也是很明显的,由于需要维护大量的访问权限列表,ACL在性能上有明显的缺陷。另外,对于拥有大量用户与众多资源的应用,管理访问控制列表本身就变成非常繁重的工作。

基于角色的访问控制(RBAC)

rbac

  • 最开始的 ACL 定义中,用户直接和权限挂钩,数据存储的是用户与权限的关联关系。如果两个用户的权限是一样的,那么就需要分别存储这两个用户与权限的关联关系,也是上面所提到的 ACL 的缺陷。为了解决这些问题,便有了对 ACL 设计的改进,相同权限的用户放到同一个分组里,分组与权限挂钩,不再是用户直接与权限挂钩。以及后来出现的 RBAC (基于角色的访问控制),角色与分组也是差不多的概念,角色直接与权限挂钩,用户再与角色进行关联。
  • RBAC 是目前使用最普遍的权限控制模型。当某些用户具备相同的权限的时候,只需要为这些用户建一个角色,把相应的功能关联到这个角色上,生成角色的权限列表。当有新的用户需要相同权限的时候,把用户关联到这个角色上即可。而当用检查或校验用户的操作权限的时候,查询用户所属角色的权限列表即可。

基于属性的访问控制(ABAC)

abac

  • RBAC 虽然是目前最普遍的权限控制模型,缺点在于无法做到对资源细粒度地授权(都是授权某一类资源而不是授权某一个具体的资源);
  • 不同于常见的将用户通过某种方式关联到权限的方式,ABAC 则是通过动态计算一个或一组属性是否满足某种条件来进行授权判断的(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性(如一篇文章,又称资源属性),所以理论上能够实现非常灵活的权限控制。

基于策略的访问控制(PBAC)

  • 当采用基于属性的访问控制方法时,随着属性数量的不断增加,定义与单个用户相关联的每个属性的复杂性也随之增加,从而增加了管理整个企业的访问管理的难度。要使用 ABAC 创建和编辑属性,您需要精通 XACML(一种极其复杂的过时的语言),这使得开发过程非常耗时。
  • PBAC 是一种将角色和属性与逻辑结合以创建灵活的动态控制策略的方法。与 ABAC 一样,它使用许多属性来确定访问权限,因此它还提供了“细粒度”访问控制。PBAC旨在支持各种方式的访问设备,通常被认为是最灵活的授权解决方案。

权限模型概述
http://mybestcheng.site/2020/12/25/authority/authority-model/
作者
mybestcheng
发布于
2020年12月25日
许可协议