Bootstrap

ABAC权限模型的设计

ABAC(Attribute Base Access Control) 基于属性的权限控制

​ 不同于常见的将用户通过某些方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来

​ 判断是否满足某种条件来进行授权判断(可以编写简单的逻辑)。

属性通常来说分为四类:

​ 用户属性(如用户年龄 用户地址)

​ 环境属性(比如当前时间)

​ 操作属性(增、删、改、查)

​ 对象属性(比如一篇文章,又称资源属性)

例如:

​ 规则:“允许所有班主任在上课时间可以自由出入校门”这条规则,其中,“班主任”是用户的角色属性

​ “上课时间”是环境属性,’‘进出’‘是操作属性,而"校门"就是对象属性。 为了实现便捷的规则设置判断

​ 执行,ABAC通常有配置文件(XML、YAML等)或者DSL配合规则解析引擎使用。

XACML(eXtensible Access Control Markup Language)ABAC的一个实现,但是该设置过于复杂

ABAC的特点

1.集中化管理

2.可以按需求实现不同颗粒度的权限控制

3.不需要预定义判断逻辑,减轻了权限系统的维护成本,特别是在需求经常变的系统中

4.定义权限时,不能直观看出用户和对象间的关系

5.规则如果稍微复杂一点,或者设计混乱,会给管理者维护和追查带来麻烦

6.权限判断需要实时执行,规则过多会导致性能出现问题

ABAC有时也被称为PBAC(Policy-Based Access Control)或CBAC(Claims-Based Access Control)

;