ACL(Access Control List):访问权限列表 如:
user1-->AC1
user1-->AC2
user2-->AC1 此时权限汇总成⼀个列表
这种设计最常见的应⽤就是⽂件系统的权限设计,如微软的NTFS
对权限控制⽐较分散,不便于管理,⽐如⽆法简单地将⼀组⽂件设置统⼀的权限开放给指定的⼀⽤户
金属表面镜面处理RBAC(Role Base Access Control):基于⾓⾊的权限控制
丙烯运输
与ACL 对⽐ RBAC不⽤给⽤户单个分配权限,只⽤指向对应的⾓⾊就会有对应的权限,⽽且分配权限和收回权限都很⽅便如菜单权限的设计:⽤户与⾓⾊关联,⾓⾊与菜单关联
氧化挂具
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这么好,那最流⾏的为什么还是RBAC呢?
ABAC有时也被称为PBAC(Policy-Based Access Control)或CBAC(Claims-Based Access Control)
。