跳到主要内容

5 篇博文 含有标签「权限」

查看所有标签

安全访问 - 第4章 ABAC模型

· 阅读需 5 分钟
何丰良
技术支持人员

4.1 概念

Attribute Based Access Control (基于属性的访问控制 ),简称ABAC, 是一种根据主体属性、对象属性、环境条件,使用预先定义的策略(Policy)对操作对象进行验证的访问控制方式。ABAC是对RBAC的改进,用于更细粒度更灵活的访问控制,NIST于2015年发表论文对ABAC标准进行了定义。

主体是指用户或组织。以用户为例,用户的属性是指用户的学历、性别、年龄等。

对象是系统资源,如⽂件、设备、程序、网络等。以文件为例,对象的属性是指文件的名称、大小、类型、拥有者等。

操作是主体请求对对象执⾏的功能。例如文件操作,包括对文件的读、写、编辑、删除、复制、执⾏和修改等。

策略(Policy)是一组访问规则。用于定义主体对对象可以执行某种操作。例如:小明对文件test.txt可以执行读操作,这里小明是主体,test.txt是对象,读是操作。

4.2 工作原理

下图展示了基于ABAC访问控制机制下,主体访问对象的工作原理:

  1. 主体请求访问对象。
  2. ABAC访问控制机制根据主体属性、对象属性、环境参数、操作、策略对该请求进行授权验证。
  3. 如果验证通过,则可以访问对象。

在现实世界的例子

”我作为一名爸爸,希望授权5岁的儿子,在电视上看1个小时的《超级飞侠》动画片。“

在这个例子中,“爸爸”相当于系统管理员,可以对动画片资源设定访问权限。

主体是“儿子”,主体的属性是:5岁(属年龄)。

对象是“文件“,对象的属性是:超级飞侠(属名称),动画片(属类型)。

环境属性是:电视(属设备)、1个小时(属时间范围)。

假如当前系统的策略定义格式为:allow {主体[属性]} {对象[属性]} {环境}{操作},则对这个例子的策略定义为:

allow {儿子[年龄=5岁]} {文件[类型=动画片 and 名称=超级飞侠]} {环境[设备=电视 and 时间=10:00~11:00]} {操作[读]}

在满足以上条件后,在儿子观看《超级飞侠》时,ABAC访问控制机制就可以根据主体属性、对象属性、环境条件,使用爸爸预先定义的策略(Policy)对这次访问进行验证,如果验证结果通过,就可以观看。

4.3 与RBAC比较

RBAC与ABAC之间的主要区别在于授予访问权限的方式。 RBAC按照角色授予访问权限,ABAC可以根据主体、对象、环境、操作类型等属性确定访问权限。

RBAC 模型构建起来更加简单,对于中小型组织,维护角色和授权关系的工作量不大,反而定制各种策略相对麻烦,更容易接受RBAC模型。对于大型组织,RBCA模型需要维护大量的角色和授权关系,从⽽导致通常所说的“⻆⾊爆炸”。且RBCA无法做到对对象细粒度地授权。

参考链接

ABAC定义和注意事项指南

权限管理系统RBAC和ABAC