首页 > 其他分享 >系统权限的设计与实现

系统权限的设计与实现

时间:2024-08-20 10:39:19浏览次数:5  
标签:ABAC 菜单 角色 模型 系统 用户 设计 权限

1.前言

现在的系统,对于权限来说,都是非常重要的,不同的用户看到的功能不一样,拥有的操作权限也不同。这些都可视为是动态的,那么就不能在代码中固定某些权限,而是需要通过设计动态权限来实现。

目前常用的模型有两种:

1)RBAC模型

基于角色的访问控制(Role-Based Access Control,简称 RBAC),是指通过用户的角色(Role)授权其相关权限,来实现灵活的访问控制。

2)ABAC模型

基于属性的访问控制(Attribute-Based Access Control,简称 ABAC),是一种比 RBAC模型 更加灵活的授权模型,原理是通过各种属性来动态判断一个操作是否可以被允许。

2.RBAC模型

2.1基本说明

对于此模型,如下图:

 

将菜单权限分配给不同的角色,再将角色分配给用户,可实现拥有相同权限的用户只分配角色即可。通过这种 用户 -> 角色 -> 权限 之间的关系,可基本解决系统中功能权限的分配使用,其中数据库表设计见下一小节。但遇到更为复杂的数据权限时,此方式已无法支撑,需使用ABAC模型。

2.2数据库表设计

声明:系统表以"s_"开头,业务表以"b_"开头,下表只以设计为主进行参考。

E-R图如下:

用户、角色、菜单之间都是多对多的关系,因此需要使用中间表来记录相互之间的对应关系。

对于用户-角色,可在用户中进行角色的分配,也可在角色中反向授权拥有此角色的用户;

对于角色-菜单,可在角色中对其分配所拥有的菜单权限即可;

对于用户-菜单,可在用户中直接分配所需菜单权限。用户若同时分配了角色和菜单权限,那么用户最终所拥有的权限是两者权限的并集。

【1】菜单表(s_menu)

 

 【2】角色表(s_role)

【3】用户表(s_user)

【4】角色菜单关联表(s_role_menu_rela)

【5】用户角色表(s_user_role_rela)

【6】用户菜单表(s_user_menu_rela)

 

3.ABAC模型

 3.1复杂业务场景权限控制

对于复杂的业务场景,权限控制是必须的,但也是尤为复杂的,先看下面几个例子:

1)先有开发部A,下有三个小组,分别是A1、A2、A3;开发部B,下有二个小组,分别是B1、B2。那么A部门经理可查看A1、A2、A3的数据,不能查看B1、B2的数据,要想查看需向B部门经理申请;同时小组A1的成员只能查看A1的数据,不能查看A2、A3的数据,同理要想查看需向A2、A3组长申请。

2)用户只能对2022年3月1日后的订单数据有操作权限,在此之前的订单只有查看权限。

3)早上10:00前禁止A部门的人访问系统,其他部门需正常使用。

4)本月3号,除了杭州以外的同事禁止使用超级管理员登录系统;本月5号,除了上海以外的同事禁止使用超级管理员登录系统;本月15号,除了北京以外的同事禁止使用超级管理员登录系统;下个月1号系统升级完成,所有同事可使用超级管理员登录系统。

 以上这些例子,对于功能权限已不再适用,必须使用数据权限进行控制

3.2ABAC原理

在 ABAC模型 中,一个操作是否被允许是基于对象、资源、操作和环境信息共同动态计算决定的。

  • 对象:对象是当前请求访问资源的用户。用户的属性包括ID,个人资源,角色,部门和组织成员身份等
  • 资源:资源是当前用户要访问的资产或对象,例如文件,数据,服务器,甚至API
  • 操作:操作是用户试图对资源进行的操作。常见的操作包括“读取”,“写入”,“编辑”,“复制”和“删除”
  • 环境:环境是每个访问请求的上下文。环境属性包含访问的时间和位置,对象的设备,通信协议和加密强度等

ABAC模型 的决策语句的执行过程中,决策引擎会根据定义好的决策语句,结合对象、资源、操作、环境等因素动态计算出决策结果。每当发生访问请求时,ABAC模型 决策系统都会分析属性值是否与已建立的策略匹配。如果有匹配的策略,访问请求就会被通过。

 

 

参考:https://juejin.cn/post/7109812135856881694。

标签:ABAC,菜单,角色,模型,系统,用户,设计,权限
From: https://www.cnblogs.com/zys2019/p/16460578.html

相关文章

  • springboot留守儿童爱心网站-计算机毕业设计源码04163
    目 录1绪论1.1研究背景与意义1.2国内外研究现状1.3论文结构与章节安排2 留守儿童爱心网站分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用......
  • springboot安卓医药个体诊疗平台-计算机毕业设计源码01880
    目 录1绪论1.1选题背景和意义1.2国内外研究现状1.3论文结构与章节安排2 安卓医药个体诊疗平台系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 操作可行性分析2.1.3 法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 ......
  • 短URL服务设计
    引言在营销系统里,为了增加系统的活跃用户数,经常会有各种各样的营销活动。这类活动几乎都是为了充分利用存量用户的价值,促使他们分享产品或App以达到触达到更多用户的目的。又或者是出于营销目的,群发优惠券触达短信这种场景。分享App活动页(或其他各种页面)时URL一般会带有各种参数......
  • springboot校园网络通信系统-计算机毕业设计源码01829
    摘要在当今信息时代,高效的校园网络通信系统对于促进学术交流、管理学生信息和提高教学质量至关重要。该系统基于SpringBoot框架旨在构建一个高效的信息管理平台,为学生、管理员和教师提供全面的学术和管理功能。系统为学生提供首页、公告消息、校园资讯、课程信息、个人首页......
  • Java计算机毕业设计的学生宿舍管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着高等教育规模的不断扩大,学生宿舍作为学生日常生活与学习的重要场所,其管理水平直接关系到学生的生活质量与校园安全。传统的学生宿舍管理方式往往......
  • java计算机毕业设计中华美食菜谱系统设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在中华大地,美食文化源远流长,博大精深,每一道菜肴都蕴含着丰富的历史底蕴与地方特色。随着信息技术的飞速发展,人们获取信息的方式日益多样化,但如何在浩......
  • java计算机毕业设计校园招聘管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及与就业市场的日益竞争激烈,校园招聘已成为连接企业与高校人才的重要桥梁。然而,传统的校园招聘模式往往面临着信息不对称、流程繁琐......
  • java计算机毕业设计疫情期间的物业管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在新冠疫情全球蔓延的背景下,社区作为疫情防控的第一线,其管理水平与效率直接关系到居民的健康安全与社会的稳定。传统物业管理方式在面对突发公共卫生......
  • 计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析
    基于Spark的TapTap游戏数据分析系统技术栈:  -python  -django  -scrapy  -vue3  -spark  -element-plus  -echarts   功能板块:0.爬虫模块:  通过scrapy抓取taptap游戏网站数据,从分类页开始抓取全站游戏的数据1.首页......
  • 9k star 监控系统,100% 国产,推荐了解
    前言监控系统的重要性不言而喻,国内用的最多的应该是Zabbix和Prometheus,其优缺点:Zabbix是资产管理式,监控数据存在数据库中,擅长设备监控,不擅长微服务和云原生环境的监控;推出时间较早,社区活跃度较高Prometheus是云原生环境的监控利器,支持多维度的指标数据,自研存储引擎,但是告......