权限设计模式

权限设计,设计模型分析(DAC,MAC,RBAC,ABAC) 之 RBAC 权限设计,设计模型分析(DAC,MAC,RBAC,ABAC) 之 RBAC:角色的权限控制 阅读详情

ACL(Access Control List):访问控制列表 用户 -> 权限

RBAC介绍 (Role-Based Access Control,基于角色的访问控制)-实现用户和角色的解耦

一、四大权限模型对比

模型核心思想关系结构适用场景复杂度
ACL直接给用户分配权限用户 ↔ 权限(直接)用户少、权限简单的系统⭐ 低
RBAC通过角色间接分配权限用户 ↔ 角色 ↔ 权限用户多、角色分明的企业系统⭐⭐ 中
ABAC基于属性动态判断权限用户属性 + 资源属性 + 环境属性 → 决策复杂动态场景(如数据隔离、时间限制)⭐⭐⭐ 高
PBAC基于策略组合权限规则策略集 → 规则引擎 → 权限决策超大规模、多租户、合规要求高的系统⭐⭐⭐⭐ 很高

二、详细解析

1. ACL(Access Control List)访问控制列表

用户A ──→ [权限1, 权限2, 权限3] 用户B ──→ [权限2, 权限4]

特点:直接、简单、无中间层
缺点:用户量上千时,授权管理噩梦
典型应用:Linux文件权限、早期小型后台系统


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

用户A ──→ 角色"财务经理" ──→ [审批报销, 查看报表, 导出数据] 用户B ──→ 角色"普通会计" ──→ [录入凭证, 查看报表]

演进版本:

版本新增能力说明
RBAC0基础模型用户-角色-权限三要素
RBAC1角色继承角色可继承(如"技术总监"继承"开发工程师"权限)
RBAC2角色约束互斥角色(如"会计"与"审计"不能兼任)
RBAC3统一模型RBAC1 + RBAC2 的完整版

典型应用:绝大多数企业管理系统(ERP、OA、CRM)

3. ABAC(Attribute-Based Access Control)基于属性的访问控制

规则示例: IF

        用户.部门 == "销售部" AND 资源.创建时间 > 2024-01-01 AND 环境.当前时间 < 18:00   

      THEN

        允许访问

三类属性:

  • 主体属性:用户部门、职级、入职时间等
  • 资源属性:数据所属区域、密级、创建时间等
  • 环境属性:访问时间、IP地址、设备类型等

典型应用:云资源权限(AWS IAM)、数据行级权限、动态数据脱敏


4. PBAC(Policy-Based Access Control)基于策略的访问控制

策略集示例:

策略1:GDPR合规策略 → 欧盟用户数据禁止出境

策略2:SOX合规策略 → 财务数据修改需双人审批

策略3:内部策略 → 离职员工自动回收权限

特点:策略可组合、可版本化、支持合规审计
典型应用:金融、医疗、政务等强合规行业


三、选型决策树

开始 │ ▼ 用户数量 < 50? ──是──→ ACL(快速上线) │否 ▼ 权限规则是否经常变化? ──是──→ ABAC(灵活应对) │否 ▼ 是否需要复杂合规审计? ──是──→ PBAC(策略驱动) │否 ▼ 角色职责是否清晰稳定? ──是──→ RBAC(业界标准) │否 ▼ 混合方案:RBAC + ABAC(角色打底,属性细化)


四、实际组合应用

场景推荐方案说明
通用后台管理系统RBAC成熟、开发成本低
SaaS多租户平台RBAC + 数据行级权限(ABAC思想)租户数据隔离
金融核心系统RBAC + PBAC合规策略满足审计要求
大数据平台ABAC 为主字段级、行级动态脱敏
超大规模互联网应用RBAC + ABAC + PBAC 分层不同场景用不同模型

五、关键结论

对比维度最佳实践
开发成本ACL < RBAC < ABAC < PBAC
灵活性ACL < RBAC < ABAC < PBAC
可维护性ACL < ABAC < RBAC < PBAC(RBAC平衡最优)
扩展性RBAC可通过"角色组"、"权限集"适度扩展,避免过早ABAC

