gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

RBAC权限模型定义

RBAC(Role-Based Access Control)权限模型的概念,即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。

传统的RBAC权限模型

用户—角色—权限多对多的关系。

  • 权限修改只需对角色的关联权限进行修改。
  • 若多身份,只需多用户进行多角色赋予即可。
  • 权限通过角色来赋予至用户,使得用户即使发生变更、离职也不会影响权限本身的稳定性。

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

经典的W型RBAC权限模型

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

基于RBAC权限模型的SaaS系统用户权限:

SaaS系统多租户需求分析

后台代码实现rbac权限管理,常见多租户需求分析

 

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

 

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

具体SaaS系统用户权限4要素

用户 – 角色 – 权限 – 资源。

资源

被安全管理的对象(Resources页面、菜单、按钮、订单等)

权限

访问和操作资源的许可(Permit删除、编辑、审批等)

角色

  1. 通过业务流程,确定一个角色,实际是确定角色,并角色具备的那些权限的过程。角色之所以是权限的集合,是众多权限颗粒组成;
  2. 通过把权限给这个角色,再把角色给用户,从而实现用户的权限,因此它承担了一个桥梁的作用。
  3. 引入角色这个概念,可以帮助我们灵活的扩展,使一个用户可以具备多种角色。

用户

系统实际的操作员(User)

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

 

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

SaaS系统多租户表结构分析

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

 

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

从上面的gif动图,可以看出“权限”比较重要!

权限管理

权限管理从功能操作(页面+功能)、数据管理两个不同颗粒度等级来考量的。

权限的抽取可以是开发层面,随着项目的迭代,同时进行权限的控制,也可以做成后台进行统一管理

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型
权限构建

gif动图演示SaaS系统用户权限在传统的基于“用户—角色—权限多对多的关系”rbac基础上,改造成基于“用户-角色-权限-资源关系”的rbac权限管理模型

权限颗粒

  • 功能菜单权限

粗力度权限控制,获得当前权限后页面所有数据可查看或操作

  • 功能操作权限

比菜单权限更细化,具象到不同角色,即使看到相同数据,所具备的操作管理权限也不一样

  • 数据字段权限

最细颗粒的权限控制,实现了不同角色进入后,看到的数据字段都会不同。

RBAC权限模型总结

RBAC权限模型优点

  1. 基于角色的访问控制基本原理,是在用户和访问权限之间,加入角色这一层,实现用户和权限的分离。
  2. 用户只有通过激活角色才能获得访问权限。
  3. 通过角色对权限分组,大大简化了用户权限分配表,间接地实现了对用户的分组,提高了权限的分配效率。
  4. 加入角色层后,访问控制机制,更接近真实世界中的职业分配,便于权限管理。

在RBAC模型中,角色是系统根据管理中,相对稳定的职权和责任来划分,每种角色可以完成一定的职能。

用户通过饰演不同的角色,获得角色所拥有的权限,一旦某个用户成为某角色的成员,则此用户可以完成该角色所具有的职能。通过将权限指定给角色,而不是用户,在权限分派上提供了极大的灵活性和极细的权限指定粒度。也同时支持三个著名的安全原则:最小权限原则;责任分离原则;数据抽象原则。

一言以蔽之--对生活场景的抽象

【用户(user:谁)】被赋予【角色(role:具有1-n个权限)】,通过角色关联的【权限(permit:许可)】去访问/操作【资源(resource)】

场景:小张(user)是人事主管(role),可以看到小莉的请假申请(resource),并批复同意(permit)

上一篇:Dubbo源码解析之consumer关联provider


下一篇:Redis学习之Redis集群模式缺陷及其处理