`

权限系统之基于ACL实现设计

 
阅读更多
原文地址:http://www.coin163.com/java/docs/201309/d_2820039104.html



ACL 介绍
       ACL 全称 Access Control List ,在 ACL 中,包含用户 (User) 、资源 (Resource) 、资源操作 (Operation) 三个关键要素。通过将资源以及资源操作授权给用户而使用户获取对资源进行操作的权限,模型如下图所示:
用户资源操作
图表 1 ACL 模型
实现方案
       通过上面对 ACL 模型的介绍,可以看出 ACL 是个简单的模型,但其并未提出对于权限的继承、权限的排斥和包含的解决方案。
       ACL 模型得到接受必然也是有它的理由的,现在来看看基于 ACL 模型如何来实现授权模型和权限校验部分。
l         授权模型
授权模型遵循 ACL 模型进行搭建,建立 ACL 介绍中的模型。
针对授权模型中的几个关键部分进行描述:
n         授权
根据 ACL 模型,授权动作主要经过以下几个步骤完成:
u       配置系统资源和资源的操作
按照模型维护 Resource 、 Operation 实体以及 Resource 与 Operation 的关联模型即可实现。
u       授予用户能操作的资源和资源的操作
按照模型维护用户与 Resource 以及 Operation 的关联即可实现。
n         权限的继承
在 ACL 模型中未定义权限的继承,这也是由于在 ACL 的模型中根本就没有权限继承的点,因为用户本身是不可能继承的。
在很多改良的 ACL 模型系统中,会通过给组或组织机构授权来完成,这时就出现了权限继承的点了,如组或组织机构的权限继承,那么在 ACL 模型中如何去实现这个权限继承呢?
为实现给组或组织机构进行授权,此时通常需要对上述 ACL 模型进行改造方可实现,模型重构如下:

用户资源操作2
图表 2 重构后的 ACL 模型
在对组或组织机构进行授权动作时,经过以下步骤来实现权限的继承:
u       维护当前组或组织机构中所有用户的 ACL 模型
维护当前组或组织机构和 Resource 、 Operation 的关联模型。
递规获取当前组或组织机构的父节点的 ACL 模型,并合并形成新的 Resource 、 Operation 关联列表,此时获取该组或组织机构中的用户产生用户和 Resource 、 Operation 的关联 ACL 模型。
u       维护当前组或组织机构中所有下级节点中的所有用户的 ACL 模型
递规获取当前组或组织机构的子节点,同时合并形成子节点新的 Resource 、 Operation 关联列表,之后获取子节点中的用户产生新的 Resource 、 Operation 关联列表。
在经过以上的步骤后权限的继承得以实现,在使用过程中同时发现另外一个问题,在更新组或组织机构下的用户时需要同时维护当前组或组织机构的 ACL 模型,否则会造成不同步的问题。
n         权限的排斥和包含
权限的排斥和包含在 ACL 模型中同样没有定义,通常的实现方法是定义 Operation 的自关联,维护时需增加对 Operation 自关联的维护以及在维护 User 、 Resource 、 Operation 关联时根据 Operation 的自关联产生其包含权限的 ACL 列表。
l         资源权限校验
在以上授权模型的基础上,对于操作主体能否对资源进行操作权限的判断通过 ACL 列表直接判断用户是否具有对资源进行操作的权限即可。
通常在中小型系统的做法是在用户登录时获取构成用户的 ACL 列表,以提升资源权限校验的效率。
l         数据权限校验
在 ACL 模型中未明确定义数据权限校验的实现,根据数据权限校验的需求将数据映射为 Resource ,对数据的操作映射为 Operation ,这个时候数据权限的授权模型重构为:
用户资源操作
图表 3 数据权限的 ACL 模型
       基于此模型对数据权限的授权和权限校验进行描述:
n         授权
在对数据进行授权时根据模型此时的授权对象主要有 User 、 Group 两种,授权时需要通过以下步骤来完成:
u       维护数据本身构成的 ACL 模型
维护当前数据、操作与 Group 、 User 的关联模型。
递规获取当前数据、操作的父节点的 Group 、 User 的关联模型,合并组成新的 Group 、 User 列表,根据此列表形成对当前数据进行操作的用户列表,此时更新形成 UseràResourceàOperation 的 ACL 列表模型。
u       维护数据所有子节点的 ACL 模型
递规获取数据的所有子节点,同时对合并形成每个子节点的新的 Group 、 User 列表,更新子节点的 UseràResourceàOperation 的 ACL 列表模型。
在经过以上的步骤后数据权限的继承以及需求得以实现,在使用过程中同时发现另外一个问题,在更新组或组织机构下的用户时需要同时维护当前组或组织机构的 ACL 模型,否则会造成不同步的问题。
n         权限校验
u       获取操作者权限范围内的全部数据
直接通过 UseràResourceàOperation 的 ACL 列表获取所有数据。
u       分页获取操作者权限范围内的数据
直接通过 UseràResourceàOperation 的 ACL 列表分页 ( 结合数据库的分页技术 ) 获取数据。
优缺点分析
       经过上述实现方案的描述,可以看出基于 ACL 的实现的优点主要在于:
n         易用和高效的权限校验
在进行资源和数据的权限校验时只需通过通过 ACL 列表即可实现。
       缺点在于:
n         权限的继承
对权限继承不够支持。
n         复杂和低效的授权方式
在进行资源和数据的授权时非常复杂,特别是在加入权限的继承、排斥和包含后,需要在维护本身 ACL 列表的同时维护所有子节点的 ACL 列表,导致效率低下。
分享到:
评论

相关推荐

    基于部门和角色的权限管理系统的设计与实现

    ### 基于部门和角色的权限管理系统的设计与实现 #### 概述 在现代企业的信息化建设中,权限管理作为保障信息安全、规范操作流程的重要环节,其重要性日益凸显。传统的权限管理方式往往依赖于静态的角色分配,缺乏...

    安全操作系统基于ACL的自主访问控制机制的设计与实现

    ### 安全操作系统基于ACL的自主访问控制机制的设计与实现 #### 1. 引言 随着信息技术的不断发展,信息安全成为越来越重要的议题。操作系统作为计算机系统的核心,其安全性直接影响着整个系统的安全状况。自主访问...

    java web 系统权限设计 源码

    本资源提供的"java web 系统权限设计 源码"包含了完整的权限管理模型和设计方案,对于开发者来说,这是一个宝贵的参考资料。下面我们将深入探讨权限管理系统的几个核心概念和实现方式。 1. **权限管理基础** 权限...

    实现业务系统中的用户权限管理--设计篇

    用户权限管理的设计是业务系统安全性和可用性的重要保证。通过理解并应用适当的权限模型,结合业务需求,可以创建出高效、安全的权限管理体系。在实际操作中,应持续优化和调整权限策略,以适应不断变化的业务环境。

    Linux安全操作系统的设计与实现.pdf

    本文介绍了一个基于Linux操作系统的安全设计和实现,通过添加SMS/OS管理软件,实现了一个B1级安全的Linux操作系统。该系统的设计和实现主要解决了计算机系统的安全问题,确保了计算机系统中的硬件、软件及信息的机密...

    Ruby-Acl9一个Rails基于角色的授权系统

    Ruby-Acl9是一个在Rails框架下广泛使用的基于角色的访问控制库,它为开发者提供了强大的权限管理和授权功能。这个库的出现使得在Rails应用中实现复杂的权限控制变得更加简单和直观。Acl9的设计理念是通过定义角色...

    用户权限管理设计与实现

    在本文中,我们将深入探讨用户权限管理的设计与实现,基于提供的文件名"实现业务系统中的用户权限管理--设计篇.docx"和"实现业务系统中的用户权限管理--实现篇.docx"来解析这一主题。 首先,我们要理解用户权限管理...

    基于访问控制列表机制的Android权限管控方案.pdf

    为解决这些问题,研究人员引入了访问控制列表(ACL)机制,设计了一种基于 ACL 机制的 Android 细粒度权限管控系统。 该系统可以根据用户的策略动态地设置应用程序的访问权限,避免恶意代码的访问,保护系统资源。...

    web系统权限设计书(内有详细数据库设计分析)

    在IT行业中,权限设计是构建安全、高效web系统的关键组成部分。本资料集“web系统权限设计书”深入探讨了这一主题,提供了详细的数据库设计分析,旨在帮助开发者和系统架构师理解并实施有效的权限管理和角色控制策略...

    权限设计VSD

    综上所述,权限设计VSD文件可能包含了用Visio绘制的权限系统设计图,用于清晰展示权限结构、角色关系以及访问控制策略。理解和实施良好的权限设计对于任何IT系统都是至关重要的,因为它直接影响到系统的安全性、效率...

    基于SSM框架权限系统的开发

    本项目聚焦于“基于SSM框架权限系统的开发”,这是一个常见的企业级解决方案,结合了Spring、Spring MVC和MyBatis三个强大的Java框架,用于构建高效、可维护的Web应用程序。 1. **Spring框架**:Spring作为核心容器...

    操作系统课程设计--模拟文件管理系统

    操作系统课程设计中的模拟文件管理系统(FMS)是一个重要的学习实践项目,它涵盖了操作系统核心功能之一:文件管理。在这个系统中,学生将学习如何构建一个能够处理多用户环境、权限控制、文件操作以及用户友好的...

    基于RBAC的权限设计模型

    基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限设计模型是一种广泛采用的解决方案,它有效地解决了权限分配的问题,提高了系统的灵活性和可管理性。下面我们将详细探讨基于RBAC的权限设计模型...

    很经典的略通用的权限系统源代码

    《权限系统设计与实现——基于C#的通用框架》 在IT行业中,权限管理系统是构建安全、高效软件应用的关键组成部分。本资源“很经典的略通用的权限系统”提供了一个使用C#语言编写的通用权限系统源代码,适用于多种...

    权限设计原理(原创)

    权限设计是构建安全、高效系统的关键环节,它涉及到用户对资源的访问控制和操作限制。前言部分强调了权限设计的重要性,指出在信息化社会,保护数据安全和隐私成为不可忽视的任务。目标是建立一套灵活、可扩展且易于...

    网上的权限系统的设计的搜集

    在IT行业中,权限系统的设计是构建安全、高效应用...综上所述,权限系统的设计涵盖了多个方面,包括模型选择、原则遵循、实现技术以及面临的挑战。理解并熟练运用这些知识对于构建安全、高效的Web应用程序至关重要。

    权限设计原理

    前言部分可能阐述了权限设计的重要性,目标可能指明了设计权限系统要达到的效果,如保护敏感信息,确保操作合规,而现状可能分析了当前权限设计存在的问题和挑战。 接下来,书中深入讨论了权限设计原则。原则简述...

    PHP权限管理系统源代码

    8. **权限控制策略**:权限系统可能使用ACL(Access Control List)或RBAC模型。ACL允许为每个个体指定权限,而RBAC则更侧重于角色,简化了权限管理。 9. **模板引擎**:为了使视图层更具可维护性,可能使用了如...

Global site tag (gtag.js) - Google Analytics