【SpringBoot】RBAC权限控制

       📝个页人主:五敷有你      
 🔥系列专栏:SpringBoot
⛺️稳重求进,晒太阳

权限系统与RBAC模型

权限

为了解决用户和资源的操作关系, 让指定的用户,只能操作指定的资源。

权限功能

  • 菜单权限:某用户,某角色能看到某菜单,例如:超管能看到所有的菜单,普通员工只能看到请假菜单。
    • 粒度细的话可以做到按钮、标签显示不显示,字段显示不显示等,
    • 主要是前端的事情。具体实现可以将权限存在session中,用一些v-if 标签进行判断 有就生成没有就忽略
  • 接口权限:某用户,某角色能操作某接口,例如:超管能操作所有按钮接口,普通用户只能操作提交请假,查看请求列表。
    • 因为上面的操作是可以把按钮隐掉了,一部分小白是操作不了相关操作,但是如果另一个码农知道了你的接口,就可以使用接口模拟操作了。
    • 主要是后端的事情(鉴权)。
  • 数据权限,某用户,某角色能查看某数据,例如:超管能看到所有人的请假单,普通用户只能看到自己的请假单
    • 例如查看工资条接口,这个接口权限都能调用,但是工资条肯定只能看到自己的,超过可以看到所有人的。这里数据权限体会下。
    • 能crud哪些数据。
    • 能看到哪些字段。
    • 主要是后端的事情

RBAC权限系统

概述

通常情况下,一个系统,除了登陆也就是认证之外,还应该有一个重要的功能,就是鉴权,使用rbac可以很好的解决上述的问题。

  • 认证(authentication)-规定了谁能够登陆
  • 鉴权(authorization)-规定了谁能访问那些接口,浏览那些页面,使用哪些功能,

RBAC(Role-Based Access Control )基于角色的访问控制。

不同人,有不同的权限,老师有判卷权限,学生有答题的权限...

RBAC语言中的角色通常是指一组具有某些特征的人,例如:部门 /地点/资历/工作职责等

RBAC认为权限的过程可以抽象概括为:

判断【Who是否可以对What进行How的访问操作(Operator)】这个逻辑表达式的值是否为True的求解过程。

即将权限问题转换为Who、What、How的问题。who、what、how构成了访问权限三元组。

定义角色后,就要分配权限,可能涉及如下:

Access(访问),这个人能看到什么

  • 访问表示用户可以查看或访问系统中哪些资源。这决定了用户对特定数据或功能的可见性。在RBAC中,可以通过角色分配访问权限,使得一组用户共享相似的访问能力。
  • 例如,在文件系统中,访问可以控制用户能够访问哪些文件或目录。在应用程序中,访问可以决定用户是否能够查看特定页面或功能。

Operations(操作),这个人能读到什么,这个人能写什么,该人可以创建和删除文件吗?

  • 操作定义了用户对其拥有访问权限资源可以执行的具体动作。这包括了读取、写入、删除、创建等各种可能的操作。通过将操作与访问权限关联,RBAC提供了对用户行为更细粒度的控制。
  • 例如,在数据库中,操作可能包括查询、更新、删除或插入记录。在文件系统中,操作可以确定用户是否能够执行文件的特定操作,如复制、移动或重命名。

Session(会话),该人可以在系统中停留多长时间,,什么时候可以登录,登录什么时候过期

  • 会话管理用户在系统中的停留时间以及与身份验证和授权相关的时间参数。这包括了用户何时可以登录系统、登录会话的持续时间,以及在什么条件下会话可能被终止。
  • 通过对会话进行有效管理,可以提高系统的安全性,防止未经授权的访问,并确保合规性。会话设置可以包括过期时间、自动注销等策略,以控制用户在系统中的活动时间。

RBAC分为了四级

第0级,扁平化,最简单也是最常用的RBAC形式,与员工使用角色获得权限

第1级,分层的,这建立在Flat RBAC 规则之上,增加了角色层次结构

比如销售有销售经理,销售总监,销售的普通人员,都是销售但是级别不一样。

第2级别,受约束的,这建立在分层RBAC之上,增加了职责分离