80%的业务系统用RBAC足够,遇到数据隔离、动态规则时再引入ABAC属性,合规强需求才上PBAC。

设计模式的项目----权限管理系统   •本系统是以B/S模式架构的基于角色控制的权限管理系统,系统由本人跟标仔两人共同开发,开发工具为vs.net2003,开发语言为C#,可用于综合性网站的统一权限管理。基于解决方案的需要,主要用到了以下五种设计模式: •为了支持对不同数据库的访问,用到抽象工厂设计模式 •为了产生单一工厂,用到单件设计模式 •为用户提供统一的高层接口,封装业务逻辑,使用外观设计模式 阅读详情

相关推荐

如何给网关设计一款专属的权限控制「责任链设计模式」

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

m0_60635321的博客 460

可能是史上最全的权限系统设计

权限系统设计 前言 权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。 目前在公司负责权限这块,所以对权限这块的设计比较熟悉,公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个APP等十几个系统和终...

alex4837的博客 5770

权限设计模式【前端 RBAC】

本文基于一个真实的中后台项目落地经验,总结一套“企业级可演进”的前端权限设计模式:在后端暂时无法改造的前提下,用把“能不能进模块 / 菜单显示 / 按钮能不能点 / 弹窗能不能提交”统一收敛到一套可配置、可扩展、可测试的体系里。本文既是设计思路讲解,也给出可直接复制的实现范式(本仓库的实现为 React 版本;后续将补充 Vue/React 的可运行示例代码目录)。

weixin_42322152的博客 484

这是我见过最全的权限系统设计方案!

这是我见过最全的权限系统设计方案!

1462

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络覆盖广,对物理攻击和自然灾害有一定的抵抗性。本文根据3GPP协议对NTN网络的背景、应用场景和信道模型进行了整理。

JCMLSY的博客 4925

手把手教你用运放和基准源,把±10V信号变成ADC能吃的0-4V(附完整计算过程)

本文详细介绍了如何利用OP07运放和REF5040基准源设计工业级信号调理电路,将±10V传感器信号转换为0-4V ADC可接受范围。通过七步流程,包括需求分析、元器件选型、电路设计、理论计算、PCB布局、实测验证与性能优化,帮助工程师解决信号不匹配问题,提升系统精度与稳定性。

weixin_28731223的博客 466

vue后台项目基于RBAC实现权限管理

一、RBAC(Role-Based Access control) RBAC中文意为基于角色的权限控制,是一个权限设计思想,也就是说根据不同的用户角色,有不同的权限控制,例如权限页面,权限功能。 使用场景:登录后每个用户看到的菜单界面是不同的,操作的功能也不一样,例如老板、财务和员工,老板的级别就高级一点了,所有的菜单栏都可以访问,而财务只能看见考勤和对应的工资,而员工只能看见自己的个人信息。 这时候就产生了三个关系,分为用户、角色、权限点 用户:每个账号的人 角色:在公司中什么位置映射这有什

^_^ 8095

科研软件|Adobe Photoshop 2024 (PS 2024)

科研软件|Adobe Photoshop 2024 (PS 2024)

m0_55499682的博客 5508

设计模式-代理模式-以权限控制为例

代理模式的应用在实际中非常多,这里无法全部一一介绍,每个代理模式应用的具体实现也可能会有较大的区别,不过通过案例也可以了解到,代理模式本身相当于在客户端与目标对象直接额外增加一层关口,可以起到管控的作用也可以起到扩展的作用。

weixin_48886954的博客 253

Arm Neoverse CMN-700 SLC内存系统与缓存分区技术解析

现代处理器架构中,缓存一致性协议与内存子系统设计直接影响系统性能。Arm Neoverse CMN-700采用的SLC(System Level Cache)通过16-way组相联设计实现高效数据缓存,其物理地址索引机制支持灵活的way分区配置。在软件可配置内存(OCM)模式下,SLC可作为独立内存空间使用,通过寄存器控制实现模式切换与区域锁定。缓存分区技术则通过请求源分类和way-based分配策略,满足实时性任务与吞吐量场景的不同需求。这些技术在5G基站、边缘计算等低延迟场景中具有重要应用价值,特别是C

