什么是RBAC模型?
RBAC(Role-Based Access Control)
基于角色的访问控制
通过用户关联角色,角色关联权限,来间接的给用户赋予权限
为什么要增加这一层关系呢?不可以直接给用户权限吗?
合理的解释是,当数据库中有大量的用户时,一方面是一个一个用户赋予权限很麻烦并且容易出错,另一方面是当权限需要整体修改时,那么采用RBAC模型的话修改权限只需要修改权限表即可
同时,当用户需要改变权限是,修改他的角色信息即可,很方便
演变模型1
在基础的RBAC模型上增加了角色权限继承的关系,主要是为了满足如下的情况:一个公司中员工的权限不能大于主管,主管的权限不能大于老板。
演变模型2
增加了角色互斥、基数约束、先决条件角色等关系
角色互斥:同一用户不能分配到一组互斥角色集合中的多个角色,互斥角色是指权限互相制约的两个角色。案例:财务系统中一个用户不能同时被指派给会计角色和审计员角色。
基数约束:一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。例如:一个角色专门为公司 CEO 创建的,那这个角色的数量是有限的。
先决条件角色:指要想获得较高的权限,要首先拥有低一级的权限。例如:先有副总经理权限,才能有总经理权限。
运行时互斥:例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色。