权限系统

ACL

Access Control List 访问权限列表

适用于文件系统的权限设计,权限控制比较分散,不便于管理。

RBAC

基于角色的访问控制(RBAC: Role-Based Access Control)

RBAC不用给用户单个分配权限,只用指向对应的角色就会有对应的权限,而且分配权限和收回权限都很方便

每个用户关联一个或多个角色,每个角色关联一个或多个权限,从而可以实现了非常灵活的权限管理。

角色可以根据实际业务需求灵活创建,这样就省去了每新增一个用户就要关联一遍所有权限的麻烦。

简单来说RBAC就是:用户关联角色,角色关联权限

ABAC

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

ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断

例如规则:“允许所有班主任在上课时间自由进出校门”这条规则,其中,“班主任”是用户的角色属性,“上课时间”是环境属性,“进出”是操作属性,而“校门”就是对象属性了。为了实现便捷的规则设置和规则判断执行

总结一下,ABAC有如下特点:

  • 集中化管理
  • 可以按需实现不同颗粒度的权限控制
  • 不需要预定义判断逻辑,减轻了权限系统的维护成本,特别是在需求经常变化的系统中
  • 定义权限时,不能直观看出用户和对象间的关系
  • 规则如果稍微复杂一点,或者设计混乱,会给管理者维护和追查带来麻烦
  • 权限判断需要实时执行,规则过多会导致性能问题