weixin_30263073的博客 611

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

新时代先锋的博客 7299

权限的设计模式

是一种比 RBAC更加灵活的授权模型,它的原理是通过各种属性来动态判断一个操作是否可以被允许。当用户权限分的很细的时候,几乎每个用户都对应一个角色。似乎有了ACL设计模式的样子。常见的操作包括“读取”,“写入”,“编辑”,“复制”和“删除”环境属性包含访问的时间和位置,对象的设备,通信协议和加密强度等。用户的属性包括 ID,个人资源,角色,部门和组织成员身份等。资源:资源是当前用户要访问的资产或对象,例如文件,数据,服务器,甚至 API。简单的菜单和人员直接挂钩,可以简单有效的做到每个员工访问不同的菜单。

opinion001的博客 463

别再写XPath改DOM了!用OpenClaw零代码搞定爬虫全流程(抓取+清洗+存储)

免费版的大模型调用次数有限制(每天100次),但企业版是无限的,还能私有化部署;大模型分析DOM结构有时候会慢1-2秒,但比起节省的时间,完全可以接受;自定义Skill的文档还不够完善,但社区很活跃,有问题在Discord里问,很快就能得到回复。但总的来说,OpenClaw真的改变了我写爬虫的方式——以前我是“代码的奴隶”,现在我是“需求的提出者”,把时间花在更有价值的业务逻辑上,而不是重复繁琐的DOM调试上。如果你也在被传统爬虫折磨,强烈建议你试试OpenClaw,相信我,用了就回不去了。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1313

Java设计模式—单例模式以及权限修饰符

什么是设计模式? 对问题行之有效地解决方式,其实他是一种设计思想。 1.  单例设计模式: 解决问题:保证一个类在内存中的对象是唯一的。    如何保证对象的唯一性? 1.  不允许其他程序用new关键字来创建对象。 2.  在该类中创建一个本类的实例。 3.  定义一个公有的方法,让其他程序可以获取该对象。   步骤: 1.  私有化构造方法。 2.  2.通过new在

zq771793683的博客 2430

Unity 面试篇|(四)Unity性能优化篇 【全面总结 | 持续更新】

Unity中,CPU准备好需要绘制的元素,对底层图形程序接口进行调用的过程,每次引擎准备数据并通知GPU的过程称为一次Draw Call。DrawCall越高对显卡的消耗就越大。降低DrawCall的方法:动态合批静态合批降低shader的等级特性场景优化策略——遮挡技术。rectMask2D替代Mask。

游戏开发小Y的博客 13万+

用 deepseek 写小说(通用版提示词模板)

#Initialization:作为[Role],在[Goals]下,回顾你的[Skill],严格遵守[Constraints],5.第五步:人物大纲,给小说里的每个人物撰写背景故事,深挖人物过去的经历,原生家庭,住所:一栋位于市郊的房子,有三个卧室,房龄 10 年,厨房很大,当中有一个鸟式大理石。示例 2.戈德里洛克先去了熊老爹的工作坊,尝试用大纲法写作,却发现这种方法无聊透顶,1.第一步:一句话概括,一句话概述小说内容,主要包含小说癸型,主角,以及故事中需要。大灰狼的暴行彻底激怒了戈德里洛克,

陈奕昆的博客 2967

大话《权限设计》全篇,领略不同设计模式的魅力

乘风是一家创业公司的开发人员,由于是创业公司,规模不大,研发人员也只有可怜的3人,平时面临的研发任务非常紧张。小乘,怎么财务的小红能看到运营的数据,可以让不同的人查看不同的数据嘛。乘风自信的回答道:可以的老板。公司老板找到已经是研发组长的乘风说道:小乘啊,今天早上运营给我说,他们现在每天花在分配人员权限上的时间过多,每次有人员变动、人员加入都需要重新调整权限,而且不能成批量操作,大大降低了他们的工作效率。你是研发部的负责人,你应该考虑考虑,系统的数据安全,那写人能看什么数据,能修改什么数据,要做到可调控。

