权限管理模型学习

本质上可以抽象出用户(User)、对象(Object)、行为(Action)和策略(Policy)的四个基本要素。策略(Policy)决定了用户(User)在一定的条件下对指定的对象(Object)有什么样的行为(Action)。

ACL#

ACL即访问控制列表,是基于资源的一种权限控制管理方式。实现原理非常简单,每一项资源都有一个访问列表,记录哪些用户可以对这个资源做CRUD的操作。当用户访问某个资源的时候,系统会检测用户是否在访问列表里,从而确定用户是否有对资源的操作权限

RBAC#

RBAC, 相比与ACL的直接用户上赋予权限

引入角色:
角色 —> 权限的集合,批量操作权限,权限可以统一分配和回收,角色可以和企业的岗位对应,能更加好理解和维护。

引入组织架构:
组织部门 —> 人员的集合, 批量操作人员 (eg: 赋予部门权限,或判断用户是否在组织中)

RBAC的特点如下:
优点是权限只和角色关联,可以统一分配和回收,使用简单,也降低了维护成本。角色可以和企业的岗位对应,能更加好理解和维护。
缺点是当某个角色下的某些用户需要做特别的权限限定,例如去除一些权限,就无能为力。另外,角色规划不好的情况下容易造成角色爆炸和混乱。

ABAC#

ABAC是基于属性的权限验证控制,动态的计算一组属性从而判断当前用户是否有操作权限。属性可以分为用户属性(岗位)、环境属性(公司、家里、时间)、对象属性(对象的类型,比如服务器、楼宇等)、操作属性(启动、创建、读取等)。一组属性可以叫做一个策略,策略可以配置在用户实体上,也可以配置在组织架构上

ABAC的特点如下:
非常灵活,可以根据不同的维度、粒度进行权限管控
无需预置判定逻辑,可以根据需要随时调整,在经常变化的系统中可以很好的支持
策略配置复杂时,会给管理者和问题追查时带来困难
策略判定需要实时计算,会带来性能损耗
从策略上不能很直观的看到人和对象的关系

个人总结:
ACL太复杂了,容易乱,操作起来级联严重
RABC, 适合公司类型,组织架构、人员角色的权限固定管理。
ABAC, 策略过于灵活,适合变化非常多的,策略复杂的

# design
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×