转自: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
的
分享到:
相关推荐
漫谈权限系统之基于ACL的实现.doc
通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计
漫谈求生之路的AI系统
漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...
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怎样实现系统调用
很通俗地介绍《信号与系统》的一篇文章,我就喜欢这种通俗易懂的介绍高深原理的文章
漫谈Wine之一:Wine的系统结构 漫谈Wine之一:Wine的系统结构
参考资料-(核心)漫谈PFC的原理与实现.zip
漫谈文化系统中的艺术.pptx
漫谈Wine之二:Windows的文件操作 漫谈Wine之二:Windows的文件操作
先说“卷积有什么用”这个问题。(有人抢答,“卷积”是为了学习“信号与系统”这门课的后续章节而存在的。我大吼一声,把他拖出去枪毙!)
计算机智能化网络监控系统设计与实现漫谈.docx
漫谈信号与系统入门.doc 很通俗的语言介绍
01.漫谈兼容内核之一:Wine的系统结构.pdf
漫谈Windows系统安全模式妙用全接触.doc