之前对权限管理之间的概念比较模棱两可,统一总结一下
ACL
ACL(Access Control List)基于用户
的权限管理模型
简介:基于用户进行权限分配管理,权限直接作用在用户上,只需要给用户分配或取消某个权限,实现权限控制,适用于小型管理系统
结构:user表
, permission表
, user_permission表
RBAC
RBAC(Role Based Access Control)基于角色
的权限管理模型
简介:基于角色的权限管理模型,即在用户和权限之间多一个角色管理层,用户只需要分配角色不需要关心权限,权限分配在角色上
打个比方,用户对某个文件具有读写等十多个权限,如果是用ALC的方式,则每添加一个用户,就得给用户执行十多次权限的绑定(执行n多次),而RBAC只需要提前将这十多个权限绑定在一个角色上(只执行一次),每新增一个用户,就将这个角色分配给用户,即可保证每个用户都拥有权限,适用于角色权限明确的系统,需要维护角色、权限、用户之间的关系
结构:user表
, role表
,user_role表
, permission表
, role_permission表
ABAC
ABAC(Attribute Based Access Control)基于属性
的权限管理模型
简介:对用户本身的属性进行标识,通过标识来判断用户权限,是通过实体的属性、操作类型、相关的环境来控制是否有对操作对象的权限
例如后台管理员可以看所有的文章,普通游客可以看所有上架的文章,文章作者可以看自己发布的所有文章,如果用RBAC去实现的话,需要维护用户表,角色表,权限表,复杂程度,成本都较高,而如果ABAC模型实现,只需要判断当前用户是否等于作者,是否是管理员,是否文章已上架这几个属性即可(计算结果即可判断权限),直观,维护成本低,易读