ABAC权限模型,是基于属性的权限模型,ABAC通过动态计算一个或一组属性来满足某种条件来进行授权判断(可以编写简单的逻辑),属性通常来说分为四类,用户属性(例如年龄,性别等),环境属性(比如时间,地点),操作属性(比如读取),对象属性(如一篇文章,又称为资源属性),所以理论上能够实现非常灵活的控制权限,几乎能满足所有类型的需求
例如规则:“允许所有班主任在上课时间自由进出校门”这条规则,其中,“班主任”是用户的角色属性,“上课时间”是环境属性,“进出”是操作属性,而“校门”就是对象属性了。为了实现便捷的规则设置和规则判断执行,ABAC通常有配置文件(XML、YAML等)或DSL配合规则解析引擎使用。XACML(eXtensible Access Control Markup Language)是ABAC的一个实现,但是该设计过于复杂,我还没有完全理解,故不做介绍。
总结一下,ABAC有如下特点
- 集中化管理
- 可以按需求实现不同颗粒度的权限控制
- 不需要预定以判断逻辑,减轻了权限系统的维护成本,特别是需求经常变化的系统中
- 定义权限时,不能直观的看出用户和对象间的关系
- 规则如果稍微复杂一点,或者设计混乱,就会给管理者维护和追查带来麻烦
- 权限判断需要实时执行,规则过多会导致性能问题
- Post link: https://www.godhearing.cn/abac-quan-xian-mo-xing/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.