免费注册,打造高效身份管理
博客/开发者/技术小百科:关于 ABAC 权限模型你需要知道的
技术小百科:关于 ABAC 权限模型你需要知道的
Authing 官方2022.12.30阅读 2941

所有产品的设计都绕不开权限,一个或大或小的产品体系,总会存在各式各样不同的用户,而系统能开放给他们使用的权限点皆有所不同,在不同的场景下,应对不同权限点的开放存在不同策略。我们在这篇文章技术小百科:关于 RBAC 权限模型你需要知道的中详细为大家介绍了基于角色的权限模型 RBAC ,今天为大家介绍另一个重要的权限模型ABAC。

ABAC(Attribute Base Access Control)是基于属性的权限控制,不同于常见的将用户通过某种方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。 属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性,所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求。

ABAC与 RBAC的区别是什么

RBAC(Role-Based Access Control)和ABAC(Attribute-Based Access Control)都是常见的权限模型,它们之间有以下区别:

  1. 基础原理不同: RBAC是基于角色的访问控制,根据用户的角色来分配权限;而ABAC是基于属性的访问控制,根据用户的属性来分配权限。
  2. 应用场景不同: RBAC更适用于大型组织的权限管理,可以简化权限管理流程;而ABAC更适用于动态权限分配的场景,可以灵活地控制用户的访问权限。
  3. 实现方式不同: RBAC的实现方式比较简单,常见的实现方式有基于角色的访问控制(RBAC0)和基于角色的访问控制(RBAC1)两种;而ABAC的实现方式比较复杂,常见的实现方式有基于属性的访问控制(ABAC0)和基于属性的访问控制(ABAC1)两种。

对于哪种权限模型更好,这取决于具体的应用场景和需求。RBAC模型更适用于大型组织的权限管理,可以简化权限管理流程;而ABAC模型更适用于动态权限分配的场景,可以灵活地控制用户的访问权限。

在选择权限模型时,应该根据具体的应用场景和需求来进行选择。如果需要简化权限管理流程,则可以使用RBAC模型;如果需要灵活地控制用户的访问权限,则可以使用ABAC模型

ABAC有哪些优点

  1. 颗粒度小: 由于其基于属性组合确定权限的逻辑设计,ABAC 理论上能够实现非常小颗粒度的权限控制,同时也几乎能够满足所有需求;
  2. 灵活性高: ABAC 可以使用多个属性来决定访问控制,非常适用于公司成员(角色)快速变化的时候,此时并不需要修改角色信息,只要修改一下对应账户的属性就能非常便捷地适配新的权限。这比基于角色的访问控制更加灵活。
  3. 易于实施: ABAC 可以使用现有的属性和规则来进行访问控制,这使得实施较为容易。
  4. 易于维护: ABAC 可以通过添加或删除属性来调整访问控制策略,这使得维护较为容易。
  5. 支持多种访问控制策略: ABAC 可以使用多种规则(如“或”、“且”等)来决定访问控制,这使得它能够支持多种访问控制策略。
  6. 支持动态访问控制: ABAC 可以根据用户的动态属性(如位置、时间等)来决定访问控制,这使得它能够支持动态访问控制。

ABAC有哪些缺点

  1. 复杂性高: 因为 ABAC 可以使用多个属性来决定访问控制,所以它可能会比其他访问控制模型更加复杂。
  2. 安全和统计问题: ABAC 是灵活的,但同时也是复杂的。我们很难说一个账户永远不能访问某项资源,除非我们了解资源相关的所有策略,因此在完整搭建起了复杂的 ABAC 权限系统后要确定一个账户是否完全没有某项资源的权限是比较困难的。同时,如果 ABAC 策略被恶意更改,可能会导致安全漏洞。
  3. 性能问题: ABAC 的一系列优点都是建立在占用更多性能的前提下,而有些时候系统的响应速度和稳定性是相当重要的,由于 ABAC 需要在每次访问时进行多次属性比较,所以它可能会对系统性能产生负面影响。
  4. 实施较为困难: ABAC 需要系统管理员手动定义属性和规则,这可能需要较多的工作量。当系统中的属性和规则发生变化时,系统管理员需要手动更新 ABAC 策略,这可能会很困难。

ABAC 权限管理模型可以满足许多企业的权限管理需求,不同的权限模型适用于不同的场景,应根据实际需求选择合适的权限模型。

Authing 提供快速集成 ABAC 权限模型至你的应用系统中的方案,点击企业服务解决方案左即可了解,我们的身份专家也能为您提供最可靠完备的解决方案。

文章作者

avatar

Authing 官方

0

文章总数

authing blog rqcode
关注 Authing 公众号
随时随地发现更多内容
authing blog rqcode
添加 Authing 小助手
加入 Authing 开发者大家庭
身份顾问在线解答
当前在线
如何打造完整的身份体系?
立即沟通
authing
添加企业微信,领取行业资料
authing
authing
下载 Authing 令牌,体验快速登录认证!
免费使用
在线咨询
电话咨询