RBAC模型介绍

简介: RBAC模型是一种基于角色的访问控制机制,用于解决企业系统中不同用户对不同业务的权限管理问题。它将功能集合为角色,然后将角色分配给用户,简化了大量用户的权限分配过程,降低了操作错误和复杂性。通过角色,可以实现用户与功能的解耦,便于权限管理。在RBAC中,用户、角色和权限之间存在多对多的关系,通常涉及五张数据库表来维护这种关系。

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模型中,一般会有是三个基本对象,用户,角色和权限,他们三个分别都是多对多关系,那么也就意味着有两张中间表,所以数据库表层面共有五张表
目录
相关文章
|
JavaScript Linux Shell
一款国内SSH终端工具
Windows系统中,连接linux ssh的管理终端常用好用的软件无疑是Xshell/SecureCRT/PUTTY三款终端软件。但这三款终端无法实现跨平台使用,以及部分软件需要昂贵的授权费用才能使用。现作者给大家推荐一款基于Electron + Vue的跨平台(windows/linux/macos)终端软件NxShell
一款国内SSH终端工具
|
Web App开发 编解码 安全
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
视频会议技术 入门探究:WebRTC、Qt与FFmpeg在视频编解码中的应用
1350 4
|
存储 缓存 NoSQL
(Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
(Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
1536 0
(Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
|
人工智能 自然语言处理 IDE
CodeFuse IDE 0.6 版本发布,支持编辑器诊断问题 AI 修复
CodeFuse IDE 是基于蚂蚁自研大模型和 OpenSumi 框架的 AI 编程助手,支持多语言,提供代码建议、解释、测试生成等,增强开发效率。最新版增加 AI 修复和智能补全功能,开源并支持 VS Code 插件生态。[了解更多](https://github.com/codefuse-ai/codefuse-ide)
604 0
|
编解码 人工智能 文件存储
卷积神经网络架构:EfficientNet结构的特点
EfficientNet是一种高效的卷积神经网络架构,它通过系统化的方法来提升模型的性能和效率。
494 1
|
小程序 存储 UED
如何实现一次搭建 多平台适配的小程序
【6月更文挑战第3天】如何实现一次搭建 多平台适配的小程序
|
存储 监控 安全
深入理解RBAC权限系统
RBAC(Role-Based Access Control)是一种访问控制模型,其核心概念是基于角色的权限分配。该模型的设计目标是简化对系统资源的访问管理,提高系统的安全性和可维护性。
2693 2
深入理解RBAC权限系统
|
运维 安全 数据安全/隐私保护
深入理解 RBAC
深入理解 RBAC
1015 0
深入理解 RBAC
|
存储 人工智能 运维
云原生AIGC工作台(AIGC-Gateway)助力企业加速AIGC落地
为了解决企业内部落地AIGC引擎的通用性问题,阿里云与行者AI通过CloudNativeGame社区一起开源了AIGC-Gateway项目,降低企业内部AIGC落地的难度与费用,真正做到开箱即用,即开即用。
1610 1
|
SpringCloudAlibaba Java Nacos
空的springboot项目导入nacos 配置中心和注册中心依赖后报错,提示 org.apache.http.impl.client.HttpClientBuilder 这个类找不到 问题的解决
空的springboot项目导入nacos 配置中心和注册中心依赖后报错,提示 org.apache.http.impl.client.HttpClientBuilder 这个类找不到 问题的解决
742 0