`
water84222
  • 浏览: 372871 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

浅谈权限管理的对象模型和实现

阅读更多
<st1:chsdate month="7" islunardate="False" day="16" year="2003" w:st="on" isrocdate="False"></st1:chsdate><o:p> 

目录:<o:p></o:p>

1.权限管理问题的分析<o:p></o:p>

1.1权限管理简要分析<o:p></o:p>

1.2电子政务系统的权限管理<o:p></o:p>

1.3商业化应用系统的权限管理<o:p></o:p>

1.4他山之石<o:p></o:p>

2.权限管理子系统设计<o:p></o:p>

2.1权限管理子系统的总体目标<o:p></o:p>

2.2权限管理子系统的对象模型<o:p></o:p>

2.3注意与不足<o:p></o:p>

3.权限管理子系统的实现<o:p></o:p>

3.1面向对象的实现<o:p></o:p>

3.2组件层与功能层对对象的包装<o:p></o:p>

3.3整合到具体业务系统<o:p></o:p>

 

1.权限管理问题的分析<o:p></o:p>

1.1权限管理简要分析<o:p></o:p>

任何多用户的系统不可避免的涉及到权限问题,系统的使用者越多、使用者本身的社会属性或分工越复杂,权限问题也就越复杂。无疑,无论是背负复杂办公室政治关系的办工系统、包含纵向行政关系的电子政务业务系统还是用于数据业务集成的应用集成系统,都不可避免的要解决这一问题。<o:p></o:p>

我们的团队正在推动的项目是一个典型的多业务集成系统。简单的说,在这个系统中,有一个数据中心和若干具体的业务系统,各具体的业务系统在一定逻辑规则的指导下共享数据中心的数据;并且,各具体的业务系统之间也存在相互的数据和业务调用。在我们的系统构架设计中,数据中心和这些业务系统之间是一个中间层,该层容纳对数据中心数据操作的功能接口和各业务相互调用的功能接口。<o:p></o:p>

权限管理即要求实现对不同用户对上述接口不同权限的访问。<o:p></o:p>

<o:p> </o:p>

1.2电子政务系统的权限管理<o:p></o:p>

在与公司相关技术人员的讨论中,了解到公司已有的办公自动化或电子政务产品中的权限管理完全能够满足客户的要求。而且,在这些系统中,设计者将权限分为功能权限和资源权限。分管用户对系统功能项的访问和用户对系统所管理资源(如:公文、通知)的访问。<o:p></o:p>

在这些系统中的权限设计一般是在了解客户需求、和分析服务对象的内部行政关系的基础上,将系统的用户分为若干等级,每个等级赋予对系统某些功能和资源的不同访问权限。这种用户级别往往是对服务对象行政关系的直接映射(如:科长、处长)。<o:p></o:p>

<o:p> </o:p>

1.3商业化应用系统的权限管理<o:p></o:p>

IT世界里,从来都不缺少蕴涵完善权限管理的应用系统,甚至是操作系统。得益于来自Internet的资料,我们了解到这些较成熟的系统中的权限管理是通过ACL这一中间对象来实现的。<o:p></o:p>

ACL,即Access Control List。中文译名:访问控制列。ACL发挥作用的原理如下:用户、或用户组通过数据库中的访问控制表得到其ACL(可以不止一个),该ACL具有一个权限――Privilege(如:只读、读写等),同时该ACL指向某个访问项,这个访问项因所处的系统不同而不同。如:在操作系统中可能是某个文件夹,在关系数据库管理系统中可能是一个数据库,等等。实现中,用户通过ACL访问到某一具体访问项,并受该ACL所附带的权限――Privilege的限制。从而可以实现多用户对多访问项的多权限访问。<o:p></o:p>

<o:p> </o:p>

1.4他山之石<o:p></o:p>

任何设计均服务于需求,由于团队所推进的系统中服务于横向联系的多业务单位,1.2所述的传统的方法建立的访问级别在实现多维权限管理时显得缺乏灵活性。所有,团队决定利用成熟的商业化应用系统中的权限管理原理结合项目的需求来实现权限管理。也即,在我们的业务集成系统中,使用ACL管理和功能模块管理来实现权限管理。下面进入技术主题:<o:p></o:p>

<o:p> </o:p>

2.权限管理子系统设计<o:p></o:p>

2.1权限管理子系统的总体目标<o:p></o:p>

权限管理子系统实现系统的权限管理部分的功能。以用例(User Case)分析的方法,可以得出,系统的权限管理子系统满足三种主要的功能。<o:p></o:p>

A.获取访问项列表<o:p></o:p>

依据预先为用户配置好的权限设置,来获取某用户所能访问的访问项列表。<o:p></o:p>

B.访问可访问项<o:p></o:p>

用户通过访问项列表来访问某一可访问项时,权限管理子系统给予权限控制,如:许可、不许可、只读等。<o:p></o:p>

C.权限管理<o:p></o:p>

设置用户、用户组与访问项之间的访问关系,也即我们熟悉的权限指派、配置等。同时,在这个设计中,使用“用户组”来归属相同权限属性的“用户”。可见,用户组是一种与权限管理直接相关的对象,所有,用户、用户组关联管理也是权限管理子用例的一个重要组成部分。<o:p></o:p>

<v:shapetype o:spt="75" coordsize="21600,21600" stroked="f" id="_x0000_t75" filled="f" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"><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 gradientshapeok="t" o:extrusionok="f" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape type="#_x0000_t75" id="_x0000_i1025" o:ole="" style="WIDTH: 291.75pt; HEIGHT: 141pt"></v:shape>

1:权限管理子系统用例<o:p></o:p>

2.2权限管理子系统的对象模型<o:p></o:p>

参考《权限管理对象模型(简稿)》和《“XXXX(注:屏蔽商业敏感字符)”平台权限管理子系统概要设计》,已经可以看出本次权限管理设计的对象模型的产生和实现。这里为了便于交流,作简要描述。<o:p></o:p>

<v:shape type="#_x0000_t75" id="_x0000_i1026" o:ole="" style="WIDTH: 392.25pt; HEIGHT: 263.25pt"></v:shape><o:p></o:p>

2:权限管理子系统对象模型<o:p></o:p>

对象模型解释:(参考附录的名词解释)<o:p></o:p>

Function”代表系统中的可访问项,在实际应用中,可能是前述中间层的功能接口,也可能是某种业务资源,如已经生成的静态报表。具体实现时可以标签加以区别。<o:p></o:p>

ACL”代表访问控制列,连接用户、用户组、Function并拥有Privilege属性。<o:p></o:p>

Privilege”代表权限,如:禁止、只读、读写、完全控制。<o:p></o:p>

User/Group”用户,和具有相同访问属性的用户容器――用户组。之间存在多对多的关系。<o:p></o:p>

UserAccess/GroupAccess”访问关联,连接ACLUser/Group,并为其绑定权限――Privilege<o:p></o:p>

实际实现是,还需实现以下逻辑:即当一个User属性多个Group时,将通过编程的方法比对权限,使得该User获得最大的权限。<o:p></o:p>

现在我们可以回到1.2小节,看看本设计能否适应已有的电子政务系统的权限关联需求。<o:p></o:p>

1) 可以使用Function对象来作为电子政务系统的“功能项”和“资源项”的抽象,可以使用标签来区别“功能项”和“资源项”;<o:p></o:p>

2) 使用Group来模仿原有系统中的角色,使得原先用户与系统内角色之间的直接映射变为了通过Group的所属关系,并且可以为每个Group指定具体访问项的不同权限――Privilege的访问属性,便于灵活处置。也可以为简化系统,将每个Group的对应具体Function的访问权限固定,以“角色”发布。<o:p></o:p>

由此,团队认定,现在的设计可以满足普通电子政务系统的权限关联要求。<o:p></o:p>

2.3注意与不足<o:p></o:p>

该设计可以满足权限管理较复杂时的功能需求,但面对简单的业务系统显得很多余。并且,实现时需多表组合,并伴随大量管理模块的编写工作。并且,在系统实施阶段,还需要对系统进行软件配置操作。<o:p></o:p>

<o:p> </o:p>

3.权限管理子系统的实现<o:p></o:p>

3.1面向对象的实现<o:p></o:p>

在团队推进的多业务集成项目中,我们尝试使用以上的对象模型,但处于成本的考虑,我们将以上对象模型作了适当简化,取消了UserACL的直接关联,统一使用Group归组User<o:p></o:p>

在此基础上,我们进行了数据建模,用以实现权限管理的具体功能。在完成建模后,团队还利用面向对象的方法,对该子系统进行概要设计和代码设计。(请参考《“XXXX(注:屏蔽商业敏感字符)”平台权限管理子系统概要设计》),实现是,我们引入了ACLManagerGroupManager管理类,将该子系统所有的数据库操作封装在这两个类中,并将权限管理子系统所有功能以这两个类的方法的形式发布。<o:p></o:p>

<v:shape type="#_x0000_t75" id="_x0000_i1027" o:ole="" style="WIDTH: 306pt; HEIGHT: 262.5pt"></v:shape>

3:<o:p></o:p>

该部分具体是实现,如建模细节、代码设计,可以《“XXXX(注:屏蔽商业敏感字符)”平台权限管理子系统概要设计》和测试工程DataCS中查阅。<o:p></o:p>

<o:p> </o:p>

3.2组件层与功能层对对象的包装<o:p></o:p>

团队认定权限管理子系统的探索性设计应该到此为止。这样的权限管理子系统在物质上只是若干文档和几个可以相互配合工作C#类和一个测试演示工程。我们的理由是,我们已经完成对象框架的建设,在未来的具体功能实现时(假设我们的类很完美)将根据具体项目系统的要求或条件,将这些类的方法实现以不同的方式发布。如:可以将ACLManagerGroupManager包装为传统程序可用的COM,或是更时髦的.NET程序集,甚至是Web Service。对于使用Java的团队,我们会乐意他们在我们的文档的帮助下用Java重新实现我们的类设计,并包装为EJB,或Web Service<o:p></o:p>

<o:p> </o:p>

3.3整合到具体业务系统<o:p></o:p>

可以看出,团队在实现系统的权限管理子系统的路上,其实并未走完。本文作者是XP软件方法(极限编程)的拥趸,相信“计划不如变化”。故在具体到某个业务系统的权限管理实现时,还需要针对具体的需求、条件对该模型进行优化、改进甚至全部推倒!<o:p></o:p>

 </o:p>
 
分享到:
评论

相关推荐

    我收集的java权限管理资料

    浅谈权限管理的对象模型和实现主要关注如何在代码层面构建权限系统。对象模型是系统中所有实体的抽象表示,包括用户、角色、资源和权限等概念。实现这部分通常涉及到设计数据库结构、创建接口以及编写处理权限验证的...

    浅谈SQL Server 2005 OLAP基本对象的管理.pdf

    它还提供了一个基于XML的数据定义语言,用于定义多维模型和管理SSAS。 SSAS的对象管理与控制: SSAS中管理对象主要涉及多维数据集(Cubes)、维度(Dimensions)和挖掘结构(Mining Structures)。通过.NET ...

    浅谈J2EE框架和分布式网络管理.pdf

    4. 安全性:J2EE提供了多种安全机制,确保网络管理和数据传输的安全性,如认证授权、SSL加密等。 总结而言,J2EE框架以其强大的技术特性和在分布式网络管理中的优势,成为企业构建企业级应用的重要选择。J2EE框架...

    浅谈winform中实践机遇角色的权限菜单.zip

    3. **浅谈C# WinForm中实现基于角色的权限菜单.txt**:这可能是详细阐述如何在WinForm中实现RBAC的文本文件,包括代码示例和步骤解析。 4. **UpgradeLog.XML**:升级日志文件,记录了软件升级过程中的信息。 5. **DB...

    浅谈小区物业管理数据库设计说明.doc

    逻辑设计阶段将E-R图转换为关系模型,确定表结构、字段及其关系,为后续的物理设计和实现奠定基础。 在设计数据库时,通常需要考虑数据的完整性、安全性、性能和可扩展性。例如,通过设置主键和外键来保证数据的...

    浅谈使用ADO.NET和ASP.NET访问SQL Server数据库.pdf

    由于提供的【部分内容】中大部分内容均为乱码,无法从中提取出有意义的IT知识点,但是根据标题“浅谈使用***和***访问SQL Server数据库.pdf”和【描述】中的重复标题,我们可以推断出本文档的主要内容。以下将围绕**...

    浅谈SYBASE的SQL Server及其安装.pdf

    **浅谈SYBASE的SQL Server及其安装** SQL Server是由SYBASE公司开发的一种关系型数据库管理系统,它在客户/服务器架构中扮演着核心角色,支持SQL(结构化查询语言)进行数据管理和访问。本文将深入探讨SQL Server的...

    浅谈ASP.NET与SQL数据库的连接.pdf

    以下是对文档《浅谈***与SQL数据库的连接.pdf》中提到的知识点的总结和扩展。 ### ***与SQL数据库连接基础 #### *** 网站架构模式 文档开头提到***网站架构通常采用三层架构模式,其中包括用户界面层、数据访问层...

    浅谈云计算与云计算安全.pdf

    Wei J等人研究了虚拟机映像文件的安全问题,所提出的映像文件管理系统实现了映像文件的访问控制,可以检测和修复安全性违背问题。 浏览器安全是云计算用户必须面对的问题。用户使用浏览器来发送信息到网络,虽然...

    浅谈超大型Oracle数据库的基础设计和优化设计.pdf

    4. 数据库对象管理:包括表空间、表、索引等对象的合理分配和管理,以减少资源竞争和提高查询性能。 5. 安全性设计:确保数据库中的数据安全和完整性是数据库设计中不可或缺的一部分,需要在设计阶段考虑数据备份和...

    浅谈计算机软件开发的JAVA编程语言.zip

    在安全性方面,Java设计有严谨的安全模型,包括类加载器机制、访问权限控制和安全管理器,以防止恶意代码的执行。Java还支持数字签名和加密技术,增强了软件的安全性。 总的来说,Java编程语言以其强大的功能、跨...

    浅谈“三层结构”原理与用意(转)

    数据访问层负责与数据库或其它数据存储系统进行交互,实现数据的读取、写入、更新和删除等操作。它隐藏了数据存储的具体细节,为上层提供统一的接口。数据访问层通常包括ORM(对象关系映射)工具,如Hibernate或...

    浅谈如何在ASP.NET Core中实现一个基础的身份认证

    在ASP.NET Core中实现身份认证是一项关键任务,它允许我们为用户提供安全的登录功能,确保只有授权用户才能访问受保护的资源。以下是如何在ASP.NET Core中构建基础身份认证的详细步骤。 首先,我们需要理解ASP.NET ...

    (完整版)Java系统架构师面试题 (2).docx

    15. 浅谈一下负载平衡的原理? 负载平衡是一种技术,用于实现高可用性和高性能,通过将请求分配到多个服务器上来实现。 16. 怎么办理权限分派 有几种权限分派模型? 权限分派模型包括自主型接见控制、强迫型接见...

    ASP.NET3.5从入门到精通

    3.2 面向对象的C#实现 3.2.1 定义 3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET 的垃圾回收机制 3.4 使用命名空间 3.4.1 为...

    通信与网络中的浅谈物联网中RFID中间件技术及应用

    总结来说,RFID中间件是物联网技术中不可或缺的一部分,它在RFID系统与物联网其他组件之间搭建桥梁,有效地管理和处理RFID产生的海量数据,为实现物联网的智能、高效运行提供了关键技术支持。随着物联网的持续发展,...

    浅谈MVC+EF easyui dataGrid 动态加载分页表格

    模型处理业务逻辑和数据操作,视图负责用户界面,控制器接收用户输入并调用模型和视图进行交互。 2. Entity Framework(EF):EF是.NET Framework下的一个ORM(对象关系映射)框架,它允许开发者使用面向对象的方式...

    ASP.NET 3.5 开发大全word课件

    3.2 面向对象的C#实现 3.2.1 定义 3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为...

    ASPNET35开发大全第一章

    3.2 面向对象的C#实现 3.2.1 定义 3.2.2 创建一个类和其方法 3.2.3 类成员 3.2.4 构造函数和析构函数 3.3 对象的生命周期 3.3.1 类成员的访问 3.3.2 类的类型 3.3.3 .NET的垃圾回收机制 3.4 使用命名空间 3.4.1 为...

Global site tag (gtag.js) - Google Analytics