RBAC在CSD下的参考实现

简介: 序言:         权限模块是MIS系统中不可或缺的重要组成。员工在进行正常的访问前,服务器往往都需要认证员工的身份。确认员工是否授权,也就是进行访问控制。访问控制管理允许被授权的主体(个体或团体组织)对某些资源的访问,同时拒绝向非授权的主体提供服务。权限模块的逻辑模型一般形式如下:        谁(员工/角色)对什么(应用模块)是否具有某种操作的授权(授权状态:gran

序言:

        权限模块是MIS系统中不可或缺的重要组成。员工在进行正常的访问前,服务器往往都需要认证员工的身份。确认员工是否授权,也就是进行访问控制。访问控制管理允许被授权的主体(个体或团体组织)对某些资源的访问,同时拒绝向非授权的主体提供服务。权限模块的逻辑模型一般形式如下:

       谁(员工/角色)对什么(应用模块)是否具有某种操作的授权(授权状态:grant、deny、revoke等)。即who + what + how操作模型。

       目前业界比较流行的授权模型有RBAC、ACL等。本文主要阐述CSD权限控制模块的逻辑组成,童鞋们可以根据项目的实际情况和具体架构,在可维护性、灵活性、完整性等方面对目前的权限模型进行自己的灵活定制。

1. 什么是RBAC?

       关于访问控制,人们提出了各种保护数据并加以控制的安全模型,如自主访问控制(Discretionary Access Control,DAC)、强制访问控制(MandatoryAccess Control,MAC),它们通常都是基于员工-组的安全模型。而RBAC(Role-Based Access Control)具有简化管理的优越性,它更适合大型系统的管理应用。访问控制策略体现在RBAC模型里是员工-角色、角色-权限和角色-角色之间的关系。NIST(National Institute ofStandards and Technology)制定的RBAC模型体系由4个模型组成,分别是基本模型RBAC0,角色分级模型RBAC1,角色限制模型RBAC2和统一模型RBAC3。

2. RBAC模型体系简介

      2.1. RBAC0

       (1). U:表示用户集;R:表示角色集;P:表示权限集;S:表示会话集:

       (2). PR:P×R,是权限到角色的多对多指派:

       (3). UA:U×R,是用户到角色的多对多指派:

       (4). SU:S→U,会话和用户的单一映射,user(sn)表示创建会话sn的用户;

       (5). SR:S→R,会话和角色子集的映射,roles(sn)表示会话sn对应的角色集合;

       (6). 会话sn具有的权限集 P(sn)。

      2.2. RBAC1 & RBAC2

        RBAC1引入角色继承关系,(一般继承关系,受限继承关系),RBAC2模型增加了责任分离关系,它规定了角色被授予员工,或者权限被授予角色时,以及当员工在某一时刻激活某一角色时,所应遵循的强制性规则。

      2.3. RBAC3

        RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系

3.RBAC模型的实现

         这里,主要从授权模型权限校验两部分来讨论实现思路。

       3.1 授权模型

         建立如下授权模型:

       下面,针对授权模型中的几个关键部分进行一下描述:

      A. 授权

       按照RBAC模型,在授权时分为配置资源以及资源的操作、授予角色对资源的操作权限,分配角色给员工这几步来完成,其中:

       a. 资源配置以及资源的操作需要维护资源与资源操作之间的关联模型。

       b. 授予角色对资源的的操作权限需要维护资源与角色之间的关联模型。

       c. 分配角色给员工需要维护角色与员工之间的关联模型。

       d. 权限的继承通过角色的自关联完成,即角色可拥有子角色,子角色继承父角色的权限

     B. 权限的排斥与包含

       权限的排斥与包含,是通过在资源的操作权限模型中,增加自关联模型以及定义哪些资源的操作权限是排斥和包含的,在授权时可以看到同样需要维护的只是资源权限的自关联模型。

      3.2 资源权限校验

       根据上面的授权模型,在作资源权限校验的时候需要经过以下几个步骤:

       A.  判断员工所在的角色是否拥有对资源进行操作的权限;

       B. 递归遍历员工所在角色的父角色,判断是否拥有对资源进行操作的权限;

       备注:整个过程是一个递归过程,当遍历员工本身的角色找不到相应的操作权限时,开始进行父类角色的递归查找。可以看出,它和JVM加载class前进行唯一加载判断的法则有着一致的顺序:自底向下判断是否加载过(是否具有操作权限)。

        C. 数据权限的校验

       RBAC模型将数据映射为RBAC中的资源,对数据的操作则映射为资源的操作,然后将此资源以及资源的操作构成的权限授予角色,将角色分配给员工完成数据权限的授权过程。

       备注:该模型包含数据权限的继承(自关联资源模型),数据权限授予主体的多样性。

4.CSD的权限控制模型

       CSD权限控制引入了员工和组织机构之间的关联模型,但角色之间的简单继承关系带来了大量的数据冗余,下面是CSD的权限控制ER模型:

备注:

涉及到的数据表如下:

APP_USER:登录用户相关信息

APP_ROLE:系统角色表

APP_PERMISSION:系统权限表

APP_ORG:组织信息表

APP_ROLE_PERMISSION:角色和权限对应表

APP_USER_ROLE_ORG:用户在组织中具有的角色信息表

目录
相关文章
|
分布式计算 Java 数据库连接
了解Spring R2DBC的声明式事务实现机制
# Spring非反应式事务实现原理 Spring基于注解和AOP的声明式事务(@Transactional)已经是业务开发的常用工具,默认是采用同步的方式基于ThreadLocal(保存连接信息和会话信息等)实现,在具体数据库操作时就使用同一个数据库连接,并手动提交事务,保证数据正确性。 # 基于反应式的Spring事务有何不同 Spring的反应式实现是基于Reactor框架,该框架
3031 0
|
6月前
|
安全 物联网 数据安全/隐私保护
RFID技术让物业管理电动车更智能
随着短途出行对电动车需求的增长,物业管理中的电动车管理难题亟待解决。RFID技术的引入为这一问题带来了智能化变革。通过为每辆电动车配备“身份证”(RFID标签),系统可实现快速身份识别、权限管理和全程追踪,大幅提升通行效率与安全性。在停车管理方面,RFID能实时监测车辆位置,引导车主快速找到空闲车位,同时防止乱停乱放和占用禁停区域。此外,该技术还能有效追踪被盗车辆、禁止电动车或电池入户,降低安全隐患。目前,RFID电动车管理已在多个园区物业广泛应用,成为智能化管控的新趋势。
|
Docker 容器 数据格式
Docker 修改镜像源地址
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80417198 我的Docker 版本为 1.
42585 0
|
9月前
|
机器学习/深度学习 资源调度 数据可视化
YOLOv11改进策略【注意力机制篇】| 引入Shuffle Attention注意力模块,增强特征图的语义表示
YOLOv11改进策略【注意力机制篇】| 引入Shuffle Attention注意力模块,增强特征图的语义表示
469 1
YOLOv11改进策略【注意力机制篇】| 引入Shuffle Attention注意力模块,增强特征图的语义表示
|
10月前
|
XML 监控 前端开发
Spring Boot中的WebFlux编程模型
Spring WebFlux 是 Spring Framework 5 引入的响应式编程模型,基于 Reactor 框架,支持非阻塞异步编程,适用于高并发和 I/O 密集型应用。本文介绍 WebFlux 的原理、优势及在 Spring Boot 中的应用,包括添加依赖、编写响应式控制器和服务层实现。WebFlux 提供高性能、快速响应和资源节省等优点,适合现代 Web 应用开发。
1205 15
|
前端开发 数据可视化 JavaScript
🚀打造卓越 UI:2024 年不容错过的 9 个 React UI 组件库✨
本文介绍了2024年最受欢迎的9个React UI组件库,每一个都在设计、功能和定制化上有独特的优势,包括Material UI、Ant Design、Chakra UI等。这些组件库为开发者提供了强大、灵活的工具,可以帮助构建现代化、无障碍且高效的Web应用程序。文章详细分析了每个库的特点、适用场景以及关键功能,帮助开发者在项目中做出最合适的选择,无论是打造企业级仪表板还是时尚的用户界面。
1589 6
🚀打造卓越 UI:2024 年不容错过的 9 个 React UI 组件库✨
|
开发者 CDN 监控
【破局·提速】当Vaadin遇上性能怪圈:开发者的智慧较量与极速加载的实战秘籍!
【8月更文挑战第31天】本文详细介绍了优化Vaadin应用性能的方法,特别是提高加载速度的实战技巧。首先分析性能瓶颈,如服务器响应时间和数据库查询效率等;然后通过代码优化、数据分页与急切加载技术减少资源消耗;接着利用资源压缩合并及CDN加速,进一步提升加载速度;最后通过持续性能监控和测试确保优化效果。通过综合应用这些策略,可显著改善用户体验。
185 0
|
文字识别
文字识别OCR常见问题之图片识别不出来如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
624 2
Python 代码从 `.env` 文件中读取环境变量
这篇文章介绍了如何在Python项目中使用`python-dotenv`库从`.env`文件读取环境变量的详细步骤,包括安装库、创建`.env`文件、在代码中加载和读取环境变量。
|
Java 测试技术 数据安全/隐私保护
SpringBoot整合Java Mail实现Outlook / Office365发送邮件
日常开发过程中,我们经常需要使用到邮件发送任务,比方说验证码的发送、日常信息的通知等。日常比较常用的邮件发送方包括:163、QQ等,本文主要讲解Outlook SMTP的开启方式、OutLook STARTTTL的配置、如何通过JavaMail来实现电子邮件的发送等。
9990 0
SpringBoot整合Java Mail实现Outlook / Office365发送邮件
下一篇
oss云网关配置