数据权限设计:从RBAC到ABAC的演变

Posted 金亮研究笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据权限设计:从RBAC到ABAC的演变相关的知识,希望对你有一定的参考价值。




最近一年一直在从事数据项目的开发工作,在项目使用一年多以后,回头总结,发现数据权限成为需要大调整的部分。为了后续工作更好的设计权限,同时也是对自己使用过的海波龙、congonos、sap、biee等数仓的权限设计的思考,今天就梳理一下数据权限从RBAC到ABAC。


名词解释:

RBAC:Role-Based Access Control

ABAC:Attribute-Based Access Control

ACL:Access Control List


以下是正文。


权限设计从ACL和RBAC发展而来,ABAC现在已经成为各组织的标准模式,以确保员工只有在适当的情况下才能获得他们需要的信息。


今天,数据通常被称为数字时代的新石油。企业正在利用数据来提高运营效率、改善客户体验、增加收入和促进增长。此外,无论是银行和金融机构,还是医疗机构和工业制造企业,几乎所有的企业都在收集数据。


这些企业不仅都在收集数据,而且还在加速从各种来源收集数据,导致数据环境越来越复杂。更不用说收集数据所带来的隐私保护、知识产权保护、品牌保护等业务复杂性了。然而,只有当数据不仅能在整个组织内安全地共享和利用,还能在业务合作伙伴和第三方供应商之间安全地共享和利用,数据才是有用的。

例如,当病人因重病入院时,医生需要访问他们的个人信息,以查看是否可以使用社保,并查看过去的病史,然后才能决定做哪些检查和治疗方案。然而,除了医生,医院里的每个人都不应该不受限制地接触到病人的所有信息。


护士可能需要访问一些病例信息,但他们不应访问任何个人身份信息(PII)。X 光医师可能需要访问 X 光结果,但他们不需要访问血液检查结果。安全共享信息不仅对医疗中的疾病患者的治疗很重要,而且在其他行业中也很关键。


举一个制造业的例子,就是物联网数据中心。制造商正在收集物联网设备的数据,以提高生产效率。通过收集工厂现场出现的不合格事件的数据点,制造商可以缓解造过程中的潜在问题,确保有缺陷的产品永远不会到达客户手中。然而,这些都是企业不希望向竞争对手传播的专有信息,只有参与制造过程的特定人员需要这些信息。


为了安全地共享和使用数据,用于治疗病人、改善制造过程或跨行业的各种其他用途,所有组织都需要一个现代数据访问控制模型。在讨论现代访问控制之前,我们有必要先看看访问控制是如何发展到现在这个地步的。


数据权限的发展历史

随着时代的发展,每个组织需要保护的信息量迅速增加。而以前需要保护的数据少时,访问控制模式就简单。


在过去,数据访问控制被可以纳为三个阶段。首先,我们有访问控制列表(ACL),这是一种早期的数字访问控制形式,允许根据用户身份访问数据。最终,组织要求加强对数据的保护,从而产生了一种新的访问控制模式,即基于角色的访问控制(RBAC)。

角色使管理员能够将用户分配给不同的组,并赋予特定的访问权限。角色通常是基于工作职能、位置和头衔,以方便用户访问信息。由于角色的简单性,开发人员在执行内部应用程序访问检查时,可以使用各种编码技术,很容易参考。RBAC的工作效果很好,直到组织和应用的增长,数据量成倍增长,数据、微服务和API的保护需求出现了。


这张图是一个仅针对三个用户的 "角色爆炸 "的例子。下图角色为一家拥有1万名员工的企业。

数据权限设计:从RBAC到ABAC的演变

随着这种指数级的增长,所需的角色数量变得无法管理,导致角色爆炸和职责分离(SoD)失败。最后,一种新的、更动态的访问控制形式被引入,称为基于属性的访问控制(ABAC)。


从RBAC到ABAC,数据访问控制的演变

在数字时代,数据访问控制最好采用ABAC模型。与RBAC模型不同,ABAC可以使用用户属性、动作属性、上下文属性(如时间、设备和位置)、资源属性(如记录的敏感度)等等。事实上,我们可以使用多种属性(数据)来描述用户、资源和上下文,这使得ABAC具有多维度,几乎可以支持任何访问控制场景。

数据权限设计:从RBAC到ABAC的演变

我们可以看一下策略


ABAC提供了一个多维度的访问控制系统----通过使用属性和策略----防止角色爆炸,提高可扩展性,建立关系,消除SoD冲突,并将授权外部化,便于管理控制。


这在一个医疗场景中意味着什么(基于上面的策略),授权决策过程,即用户是否应该被授予访问资源的权限,是一个动态的决策过程,要对整个上下文进行评估。


这个场景中的属性来自于多个来源。有些是来自应用发送的,这些属性通常是用户和环境相关的属性,如用户的标识符、认证强度(保证级别)、资源标识符(病历#123)和操作(查看、编辑等)。这些关键属性会触发策略,然后评估规则。


授权引擎现在收集决策过程完成所需的属性。这些属性值既来自于病历#123本身,也来自于其他来源。这可能包括从终端用户的保险单中收集数据,验证同意书,或者委托或检查保险代理人的合同有效性。在做出授权决定之前,所有这些方面都会被考虑进去。


除了利用属性来简单地拒绝或授予数据访问权限外,ABAC还利用数据掩盖来保护关键信息,同时也允许共享和利用这些信息。它通过掩盖或完全掩盖敏感的数据项目,如医院患者的保险单号或临床试验参与者的姓名等,来实现对敏感数据的遮盖。


数据访问控制已经发展到可以满足组织在无限数据时代面临的数据保护挑战。由ACL和RBAC演变而来,ABAC现在已经成为组织的标准模式,以确保员工只在合适的情况下才能访问他们需要的信息。




往期精选







文章好看点这里

以上是关于数据权限设计:从RBAC到ABAC的演变的主要内容,如果未能解决你的问题,请参考以下文章

权限系统的设计模式 ACL RBAC ABAC

ACLRBAC和ABAC:权限系统设计模式

权限系统设计详解

如何从0到1建立后台权限管理系统

RBAC从入门到精通

基于casbin的ABAC/RBAC权限实践