En 400-6655-581
5
返回列表
> 资源中心 > 零信任 | 零信任架构和访问控制模型ABAC

零信任 | 零信任架构和访问控制模型ABAC

2020-05-08浏览次数:868

近几年,权限访问控制模型被反复提及,目前常用的是RBAC(Role-Based Access Control),RBAC是迄今为止最为普及的权限设计模型,其优点是简单,实现起来非常容易。


但是随着授权需求复杂度的提升和对控制逻辑灵活性的高度要求,ABAC(attribute-based access control)访问控制模型将会越来越普及。近期火爆的零信任架构里,ABAC模型就比RBAC更加合适。


ABAC既然是针对属性(attributes)的,那我们先来看看它一般是针对哪些属性进行授权控制的。属性可以是任意的对象,一般会涉及的属性主要是以下四类:


1

访问主体属性:访问者自带的属性,比如年龄,性别,部门,角色等;

2


动作属性:比如读取,删除,查看等;

3


对象属性:被访问对象的属性,比如一条记录的修改时间,创建者等;

4


环境属性:比如时间信息,地理位置信息,访问平台信息等。


基于属性,ABAC可以设置很多灵活的策略来进行访问的控制,比如:


1

当一个文档的所属部门跟用户的部门相同时,用户可以访问这个文档;

2

当用户是一个文档的额拥有者并且文档的状态是草稿,用户可以编辑这个文档;

3

早上九点前禁止A部门的人访问B系统;

4

在除了上海以外的地方禁止以管理员身份访问A系统。

看起来是不是挺强大的。


因为模型是基于策略,而策略又是基于各种灵活的属性动态控制的,所以ABAC模型里通常有配置文件(XML、YAML等)或DSL配合规则解析引擎使用。规则引擎负责控制逻辑的处理,配置文件负责策略的定义和描述。


XACML(eXtensible Access Control Markup Language)就是基于ABAC访问模型的一个实现(可能也是最复杂的一种实现)。


在XACML的架构中,有5种控制节点:



典型的访问请求是这样流转的:


1. 用户访问资源,发送原始请求,请求会被PEP拦截;

2. PEP把请求转换成一个XACML的访问申请请求;

3. PEP把访问申请请求转发给PDP;

4. PDP根据策略配置对认证请求进行评估。策略保存在PRP,并由PAP维护。如果需要采集属性信息,还会从PIP收集属性;

5. PDP收到访问申请请求的结果(允许,禁止)并发送给PEP;

6. PEP根据收到的信息,允许或者禁止用户访问资源。


文字太多,请看图:


我们再来看一下ABAC访问控制模型和零信任架构的结合点,从Gartner提供的报告中,我们可以看到典型的零信任架构图如下:



SDP Gateway是用于做访问拦截和访问代理,这个跟XACML里的PEP功能类似。


SDP Controller是做访问控制的策略定义和执行,这个则是包含了XACML里除了PEP以外的节点的功能。


ABAC可以说是缩小版的零信任模型。


零信任架构是想解决最小化授权、策略集中化管理、动态授权控制、自适应授权控制等问题。这些功能的实现跟ABAC权限控制模型不谋而合(也有厂商的零信任架构是基于ABAC和RBAC两种授权控制模型结合实现的)。


随着零信任架构的大放光彩,ABAC授权模型也将被大家所熟知。