RBAC 权限设计(五)

序言

本文介绍 RBAC2 模型以及具体的实现方案。本文仅提供实现思路供大家参考,在生产实践中请根据业务场景进行具体设计。

一、RBAC2 模型

RBAC2 是 RBAC(基于角色的访问控制)模型中的一种,它在 RBAC0 的基础上,对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类,即静态职责分离 SSD (Static Separation of Duty) 和动态职责分离 DSD (Dynamic Separation of Duty)。

例如,有些角色之间是需要互斥的,譬如给一个用户分配了销售经理的角色,就不能给他再赋予财务经理的角色了,否则他即可以录入合同又能自己审核合同。

在这里插入图片描述

二、RBAC2 库表设计方案

RBAC2 是在 RBAC0 模型的基础上增加了约束。我们可以按如下方式设计库表。

在这里插入图片描述

  1. 用户表:用户表存储了系统中所有用户的基本信息,例如用户名、密码、电子邮件地址、用户类型等。
  2. 角色表:角色表存储了系统中所有角色的基本信息,例如角色名称、描述、创建时间等。角色是一组权限的集合,它们代表了系统中不同用户所扮演的不同角色,例如管理员、经理、普通用户等。
  3. 用户角色关系表:用户角色关系表用于建立用户与角色之间的关系,这是一个多对多关系。每一行记录表示一个用户被赋予了一个角色,即一个用户可以拥有多个角色,而一个角色也可以被多个用户所拥有。
  4. 权限表:权限表存储了系统中所有权限的基本信息,例如权限名称、描述、权限类型等。
  5. 角色权限关系表:角色权限关系表用于建立角色与权限之间的关系,是一个多对多关系。每一行记录表示一个角色被赋予了一个权限,即一个角色可以拥有多个权限,而一个权限也可以被多个角色所拥有。
  6. 角色互斥表:角色互斥表存储了角色之间的互斥关系,用于表示某些角色之间是互斥的,不能同时被赋予给同一个用户或用户组。

三、RBAC2 模型业务处理流程

我们以新增角色业务为例,看一下 RBAC2 模型业务的处理流程:

在这里插入图片描述

  1. 当接收到新增角色请求之后,首先查询当前用户拥有的角色
  2. 根据拥有的角色查询角色对应的权限列表
  3. 判断当前用户是否拥有新增角色的权限
  4. 若没有新增角色的权限,则直接返回权限不足
  5. 若权限校验通过,则进行角色互斥检查
  6. 若新增角色与已有角色互斥,则直接返回违反约束
  7. 角色互斥检查通过,则新增角色,并正常返回

推荐阅读

  1. RabbitMQ(Docker 单机部署)
  2. RBAC 权限设计(四)
  3. RBAC 权限设计(三)
  4. RBAC 权限设计(二)
  5. RBAC 权限设计(一)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值