第3级别,对称的,建立在受约束的RBAC模型之上,并增加了权限审查

RBAC支持公认的安全原则:

最小特权原则、责任分离原则和数据抽象原则。

  • 最小特权原则得到支持:是因为在RBAC模型中可以通过限制分配给角色权限的多少和大小来实现,分配给与某用户对应的角色的权限只要不超过该用户完成其任务的需要就可以了。
  • 责任分离原则的实现:是因为在RBAC模型中可以通过在完成敏感任务过程中分配两个责任上互相约束的两个角色来实现,例如在清查账目时,只需要设置财务管理员和会计两个角色参加就可以了。
  • 数据抽象:借助于抽象许可权这样的概念实现的,如在账目管理活动中,可以使用信用、借方等抽象许可权,而不是使用操作系统提供的读、写、执行等具体的许可权。但RBAC并不强迫实现这些原则,安全管理员可以允许配置RBAC模型使它不支持这些原则。因此,RBAC支持数据抽象的程度与RBAC模型的实现细节有关。

RBAC的组成

在RBAC模型里面,有3个基础组成部分,分别是:用户、角色和权限。

RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离(区别于ACL模型),极大地方便了权限的管理

在讲解之前,我们先介绍一些名词:

  • User(用户):每个用户都有唯一的UID识别,并被授予不同的角色
  • Role(角色):不同角色具有不同的权限,比如:人事、会计等
  • Permission(权限):访问权限,比如
  • 用户-角色映射:用户和角色之间的映射关系
  • 角色-权限映射:角色和权限之间的映射

它们之间的关系如下图所示:

例如下图,管理员和普通用户被授予不同的权限,普通用户只能去修改和查看个人信息,而不能创建用户和冻结用户,而管理员由于被授予所有权限,所以可以做所有操作。

rbac说明图

完成RBAC模型,我们需要设计五张表,如下:

.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下安装go

下载golang Go 官网下载地址: https://golang.org/dl/ Go 官方镜像站(推荐): https://golang.google.cn/dl/ 选择安装包 验证有没有安装成功 查看 go 环境 说明 : Go1.11 版本之后无需手动配置环境变量&#xff0c…

29 python快速上手

Python操作MySQL和实战 1. 事务1.1 MySQL客户端1.2 Python代码 2. 锁2.1 排它锁2.2 共享锁 3. 数据库连接池4. SQL工具类4.1 单例和方法4.2 上下文管理 5.其他总结 目标:掌握事务和锁以及Python操作MySQL的各种开发必备知识。 概要: 事务锁数据库连接池…

Weblogic反序列化漏洞分析之CVE-2021-2394

目录 简介 前置知识 Serializable示例 Externalizable示例 联系weblogic ExternalizableLite接口 ExternalizableHelperl类 JdbcRowSetImpl类 MethodAttributeAccessor类 AbstractExtractor类 FilterExtractor类 TopNAggregator$PartialResult类 SortedBag$Wrappe…

【测试运维】web自动化全知识点笔记第1篇:什么是Web自动化测试(已分享,附代码)

本系列文章md笔记(已分享)主要讨论Web自动化测试相关知识。了解什么是自动化,理解什么是自动化测试以及为什么要使用自动化测试。具体包含:WebDriver的基本操作,WebDriver的鼠标、键盘操作,下拉选择框、警告…

SpringBoot RestTemplate 上传文件

