转自:http://myrss.easyjf.com/html/20060226/1140942877093115.htm
基于
ACL
的实现
<!---->
<o:p>
</o:p>
ACL
介绍
<o:p>
</o:p>
ACL
全称
Access Control List
,在
ACL
中,包含用户
(User)
、资源
(Resource)
、资源操作
(Operation)
三个关键要素。通过将资源以及资源操作授权给用户而使用户获取对资源进行操作的权限,模型如下图所示:
<o:p>
</o:p>
<!---->
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter">
</v:stroke>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0">
</v:f>
<v:f eqn="sum @0 1 0">
</v:f>
<v:f eqn="sum 0 0 @1">
</v:f>
<v:f eqn="prod @2 1 2">
</v:f>
<v:f eqn="prod @3 21600 pixelWidth">
</v:f>
<v:f eqn="prod @3 21600 pixelHeight">
</v:f>
<v:f eqn="sum @0 0 1">
</v:f>
<v:f eqn="prod @6 1 2">
</v:f>
<v:f eqn="prod @7 21600 pixelWidth">
</v:f>
<v:f eqn="sum @8 21600 0">
</v:f>
<v:f eqn="prod @7 21600 pixelHeight">
</v:f>
<v:f eqn="sum @10 21600 0">
</v:f>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">
</v:path>
<o:lock v:ext="edit" aspectratio="t">
</o:lock>
</v:shapetype>
图表
1
ACL
模型
实现方案
<o:p>
</o:p>
通过上面对
ACL
模型的介绍,可以看出
ACL
是个简单的模型,但其并未提出对于权限的继承、权限的排斥和包含的解决方案。
<o:p>
</o:p>
ACL
模型得到接受必然也是有它的理由的,现在来看看基于
ACL
模型如何来实现授权模型和权限校验部分。
<o:p>
</o:p>
l
授权模型
<o:p>
</o:p>
授权模型遵循
ACL
模型进行搭建,建立
ACL
介绍中的模型。
<o:p>
</o:p>
针对授权模型中的几个关键部分进行描述:
<o:p>
</o:p>
n
授权
<o:p>
</o:p>
根据
ACL
模型,授权动作主要经过以下几个步骤完成:
<o:p>
</o:p>
u
配置系统资源和资源的操作
<o:p>
</o:p>
按照模型维护
Resource
、
Operation
实体以及
Resource
与
Operation
的关联模型即可实现。
<o:p>
</o:p>
u
授予用户能操作的资源和资源的操作
<o:p>
</o:p>
按照模型维护用户与
Resource
以及
Operation
的关联即可实现。
<o:p>
</o:p>
n
权限的继承
<o:p>
</o:p>
在
ACL
模型中未定义权限的继承,这也是由于在
ACL
的模型中根本就没有权限继承的点,因为用户本身是不可能继承的。
<o:p>
</o:p>
在很多改良的
ACL
模型系统中,会通过给组或组织机构授权来完成,这时就出现了权限继承的点了,如组或组织机构的权限继承,那么在
ACL
模型中如何去实现这个权限继承呢?
<o:p>
</o:p>
为实现给组或组织机构进行授权,此时通常需要对上述
ACL
模型进行改造方可实现,模型重构如下:
<o:p>
</o:p>
图表
2
重构后的
ACL
模型
<o:p>
</o:p>
在对组或组织机构进行授权动作时,经过以下步骤来实现权限的继承:
<o:p>
</o:p>
u
维护当前组或组织机构中所有用户的
ACL
模型
<o:p>
</o:p>
维护当前组或组织机构和
Resource
、
Operation
的关联模型。
<o:p>
</o:p>
递规获取当前组或组织机构的父节点的
ACL
模型,并合并形成新的
Resource
、
Operation
关联列表,此时获取该组或组织机构中的用户产生用户和
Resource
、
Operation
的关联
ACL
模型。
<o:p>
</o:p>
u
维护当前组或组织机构中所有下级节点中的所有用户的
ACL
模型
<o:p>
</o:p>
递规获取当前组或组织机构的子节点,同时合并形成子节点新的
Resource
、
Operation
关联列表,之后获取子节点中的用户产生新的
Resource
、
Operation
关联列表。
<o:p>
</o:p>
在经过以上的步骤后权限的继承得以实现,在使用过程中同时发现另外一个问题,在更新组或组织机构下的用户时需要同时维护当前组或组织机构的
ACL
模型,否则会造成不同步的问题。
<o:p>
</o:p>
n
权限的排斥和包含
<o:p>
</o:p>
权限的排斥和包含在
ACL
模型中同样没有定义,通常的实现方法是定义
Operation
的自关联,维护时需增加对
Operation
自关联的维护以及在维护
User
、
Resource
、
Operation
关联时根据
Operation
的自关联产生其包含权限的
ACL
列表。
<o:p>
</o:p>
l
资源权限校验
<o:p>
</o:p>
在以上授权模型的基础上,对于操作主体能否对资源进行操作权限的判断通过
ACL
列表直接判断用户是否具有对资源进行操作的权限即可。
<o:p>
</o:p>
通常在中小型系统的做法是在用户登录时获取构成用户的
ACL
列表,以提升资源权限校验的效率。
<o:p>
</o:p>
l
数据权限校验
<o:p>
</o:p>
在
ACL
模型中未明确定义数据权限校验的实现,根据数据权限校验的需求将数据映射为
Resource
,对数据的操作映射为
Operation
,这个时候数据权限的授权模型重构为:
<o:p>
</o:p>
图表
3
数据权限的
ACL
模型
<o:p>
</o:p>
基于此模型对数据权限的授权和权限校验进行描述:
<o:p>
</o:p>
n
授权
<o:p>
</o:p>
在对数据进行授权时根据模型此时的授权对象主要有
User
、
Group
两种,授权时需要通过以下步骤来完成:
<o:p>
</o:p>
u
维护数据本身构成的
ACL
模型
<o:p>
</o:p>
维护当前数据、操作与
Group
、
User
的关联模型。
<o:p>
</o:p>
递规获取当前数据、操作的父节点的
Group
、
User
的关联模型,合并组成新的
Group
、
User
列表,根据此列表形成对当前数据进行操作的用户列表,此时更新形成
User
à
Resource
à
Operation
的
ACL
列表模型。
<o:p>
</o:p>
u
维护数据所有子节点的
ACL
模型
<o:p>
</o:p>
递规获取数据的所有子节点,同时对合并形成每个子节点的新的
Group
、
User
列表,更新子节点的
User
à
Resource
à
Operation
的
分享到:
相关推荐
标题中的“gwm.rar_doc”可能是指一个名为“gwm”的RAR压缩文件,其中包含一个名为“漫谈权限系统之基于ACL的实现.doc”的文档。这个文档标题暗示了其内容可能涉及关于权限系统的深入讨论,特别是基于访问控制列表...
在本文中,我们将讨论基于数据库的权限系统设计,重点介绍权限系统的设计思路和实现方法。 二、数据库设计 基于数据库的权限系统设计需要对数据库进行相应的设计,以满足权限系统的需求。在本文中,我们将介绍基于...
在通向架构师的道路中,设计基于数据库的权限系统是一个重要的环节。权限系统设计旨在确保系统的安全性和用户访问控制的灵活性。在这个话题中,我们将探讨如何满足特定的需求,并通过数据库表设计实现一个基础的权限...
漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...
《漫谈求生之路的AI系统》 在游戏开发领域,人工智能(AI)系统的应用日益广泛,尤其是在生存类游戏中,如《求生之路》系列。本文将深入探讨该系列游戏中的AI系统,揭示其如何为玩家带来逼真的游戏体验。 首先,...
01.漫谈兼容内核之一:Wine的系统结构.pdf 02.漫谈兼容内核之二:关于kernel-win32的对象管理.pdf 03.漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 04.漫谈兼容内核之四:Kernel-win32的进程管理.pdf 05.漫谈...
谈兼容内核之一:ReactOS怎样实现系统调用.pdf 漫谈兼容内核之二:关于kernel -win32的对象管理.pdf 漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 漫谈兼容内核之四:Kernel-win32的进程管理.pdf 漫谈兼容内核...
《信号与系统》是一门重要的工科电子类专业课程,主要研究信号的处理以及系统对信号的响应。在这篇文章中,作者用故事性的叙述方式,通俗易懂地解释了卷积、傅利叶变换以及拉普拉斯变换等信号处理中核心的概念,使得...
漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...
### 漫谈兼容内核之一:ReactOS如何实现系统调用 #### 一、引言 在讨论ReactOS如何实现系统调用之前,我们先简单回顾一下ReactOS项目的背景和目标。ReactOS是一个旨在创建自由及开源的操作系统的项目,其主要目标...
综上所述,"漫谈PFC的原理与实现"这一主题涵盖了PFC技术的核心概念、分类、工作原理、控制策略及其优点和应用。通过深入学习和理解这些内容,我们可以更好地设计和优化电力系统的电源部分,提高整体的能效和稳定性。
漫谈文化系统中的艺术.pptx
漫谈兼容内核之十:Windows的进程创建和映像装入》这篇文档中,作者毛德操详细探讨了Windows操作系统中进程创建与映像装载的过程。这篇文章主要基于《Microsoft Windows Internals 4e》一书的第六章内容,并结合作者...
《Windows之漫谈兼容内核》是一本深入探讨Windows操作系统内核的重要参考资料,它通过完整重编辑,将网络上分散的知识整合成一个清晰、单一且完整的PDF版本,为读者提供了全面而系统的理解Windows内核的途径。...
### 漫谈Wine之一:Wine的系统结构 #### 一、Wine简介及研究背景 **Wine**(Wine Is Not an Emulator)是一个兼容层,旨在允许在类Unix系统(如Linux)上运行Microsoft Windows应用程序。本文档主要探讨Wine的核心...
总结来说,“漫谈兼容内核之二十二 Windows 线程的调度和运行”涵盖了Windows操作系统中线程的创建、调度策略、执行过程和资源管理等方面的知识。理解这些概念对于优化应用程序性能、编写高效的多线程代码以及调试...
《漫谈兼容内核》是一本深入探讨操作系统内核,特别是Linux与Windows内核之间差异与共性的电子书籍。此书对于理解这两种广泛使用的操作系统核心的运作机制具有极高的价值。通过对内核的剖析,我们可以了解到操作系统...