[AuthZ] RBAC 与 ABAC

sddtc 于 2019-09-10 发布

ABAC 还是 RBAC ?

Role Based Access Control 是从 1970 年发起的,被行业很好的接受并成为业内标准。然而伴随着 Attribute Based Access Control 的到来,许多公司将注意力转移到 ABAC 上来,因为他们体会到了这种粒度更加细致的权限分配所带来的优势。

在深入了解 ABAC 之前,让我们先分别了解一下他们。

RBAC

基于角色的权限分配:将用户分组为各种角色,然后分配权限。
典型的权限是对一种资源的行为控制: 例如,创建文档、更新用户信息。任何人一旦被分配到一种角色,那么他就拥有该角色的一系列权限。

因此, RBAC 是一种基于角色的权限系统,由于其简单的理念被应用于超多的系统。然而,当系统不断成长进化,管理员需要更细粒度的权限时,这时问题就产生了: 更细的粒度的权限会衍生出更多的角色(角色爆炸,与类爆炸类似)。 另外, 随着新角色的创建,势必要适应每个对应的应用场景,系统的安全性可能变得难以管理甚至更难以测试。 这将会在系统中留下未知的漏洞。

ABAC

ABAC 就是基于 RBAC 的痛点进化出的一种解决方案: 允许您根据系统可访问的任何属性强制执行安全决策,而不仅仅是用户的角色。 这可以是用户(领域)的属性、 用户正在执行的操作、 他们尝试操作或检索的资源的值、甚至是环境变量。 这几个方面的组合允许设置与您期望的一样细粒度的策略。

ABAC 通过以下主要组件实现了这种灵活性:

看起来 ABAC KO RBAC,你觉得呢 ?

ABAC 听起来像是一种更好的方法(因为强大,因为灵活,因为粒度更加细致!), 但我们依然有正当理由认为这种方法可能不适合所有需求,或者仅仅是矫枉过正。

所以,做适合自己的选择吧! 嗷呜~

本文译自:ABAC or RBAC