RBAC与ABAC在细粒度授权上的应用

发布者:派拉软件
发布于:2021-10-26 16:18

传统互联网时代,统一身份和访问控制是助力企业安全从粗粒度访问控制升级到多层级、细粒度动态访问控的关键组件。目前广泛采用的两种权限模型,基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC),本文我们将对这两种模型进行深入讨论。


01

RBAC与ABAC概念定义


RBAC和ABAC是两种不同的访问权限控制模式。RBAC是Role-Based Access Control,基于角色的访问控制,引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Privilege(权限,表示对Resource的一个操作,即Operation+Resource) ,更符合企业的用户、组织、数据和应用特征。RBAC的关注点在于Role与user,Role与privilege的关系;ABAC是基于属性的访问控制,其基本思想是讲访问控制的主体、客体、环境、行为的相关属性作为策略依据,对系统内部实体安全进行统一建模,通过属性关系的定义来描述授权和访问控制约束,进而支持细粒度和大规模的访问控制。


02

RBAC模型场景应用


RBAC通常应用于组织、部门、群组、角色、岗位等不同授权方式,通常包括RBAC0、RBAC1、RBAC2和RBAC3四种模型。

图片


RBAC0:权限最基础也是最核心的模型, 它包括用户 / 角色 / 权限, 其中用户和角色是多对多的关系, 角色和权限也是多对多的关系。


RBAC1: 此模型引入了角色继承 (Hierarchical Role) 概念,即角色具有上下级的关系,角色间的继承关系可分为一般继承关系和受限继承关系。


RBAC2: 基于核心模型的基础上,进行了角色的约束控制,RBAC2 模型中添加了责任分离关系。其规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。


RBAC3: 即最全面的权限管理, 它是基于 RBAC0,将 RBAC1 和 RBAC2 进行了整合。


在大型的企业应用中,通常是根据不同的工作岗位来设置,例如Manager、Employee等。每个角色被赋予一组权限,可以针对不同的资源进行某些操作。用户通常不会被直接赋予权限,而是通过分配不同的角色从而获得相应的权限。


03

ABAC模型场景应用


ABAC基于策略进行访问控制,即对RBAC的环境策略和行为策略进行进一步权限控制,每一条策略可以使用任何属性来定义。通常来说,有三种类型的属性:Subject的属性、Resource的属性和系统属性。例如每个员工有一个属性“类型”,而每一个业务系统也有一个属性“部门”,那么就可以定义一个策略,只有某个正式员工与业务系统允许访问的部门符合,那么这个员工就可以查看业务系统的具体某个业务单元。

图片


04

RBAC与ABAC区别


RBAC一般用于粗粒度的权限控制,而ABAC则用于细粒度的权限控制。例如只要是企业正式员工都可以访问培训学习系统,那么使用RBAC足以。如果再加一条限制,任何正式员工只要在过去半年内未完成培训课程目标,那么不能学习新课程,那么就要用ABAC来控制。通常来说,应该尽量优先使用RBAC,然后再考虑使用ABAC,但通常会将两者结合起来使用。在实际的应用中,很自然的就可以将实际的各种角色(例如员工、外包用户等)映射成RBAC中的Role,所以RBAC让人比较容易接受。而另一方面,RBAC灵活性上的欠缺,所以需要借助于ABAC来处理各种特殊权限控制的需要。


05

RBAC与ABAC业务价值


RBAC价值主要体现在减少授权管理的复杂性、降低管理开销、灵活的支持企业的安全策略和对企业的变化有很大的伸缩性;ABAC因其灵活的授权方式,通常面向跨组织边界进行复杂的细粒度权限管理和管控。



声明:该文观点仅代表作者本人,转载请注明来自看雪