那里有颗树 171

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java设计模式(二)用户、角色、权限模式,面向对象、面向接口的思想

Java设计模式之用户、角色和权限 一、定义 角色决定了用户有哪些权限 简单来说,就是通过给用户授权角色,用户就获得了属于该角色的权限。这样分配就不用分别创建不同的用户类,只需要给用户类赋予不同的角色属性就可以实现不同的用户。另外,这种模式使系统易于扩展和维护。比如当要给某一种用户增加新的权限时,只要给角色增加权限即可,不需要对若干用户对象一一操作。在实际开发中,遇到权限划分的问题,经常一般可以采用用户、角色、权限模式。 1. 权限 权限是操作,是针对行为的。一般把行为、能力抽象为接口,所以把权限也抽象为接

咕咕酱没有悲伤的博客 6215

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

针对一个系统的权限管理这样的业务场景,使用各设计模式解说

应用场景:创建一系列相关的权限对象,例如不同角色的权限集合。实现方式java// 用户只能访问公开资源 } } class AdminPermission implements Permission { @Override public boolean checkAccess(Resource resource) { return true;// 管理员有所有权限 } } class Resource { private boolean isPublic;} }

慧香一格的专栏 899

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【Java基础教程】(十八)包及访问权限篇 · 下:Java编程中的权限控制修饰符、单例设计模式 (Singleton)和多例设计模式的综合探析~

访问控制权限、单例设计模式 (Singleton)、多例设计模式介绍...

Technology changes the world of life 1107

java基础学习之访问权限与设计模式(四)

基本概念包及访问控制权限包的定义包的导入访问控制权限 包及访问控制权限 包的定义 所谓的包实际上指的就是文件夹。 定义包 // An highlighted block package com.yootk.demo; public class Hello{ public static void main(String args[]){ System.out.println("hello wo...

weixin_41283310的博客 644

基于职能的权限设计——数据库“龙”式权限设计模式

有一些系统对权限的需求比较复杂,比如法制方面的系统,一个审批表被多用户拥有,但每个用户对该表的表项有着不同的权限,有些是只读的,有些是可编写的, 而且随着业务流程的转变,表项的状态针对每个用户也发生变化,比如审批前与审批后,提交审批的人和审批人对表项的操作都要发生变化,提交前提交人可以修改 的表项,在提交后就不能修改。   为了应对这种情况,我们有必要以职能为核心设计权限。所谓职能就是职务与相关业

firstaking的专栏 1011

包和导入、权限(范围)修饰符、单例设计模式 singleton、异常—Day16

一、包和导入 关键字:package、import 包的概念:包的本质就是文件夹,是对项目中的类进行管理的。在代码中,用package明确当前类所在的包。 注:package必须出现在类的第一行 导入的概念:导入是指在一个类中,使用其他类,需要先将其他包中的类引入到本类中。 注: 1、只有其他包中的类需要导入,同包中的类不需要导入 2、java.lang包(即language语言包中的类)在使用时...

qq_39162281的博客 291

JAVA权限修饰符、单例设计模式

本文介绍了Java中的四种权限修饰符(private、缺省、protected、public)及其作用范围:private仅限本类访问,缺省允许同包访问,protected允许子类访问,public完全开放。通过代码示例展示了不同场景下的访问权限限制。此外,文章还讲解了单例设计模式的两种实现方式:饿汉式(提前创建实例,线程安全但可能浪费内存)和懒汉式(延迟创建实例,节省内存但多线程下可能不安全)。两种方式都通过私有构造、静态实例和公共获取方法实现单例特性。

2402_86604855的博客 726
上一篇: @TableField注解
下一篇: Http方法详解
fqq3
博客等级 码龄4年 114粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值