ABAC 是一种为解决行业分布式应用可信关系访问控制模型。
基于属性的访问控制
简单来说,对于 我们判断一个用户是否能访问某项资源,是对其很多不同属性的计算而
得到的。
!
术语
: 属 性 , 用 于 表 示 、 或 者 的 特 点 ,
使用 "#$ 的形式来存储这些信息,比如我在公司的 是
,是 "#,是 ,而我的小组昵称袋熊,"#是
,是 %。
&:常常指代使用系统的人或者其他使用者($#,'()),比如说客
户端程序,访问 (*的 或者移动设备等等。当然一个 可以有多个
的 ,就像用户属性这些我们曾经用过的名词一样。
+:指代我们这个 需要管理的资源,比如文件,比如某项记录,比如某台机器或者
某个网站,任何你需要进行访问控制的资源都可以称为 ,同样 也可以
有 多 项 属 性 , 比 如 袋 熊 组 的 桌 子 , 或 者 洛 克 组 的 线 上 实 例 , 我 们 也 常 常 使 用
来描述这些资源,但是在 的环境下,我们称为 。
+:有了 有了 ,自然就有了 需要做的事情,比如查看某条
记录,登录某台服务器,使用某个 &&服务进行报销或者查看候选人的作业。往往
包括我们常说的读、写、修改、拷贝等等,一般 是会表达在 中
的,比如 ,(。
(# : 通 过 、 的 与 一 起 来 判 断
的请求是否能够允许的关系表示,比如说:#可以用人类语言这样表达,
只有袋熊组的人才能访问这几台服务器,或者只有在办公室才能访问这些资源,但对
于 机 器 来 说 ,无 非 就 是 一 个 判 断 语 句 罢 了 。 当然 了 , # 可 以 是 一 堆 这 样
逻辑判断的组合,比如只有公司的正式员工、并且在公司的六楼区域的网络
中,才能访问某个服务。你可以使用 &-(来实现 #,其实没
那么复杂。
) : 表 示 目 前 进 行 的 访 问 请 求 发 生 时 的 操 作 或 情 境 的 上 下 文 。
)常常用来描述环境特征,是独立于 与 的,
常用来描述系统的情况:比如时间,当前的安全等级,生产环境还是测试环境等等。
基本场景与概念
一个典型的 ABAC 场景描述如下图,当 subject 需要去读取某一条记录时,我们的访问
控制机制在请求发起后便开始运作,该机制需要计算来自 policy 中记录的规则,subject 的
aribute,object 的 aribute 以及 environment condions,而最后会产生一个是否允许读取
的结果。