¶ 集成 ABAC 权限模型到你的应用系统
更新时间: 2024-10-10 07:28:40
前面我们介绍了什么是基于属性的访问控制(ABAC),接下来这篇文章介绍如何基于 Authing 快速将 ABAC 权限模型集成到你的系统中。在上一讲中我们介绍了如何将 RBAC 权限模型的集成方法,相信你也意识到了,RBAC 权限模型是静态的,也就是没有环境、对象属性等动态属性参与,所以很难实现类似于以下场景的访问控制:
- 当一个文档的所属部门跟用户的部门相同时,用户可以访问这个文档;
- 当用户是一个文档的拥有者并且文档的状态是草稿,用户可以编辑这个文档;
- 早上九点前禁止 A 部门的人访问 B 系统;
- 在除了上海以外的地方禁止以管理员身份访问 A 系统;
¶ ABAC 的主要组成部分
在 ABAC 中,一个操作是否被允许是基于对象、资源、操作和环境信息共同动态计算决定的。
- 对象:对象是当前请求访问资源的用户。用户的属性包括ID,个人资源,角色,部门和组织成员身份等;
- 资源:资源是当前访问用户要访问的资产或对象(例如文件,数据,服务器,甚至API)。资源属性包含文件的创建日期,文件所有者,文件名和类型以及数据敏感性等等;
- 操作:操作是用户试图对资源进行的操作。常见的操作包括“读取”,“写入”,“编辑”,“复制”和“删除”;
- 环境:环境是每个访问请求的上下文。环境属性包含访问尝试的时间和位置,对象的设备,通信协议和加密强度等。
¶ ABAC 如何使用属性动态计算出决策结果
在 ABAC 的决策语句的执行过程中,决策引擎会根据定义好的决策语句,结合对象、资源、操作、环境等因素动态计算出决策结果。、
每当发生访问请求时,ABAC 决策系统都会分析属性值是否与已建立的策略匹配。如果有匹配的策略,访问请求就会被通过。
例如,策略「当一个文档的所属部门跟用户的部门相同时,用户可以访问这个文档」会被以下属性匹配:
- 对象(用户)的部门 = 资源的所属部门;
- 资源 = “文档”;
- 操作 = “访问”;
策略「早上九点前禁止 A 部门的人访问B系统;」会被以下属性匹配:
- 对象的部门 = A 部门;
- 资源 = “B 系统”;
- 操作 = “访问”;
- 环境 = “时间是早上 9 点”。
¶ 在 Authing 中授权资源的时候指定限制条件
我们在授权资源的时候,可以指定限制条件。例如在下面的例子中,我们添加了一个限制条件:要求当前请求的用户经过了 MFA 认证。
除了 MFA 认证这个属性外,你还可以在 Authing 的策略引擎上下文中获取以下属性:
- 用户对象属性,如性别、组织机构、分组、角色、邮箱是否验证、手机号是否验证、自定义数据、是否经过了 MFA 认证、用户上次 MFA 认证时间等;
- 环境属性:客户端 IP、客户端 UA、客户端浏览器、请求来源国家、请求来源省份、请求来源城市等;
- 资源属性:资源创建时间、资源拥有者、资源标签等;
你可以根据这些属性组成灵活的策略授权语句。