RBAC模型
概述
在企业系统中,通过配置用户的功能权限可以解决不同的人分管不同业务的需求,基于RBAC模型,RBAC(Role Based Access Control)模型,它的中文是基于角色的访问控制,主要是将功能组合成角色,再将角色分配给用户,也就是说角色是功能的合集。
比如:
企业A总共有12个功能,需要创建100个用户。这些用户包括财务管理、人事管理、销售管理等等。如果不引入基于角色的访问控制(RBAC)模型,我们就需要每创建一个用户就要分配一次功能,这将至少需要进行100次操作(每个用户只能拥有一个功能)。如果用户数量增加到1000甚至10000,并且一个用户可能会拥有多个功能,操作将会变得非常繁琐。如图:
经过多次操作后发现,有些人被分配了相同的功能。例如,A、B等10个用户都被分配了客户管理、订单管理和供应商管理这几个模块。我们是否可以将这几个功能模块组合成一个包,然后将整个包分配给需要的用户呢?这个包被称为角色。由于角色和功能之间的对应关系相对稳定,在分配权限时只需分配角色即可,如下图所示:
基于RBAC授权模式后,我们可以达到以下2个目标:
- 解耦用户和功能,降低操作错误率
- 降低功能权限分配的繁琐程度
ER图与关系梳理
在一个核心业务系统中,我们通常通过业务分析,从而抽离出数据库表,表确定之后我们会进一步分析表中应该有的字段,下面我先看下业务ER图:
暂时无法在飞书文档外展示此内容
上图中清楚的描述用户、角色、资源、职位、部门之间的关系,同时我们进一步推导出以下结果:
- 用户与职位是N:1关系
- 用户与部门是N:1关系
- 用户与角色是N:N关系,则它们之间必然有一个中间表
- 角色与资源是N:N关系,则它们之间必然有一个中间表
具体的表字段大家可以查看提供的数据库,我们在做业务的时候,会再次梳理这些表中的字段
总结
- RBAC模型是基于角色的访问控制模型,该模型最常应用于系统权限设计中
- RBAC模型中,一般会有是三个基本对象,用户,角色和权限,他们三个分别都是多对多关系,那么也就意味着有两张中间表,所以数据库表层面共有五张表