PDM中一种有效的访问控制方法
- 格式:pdf
- 大小:268.06 KB
- 文档页数:4
[研究・设计]收稿日期:2006207221作者简介:谈 剑(1976-),男,湖北鄂州人,武汉理工大学机电学院硕士研究生,研究方向为智能设计理论与应用。
PDM 中一种有效的访问控制方法谈 剑,黄小文,黄祥国 (武汉理工大学机电学院,湖北武汉430070) 摘 要:实现高效可靠的访问控制是构建PDM 系统的基础。
本文讨论了PDM 系统常用的访问控制模型及其优缺点,提出了一种基于角色——对象的访问控制模型,并说明了笔者在具体系统中实现该模型的设计思路、实现方法。
该方法有效地实现了PDM 系统的访问控制,增强了系统访问控制管理的灵活性和方便性。
关 键 词:PDM ;访问控制;角色;对象中图分类号:T P 393.09 文献标志码:A 文章编号:100522895(2006)04200652040 引 言产品数据管理PDM (p roduct data m anagem en t )是20世纪80年代后期发展起来的一项新的管理思想和IT 技术。
它是以产品为中心,通过计算机网络和数据库技术,把企业生产过程中所有与产品相关的信息和与产品相关过程以及相关资源进行集成化管理的技术,它支持并行设计、网络制造、敏捷制造和协同设计等多种先进制造技术[1]。
由于PDM 系统基于网络、多用户的特性以及它对数据安全性、有效性、及时性的要求使得实现高效可靠的访问控制成为构建PDM 系统的基础。
本文提出了一种有效的访问控制方法,以基于角色——对象的访问控制模型为基础,应用在笔者参与开发的天工PDM 系统中,取得了较好的使用效果。
1 PDM 系统中常用访问控制模型的分析目前PDM 系统使用的访问控制模型主要有自主访问控制模型、强制访问控制模型、基于角色的访问控制模型等。
1.1 自主访问控制模型自主访问控制模型(DA C M odel ,D iscreti onary A ccess Con tro lM odel )是根据自主访问控制策略建立的一种模型,允许合法用户以用户或用户组的身份访问策略规定的客体,同时阻止非授权用户访问客体,某些用户还可以自主地把自己所拥有的客体的访问权限授予其它用户。
自主访问控制又称为任意访问控制。
在实现上,首先要对用户的身份进行鉴别,然后就可以按照访问控制列表所赋予用户的权限允许和限制用户使用客体的资源。
主体控制权限的修改通常由特权用户或是特权用户组(管理员)实现。
1.2 强制访问控制模型强制访问控制模型(M A C M odel ,M andato ry A ccess Con tro l M odel )是一种多级访问控制策略,它的主要特点是系统对访问主体和受控对象实行强制访问控制,系统事先给访问主体和受控对象分配不同的安全级别属性,形成完整的系统授权状态。
而且,该授权状态一般情况下不能被改变,这是强制型存取控制模型与自主型存取控制模型实质性的区别。
一般用户或程序不能修改系统安全授权状态,只有特定的系统权限管理员才能根据系统实际的需要来有效地修改系统的授权状态,以保证数据库系统的安全性能。
在实施访问控制时,系统先对访问主体和受控对象的安全级别属性进行比较,再决定访问主体能否访问该受控对象。
1.3 基于角色的访问控制模型基于角色的访问控制模型(RBA C M odel ,Ro le 2based A ccess M odel )的基本思想是将访问许可权分配给一定的角色,用户通过饰演不同的角色获得角色所拥有的访问许可权。
角色可以看作是一组操作的集合,不同的角色具有不同的操作集,这些操作集由系统管理员分配给角色。
用户在一定的部门中具有一定的角色,其所执行的操作与其所扮演的角色的职能相匹配,这正是基于角色的访问控制(RBA C )的根本特征,即:依据RBA C 策略,系统定义了各种角色,每种角色可以完成一定的职能,不同的用户根据其职能和责任被赋予相应的角色,一旦某个用户成为某角色的成员,第24卷第4期2006年12月轻工机械L ight I ndustry M ach i neryV o l .24,N o.4.D ec .,2006则此用户可以完成该角色所具有的职能。
1.4 存在的问题DA C 或M A C 模型的主要任务都是对系统中的访问主体和受控对象进行一维的权限管理,当用户数量多、处理的信息数据量巨大时,用户权限的管理任务将变得十分繁重,并且用户权限难以维护,这就降低了系统的安全性和可靠性。
对于海量的数据和差异较大的数据类型,需要用专门的系统和专门的人员加以处理,要是采用RBA C 模型的话,安全管理员除了维护用户和角色的关联关系外,还需要将庞大的信息资源访问权限赋予有限个角色。
当信息资源的种类增加或减少时,安全管理员必须更新所有角色的访问权限设置,而且,如果受控对象的属性发生变化,同时需要将受控对象不同属性的数据分配给不同的访问主体处理时,安全管理员将不得不增加新的角色,并且还必须更新原来所有角色的访问权限设置以及访问主体的角色分配设置,这样的访问控制需求变化往往是不可预知的,造成访问控制管理的难度和工作量巨大。
2 基于角色——对象的访问控制模型及其实现本文提出的基于角色——对象的访问控制模型,在基于角色的访问控制模型基础上,将访问控制权限设置与对象相关联,在给用户定义角色的同时必须定义访问对象。
在这一模型中,角色仅仅是一组操作的集合,并不与对象直接关联,通过用户、角色、对象3项属性来惟一标识1项访问控制权限。
PDM 系统中的角色包括:访问者、设计者、审核者、批准者、项目负责人等。
每种角色都对应一组操作的集合,例如设计者对应的操作包括读数据对象、写数据对象、提交等,而访问者对应的操作则只有对数据的读取。
当用户被定义为某种角色,即拥有了执行该角色对应的操作的权限。
现实中一个人可以同时担任多种角色,相应地在PDM 系统中也允许给一个用户定义多种角色。
但定义角色仅仅只是设置了允许用户执行的操作,还必须同时定义操作的对象,这样才完成访问控制权限的设置。
天工PDM 系统采用三层的C S 结构,包括客户端应用层、服务器端业务逻辑层、服务器端数据层(包括数据库和电子仓库V au lt )。
系统采用SQL Server 2000作为数据库,在数据库中建立U ser 和U serRo le 2张表,分别用来保存用户设置和权限设置的数据。
U ser 表包含U ser I D 、U serN am e 、Pass w o rd 3个字段,其中U ser I D 为主键,惟一标识1个用户,U serN am e 为用户名,Pass w o rd 为经过加密的密码。
U serRo le 表包含U serRo le I D 、U ser I D 、O b ject I D 、Ro le 4个字段,其中U serRo le I D 为主键,惟一标识1项权限设置,U ser I D即U ser 表中的U ser I D ,O b ject I D 为PDM 系统中数据对象的I D ,每个数据对象都用1个O b ject I D 惟一标识,系统中的O b ject I D 是从1开始的整数,当在U serRo le 表中将O b ject I D 设置为0时表示针对全系统,Ro le 用于标识角色,为了方便使用,我们将角色映射为整数,用不同整数代表不同操作。
这样就将用户、对象、操作相关联。
然后对应这2张表创建CU ser 和CU serRo le 2个类,用于对2张表的存取操作。
每个CU ser 类的对象对应U ser 表中的1条记录,代表1位用户;每个CU serRo le 类的对象对应U serRo le 表中的1条记录,代表1项权限。
再设计CU ser M anager 和CU ser Ro le M anager 2个类分别用于用户管理和权限管理,这2个类都继承M FC 中的CO bL ist 类,类中包含1个用来存放对象指针的双向链表。
当调用CU ser M anager 中的L oad ()方法,会读取U ser 表中的每1条记录并生成相应的CU ser 对象,并将这些对象的指针插入CU ser M anager 的链表;而调用CU serRo le M anager 中的L oad (CU ser &U ser )方法,会读取U serRo le 表中与特定用户相关的每1条记录并生成相应的CU serRo le 对象,并将这些对象的指针插入CU serRo le M anager 的链表,这样就将数据库中U ser 和U serRo le 2张表的相关记录分别读入到内存中CU ser M anager 和CU serRo le M anager 2个类的实例里。
CU ser M anager 和CU serRo le M anager 2个类都采用单件模式(Singleton Pattern )进行设计,以确保内存中最多只有类的1个实例存在。
以上4个类的UM L 类图如图1所示。
开启服务器后,服务器端程序创建CU ser M anager 的实例并调用L oad ()方法将U ser 表中的记录读入该实例。
当用户在客户端进行登陆时,服务器端通过CU ser M anager 的实例调用CheckU ser (CU ser &U ser )方法,将客户端传过来的U serN am e 和Pass w o rd 与CU ser M anager 实例中的记录进行比较,如果有相匹配的记录,说明该用户是合法用户,允许登陆,同时根据该记录得到用户的U ser I D ,否则禁止登陆。
接着服务器端程序创建CU serRo le M anager 的实例并调用L oad (CU ser &U ser )方法将U serRo le 表中与该用户相关的记录读入该实例,然后将该实例发送到客户端,最后在服务器内存中删除CU serRo le M anager 的实例。
对于系统管理员来说,L oad (CU ser &U ser )方法将U serRo le 表中所有记录读入该实例,以便管理员进・66・ 轻工机械 L igh t Indu stry M ach inery 2006年第4期 图1 权限管理类图图2 设置用户权限界面行权限设置,设置用户权限的界面如图2所示;对于其他用户,Load (CU ser &U ser )方法将U serRo le 表中所有U ser I D 字段与用户U ser I D 相一致的记录读入该实例。
这样在用户的客户端内存里就有了1份保存在CU serRo le M anager 的实例中的权限表,这实际上就是与该用户相关的访问控制表(A CL :A ccess Con tro l L ist )。