自定义RBAC(1)

news2024/11/15 6:44:02

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~

在对Spring Security稍做了解之后,可以知道,Spring Security其实只是一个实现认证授权的框架,封装了很多实现细节。但也有一些不方便的地方,比如:

1、自定义一些拦截器时,会导致过滤器重复执行,这属于是框架本身的bug;

2、为了验证简单的权限,加入了很多不需要的东西。这也是使用别人的框架不得不承受的;

3、新版本可能会有一些bug,旧版本可能满足不了需求,尴尬。

之前也提到过ACL、RBAC、PBAC等名词,但它们都是干嘛的?资料有很多,却没有专门的内容来说清楚。尤其是在具体开发工作中,该使用哪种权限模型实现需求?

接下来就掰扯掰扯。

什么是权限?权限就是对资源的访问许可,就像这样:

那什么又是认证与授权呢?分开来说:

1、认证:你是谁(身份)

2、授权:能干啥(行为,也可以包括不能干啥)

而且现在互联网应用不再像过去的信息化管理系统那样死板,而是需要根据用户的喜好来呈现不同的内容,某种程度上,这其实也是一种权限,千人千面的权限系统:

除了用户看到的不同,就连传统上应该由内部运营人员承担的职责,现在也分裂一部分出去,给外部的「合约职员」:

而且,在很多小公司里面,开发工程师很多时候都在承担系统管理员的角色:

所以,从互联网角色来说,其实现在没人说得清权限到底应该是什么。

但是,架构师和专家们觉得不说清楚又不行,所以就有了下面一些所谓的「常见权限模型」。

一、DAC:Discretionary Access Control,自主访问控制。

DAC系统会识别用户,然后根据被操作对象(Subject)的权限控制列表ACL(或者权限控制矩阵ACM)的信息来决定用户的是否能对其进行哪些操作,例如读取或修改。而拥有对象权限的用户,又可以将该对象的权限分配给其他用户,所以称之为“自主(Discretionary)”控制。这种设计最常见的应用就是文件系统的权限设计,如微软的NTFS。

有些机构觉得,这么做太随意的,不够安全,所以提出了另一些想法:MAC。

二、MAC:Mandatory Access Control,强制访问控制

每个对象都有一些权限标识,每个用户同样也会有一些权限标识。用户能否对该对象进行操作取决于双方权限标识的关系,这个限制判断通常是由系统硬性规定的。例如谍战片里面的特工查阅资料时,有时会出现因为权限等级不够而无法查阅的情形。

MAC非常适合秘密机构或者其他等级观念非常强烈的行业,但对于商业服务系统,则不够灵活。所以商人们和技术专家就想出了中和的办法:PBAC。

三、PBAC:Policy-Based Access Control,基于策略的访问控制

它是一种介于DAC与MAC之间的权限模型,系统会预先定义一些操作,可以由系统管理员来决定哪些用户能执行这些操作。这既不同于用户授权给其他人,又不同于强制指定权限给用户。现在基本上已经被淘汰,只存在于一些老旧系统之中,例如Windows的安全策略:

既然PBAC不行,那专家们再想想办法吧,不行就拿一个祭天。于是,有了RBAC。也就是迄今为止最为普及的权限设计模型,没有之一。

所以,从DAC、MAC、PBAC到RBAC,这几种权限系统一直都是共存的,没有说哪种特别厉害,哪种特别没用:把驴牵到磨盘上也能磨出好面粉。


感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

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

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

相关文章

【Linux网络编程】服务端编程初体验

文章目录前言服务端是啥、有什么特点核心函数socket的简介服务器编程客户端代码The End前言 在上节课(Linux网络编程初体验)中我们实现了连接bilibili的功能,并获取其html源码 如图所示. 今天我们要自己编写个服务端来服务我们的客户端 提示:以下是本篇…

SGI STL 二级空间配置源码刨析

文章目录内存分配第二级配置器空闲链表的设计内存申请代码内存释放代码注意内存分配 当我们new一个对象时,实际做了两件事情: 使用malloc申请了一块内存。执行构造函数。 在SGI中,这两步独立出了两个函数:allocate申请内存&…

年产20吨鸡枞菌产品的生产工艺设计(lunwen+课题登记表+cad图纸)

目录 摘 要 1 Abstract 2 一、设计任务和内容 4 1.1 设计题目 4 1.2 设计原始数据 4 二、设计说明 5 2.1 全厂总平面布置 5 2.1.1 原料厂及堆场 5 2.1.2 生产区 5 2.1.3 厂前区 6 2.1.4 动力区 6 2.1.5 辅助车间 6 2.1.6 仓库区 6 2.2 三废的处理及回收 6 2.3 车间布置说明 6 三…

Request和Response基础知识入门

文章目录1,Request和Response的概述2,Request对象2.1 Request继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据2.2.4 获取请求参数的通用方式2.3 IDEA快速创建Servlet2.4 请求参数中文乱码问题2.4.1 POST请…

【Unity3D】绘制物体表面三角形网格

