近几年,权限访问控制模型被反复提及,目前常用的是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种控制节点:

最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