SpringBoot RestTemplate 上传文件 Testpublic void testUpload() throws Exception {String url "http://127.0.0.1/file/upload";String filePath "C:\\temp\\1.png";RestTemplate rest new RestTemplate();FileSystemResource resource new FileSys…

【教学类-46-01】吉祥字门贴1.0(华光通心圆_CNKI 文本框 空心字涂色,最好繁体字)

作品展示 背景需求: 马上就要过年了,家家户户大门上贴上对联和福字 我想用正方形红色手工纸(15CM)也做一个幼儿描线版的福字 问题一:福字顺时针旋转45度 打印纸上制作福字,需要让这个字顺时针旋转45度&am…

C语言:简单排序

题目描述 输入11个整数,如果第1个数为1,则将其中的第2至11个数升序排列;如果第1个数为0,则降序排列。 输入格式 输入一行,包含11个整数,用空格符分隔。 输出格式 输出1行,包含10个顺序排列的整…

Qt程序设计-使用QSplashScreen制作开机界面

目录 QSplashScreen简介 实例演示 QSplashScreen简介 在Qt中,QSplashScreen类就是用来创建启动画面的。它是一个窗口类,可以显示一个图片,并在图片上显示一些文本信息。QSplashScreen类提供了一些方法,可以方便地设置启动画面的图片和文本,以及控制启动画面的显示和隐藏…

【C++栈和队列:数据结构中的经典组合,高效处理先进先出与后进先出问题的最佳方案】

[本节目标] 1. stack的介绍和使用 2. queue的介绍和使用 3. priority_queue的介绍和使用 4. 容器适配器 1. stack的介绍和使用 1.1 stack的介绍 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的…

【DC渗透系列】DC-2靶场

arp先扫 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 VMware, In…

DolphinScheduler实现隔几天调度

1.场景分析 dolphinscheduler(海豚)定时器模块-定时调度时每3秒|每3分钟|每3天这种定时,不能够跨分钟,跨小时,跨月,每次跨月等都会从每个月的第1天(第几天开始可以设定)开始重新计时…

Unity3d Cinemachine篇(四)— StateDrivenCamera

文章目录 前言使用StateDrivenCamera根据不同动画切换相机1. 创建一个游戏物体2. 创建StateDrivenCamera相机3. 创建动画4. 设置相机5. 完成 前言 上一期我们简单的使用了FreeLook相机,这次我们来使用一下StateDrivenCamera 使用StateDrivenCamera根据不同动画切换…

PFMEA的具体实施步骤都有哪些——FMEA软件免费

免费试用FMEA软件-免费版-SunFMEA 一、引言 PFMEA(Process Failure Mode and Effects Analysis)是一种用于识别、评估和优先处理生产过程中潜在失效模式的工具。它通过对生产过程中的各个环节进行深入分析,发现可能导致产品不合格、过程不稳…

docker maven插件使用介绍

1、配置docker连接 开放docker tcp连接参考本专栏下令一篇文章 2、docker service窗口 3、根据dockerfile 构建镜像 注意 idea 用通过管理员身份启动,否则连不上docker 构建前添加maven goal 打包 4、运行镜像 创建容器 5、运行docker compose 报错 需要先配置d…

面了昆仑天工大模型算法岗(实习),感觉彻底凉凉。。。

我是过年某985研二,过完年打算找大厂实习 offer,本文章主要记录了本小菜研找实习的坎坷历程。 应聘岗位:昆仑天工大模型算法工程师 面试轮数:第一面 1. 自我介绍 在自我介绍环节,我清晰地阐述了个人基本信息、教育背景…

django微博热搜数据分析与可视化系统python毕业设计

简而言之,数据可视化是以图形方式呈现结构化或非结构化数据,从而将隐藏在数据中的信息直接呈现给人们。但是有一个陷阱:它不仅仅是使用数据可视化工具将数据转化为图形。相反,它是从数据的角度看待世界。换句话说,数据可视化的对象…

(7)【Python/机器学习/深度学习】Deep-Learning模型与算法应用—深度学习基础搭建最小神经网络

目录 一、深度学习使用python建立最简单的神经元neuron 1、人工智能&机器学习&深度学习三者关系 2、机器学习& 深度学习区别 3、神经元 4、最小神经网络模型(神经元/感知器) 5、(案例)Predicting if a person would buy life insurn…

使用vue脚手架构建项目

一、前言 * 创建好vue-cli的环境,下载好vue包依赖* 本文使用环境:vue/cli 5.0.8二、步骤 创建vueTest文件夹,管理员身份运行cmd , 进入到vueTest文件夹 执行命令vue create 你的项目名 ,这里我定义的项目名为: my-project 基于…

基于微信小程序的校园水电费管理小程序的研究与实现

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

DAY39: 动态规划不同路径问题62

Leetcode: 62 不同路径 机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。 基本思路 1、确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条…