1 仅绘制三角形网格 1)创建游戏对象 创建一个空对象,重命名为 Grid,并在其下添加需要绘制网格的对象,如下: 场景显示如下: 2)添加脚本组件 GridController.cs using System; using UnityEngin…

JavaWeb_第4章_RequestResponse

JavaWeb_第4章_Request&Response 文章目录JavaWeb_第4章_Request&Response1,Request和Response的概述2,Request对象2.1 Request继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据2.2.4 获取请求参数…

【ceph】分布式存储ceph

1 块存储,文件存储,对象存储 1.1 简介 文件存储:分层次存储,文件存储在文件夹中;访问文件时系统需要知道文件所在的路径。 举例:企业部门之间运用网络存储器(NAS)进行文件共享。 …

把握出租车行驶的数据脉搏 :出租车轨迹数据给你答案!

城市化带来的道路拥堵、出行耗时长等交通问题给交管部门带来了巨大的挑战。 ▼ 通过安装在出租车上的GPS设备,可以采集到大量的轨迹数据,从而帮助我们分析人们出行信息,达到优化交通的目的。 最近我们被客户要求撰写关于出租车行驶的研究报…

一次性分清zip、gzip、bzip2、tar命令

文章目录归类zip与unzip命令tar命令使用方式zipunzipgzipgunzipbzip2bunzip2tar归类 我们把这几个命令归类为几种能力,一个是解压缩能力一个是打拆包能力。 我这里打包的意思是不使用压缩算法对文件进行压缩,只是简单的把多个文件归档为一个文件。而拆包…

Qt OpenGL(二十五)——Qt OpenGL 核心模式-Qt封装的函数实现彩色三角形

Qt OpenGL(二十五)——Qt OpenGL 核心模式-Qt封装的函数实现彩色三角形 上一篇文章我们绘制了彩色的三角形,接下来其实就应该是让这个三角形旋转起来了,但是,旋转起来之前,还是想通过Qt自己的封装类实现彩色的三角形,并且让他旋转起来。 这才我(冯一川)是写这个系列…

编程之美4 Nim游戏

Tag:贪心;动态规划 题目 N块石头排成一行,每块石头有各自固定的位置。两个玩家依次取石头,每个玩家每次可以取其中任意一块石头,或者相邻的两块石头,石头在游戏过程中不能移位(即编号不会改变…

在ASF中使用On Demand生产DEM等产品时使用不同参考DEM的区别

在ASF中使用On Dmand生产DEM等产品时使用不同参考DEM 主要有两种DEM,分别是SRTM和COP-DEM(GLO-30) 当我们添加Dmand进程之后,点击On Demand Queue 然后进入On Demand界面(如下图所示) 在Processing Op…

MySQL主从复制介绍及实操演示

1. 基本概念 MySQL主从复制的主要效果简单来说是将两个单独的数据库服务器关联起来,对于主机(Master)以及从机(Slave),从机的数据会伴随着主机数据的变化而同步 2. 主从复制作用 可以解决单个MySQL数据库…

leetcode 63. 不同路径 II

文章目录题目思考代码和注释总结题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑…

Android WorkManager使用介绍

一、引言 WorkManager 是google提供的异步执行任务的管理框架,是 Android Jetpack 的一部分,会根据手机的API版本和应用程序的状态来选择适当的方式执行任务。   在后台执行任务的需求是非常常见的,Android也提供了多种解决方案&#xff0c…

高阶数据结构:并查集

本篇主要是介绍并查集的内容:所谓并查集就是一种描述不相交集合的数据结构,即若一个问题涉及多个元素,它们可以划分到不同集合,同属一个集合内的元素等价,不同集合内的元素不等价。 文章目录 一、并查集原理二、并查集…

Prophet在R语言中进行时间序列数据预测

您将学习如何使用Prophet(在R中)解决一个常见问题:预测公司明年的每日订单。 最近我们被客户要求撰写关于时间序列的研究报告,包括一些图形和统计输出。 数据准备与探索 Prophet最适合每日数据以及至少一年的历史数据。 我们将…

Ansible

Ansible是什么? Ansible是一个基于eythn开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pbet和Saltstack能实现的功能,As;ble基本上都可以实现。Ansible能批量配置、部署、管理上…

MongoDB入门与实战-第五章-MongoDB副本集

目录参考一、副本集概念1、**主要功能**2、主从复制和副本集区别3、复制结构图二、副本集成员角色1.主节点2.副本节点3.仲裁节点三、副本集架构(一主一副本一仲裁)1、**设置读操作权限:**2、取消作为奴隶节点的读权限四、选举原则1、触发条件…

时序逻辑电路

数字电路分为两大类,组合逻辑电路和时序逻辑电路 今天我们要开始学习的是时序逻辑电路,要求大家掌握 同步逻辑电路的分析方法 常用的时序逻辑电路的使用方法 当然由于时序逻辑电路的特点,使得时序逻辑电路难度远远大于组合逻辑电路 电路任…