权限管理是计算机应用系统的重要组成部分,随着网络应用系统的规模不断扩大及其功能迅速增强,权限管理的要求和技术难度越来越高。权限管理的根本目的和要求在于合理地解决数据共享和数据安全的矛盾,并使得权限分配尽可能简捷,用户使用尽可能方便、高效。
围绕这一问题已经展开了许多理论研究,如自主访问控制(DAC)、强制访问控制(MAC)和基于角色的访问控制(RBAC)等。它们都基于访问控制矩阵模型ACM(Access Control Matrix),其基本思想是将所有的访问控制信息存储在一个矩阵中集中管理,矩阵的行表示系统中的权限主体,列表示系统中的权限对象,中间每个元素为权限主体对权限对象所拥有的访问权限。这些理论研究有力地推动了技术进步,但还需要在实践中进一步研究发展才能满足客观需要。
产品数据管理(PDM)在企业范围内为产品设计与制造提供一个并行化的协作环境,它要管理所有与产品相关的信息和所有与产品相关的过程,必须支持各类技术人员在设计和制造的各个过程中处理各种产品信息。
其项目-用户-数据之间存在着多对多的关系,数据安全的要求较高;而且在PDM系统中,随着时间的流逝,任务和过程的变化还要求用户权限能够自动地发生变化。因此,PDM的用户权限管理系统十分复杂。当前,它是PDM系统开发与实旌过程中必须大力研究的热点课题。
1 PDM系统权限管理的基本问题与特性
在PDM系统中的操作有面向实体的操作和面向功能的操作两类。实体即数据对象,包括PDM系统中的简单数据项及复杂对象(如图文档文件等)。实体的基本操作有;读、写、改、删除、复制。
面向实体的操作针对某条或某几条具体数据,但同一用户对位于同一实体列表中的不同实体的操作,其操作权限可以不同。面向功能的操作则以打开某些用户操作界面或运行系统的某些功能模块为目的,虽然也可以操作数据,但同一用户对位于同一实体列表中的不同实体的操作,其权限不可以不同。因此,PDM系统的权限控制总体上可划分为面向功能的控制和面向实体的控制两类。
在产品的整个生命周期,产品数据经过不同的设计阶段,由相关的设计人员承担不同的设计任务。为了避免数据失密和误操作,应当尽量减少用户权限,在用户权限分配过程中要遵循最小特权原则(theLeast Privilege Principle),即给每个用户分配足够且仅仅是足够的操作权限集,设计人员在接受设计任务前、设计过程中、完成设计工作后,对数据的操作要求不同,所以设计入员在不同阶段的操作权限集必须不同。而且权限的这种变化应当能够在各设计阶段的转换时及时地自动完成,这就是权限管理的动态特性要求。
综合以上分析,作者把PDM系统中权限问题,归纳为3类:功能性权限、实体性权限、状态一实体性权限,并以这种分类为基础,进一步研究PDM权限管理的模型和实现算法。
在PDM系统中,若某项操作的许可与否仅依赖于用户,即:Enabled=f(用户,操作),其值为TRUE或FALSE,则为功能性权限。功能性权限的控制通常以菜单栏或菜单项的灰或亮实现。
它常用于用户/用户组(如设计人员与企管人员)的基本工作划分与访问控制,实现权限的初级控制。功能性权限具有层次关系,子节点权限是父节点权限的延伸,授权时,如果选中某一个子节点权限,应当自动获得该子节点的父节点权限,相反,如果将某一个节点权限从选中状态变为非选中状态,则该节点权限下面的所有子节点权限都不应该选中。
在PDM系统中,若面向实体的某项操作的许可与否同时依赖于用户与实体,即:Enabled=f(用户,实体,操作),则为实体性权限。实体性权限通常表现为同一用户对同一操作界面上不同实体进行实体操作的权限不同。如图库管理中,同一技术人员对不同项目的图文档有不同的操作权限,其权限主体为用户或用户组,权限对象是图文档列表。
产品设计流程通常经过设计、校对、标审、工艺审查、批准、发布等阶段,如图1所示。实体处于流程的某一阶段,称为实体的状态。如果针对某实体的某种操作的许可与否,不仅与用户及实体有关,而且与该实体当时的状态有关,即:Enabled=f(用户,实体,状态,操作),则为状态一实体性权限。它反应了权限的动态特性。
图1 产品设计流程
例如:某图档处于设计状态时,设计人有权对其进行读、写、改、删、复制等操作:它进入校对状态时,原设计人仅能进行读操作,不能进行写、改、删、复制等操作;若校对人将该文档返回修改设计状态,则原设计人仅能进行读、写、改、复制等操作,不能进行删除操作,而校对人仅能进行读操作。
状态一实体性权限可以用三维模型的形式加以全面地表达,如图2所示。其项目轴表示不同项目数据,状态轴表示项目经过的设计、校对、标审、工艺审查、修改设计、批准、发布等状态,用户轴表示项目中的设计员、校对员、标审员、工艺审查员、批准人等角色。
项目世中的用户所具有的权限值以<操作权限列表>表示,它位于平面:项目=项目世,决定于项目K所处的状态及该用户所承担的角色。如图2所示,项目K中的设计员在项目处于“设计”状态时具有<读、写、改、删、复制>等操作权限,当项目处于“修改设计”状态时具有<读、写、改、复制>等操作权限,当项目处于其他状态时具有<读>操作权限;项目K的校对员在项目处于“设计”状态时没有权限,当项目处于“校对”状态时具有<读、写>等操作权限,当项目处于其他状态时具有<读>操作权限。
图2 状态-实体性权限
同样,标审员或工艺审查员在项目进行到标审或工艺审查状态时具有<读、写>等操作权限,之后仅具有<读>操作权限;批准人在审批时具有<读、写>等操作权限。项目发布后以上人员均只有<读>操作权限。
2 PDM系统权限管理模型的基本要素分析
权限管理模型的基本要素包含权限主体、权限对象、角色和权限及相互间的关系。
2.1 人员组织的结构及功能性权限的分配
权限管理模型的权限主体是用户及其组织形式。目前企业中人员组织的形式主要有静态组织型、动态组织型和混合型3种。
静态组织是一种人员相对固定的组织,如设计科、质管科、工艺科等,组内的人员通常完成同一性质的工作。动态组织形式通常为根据某一项目开发任务临时组织人员形成的项目组,在一个项目组中通常包括设计、工艺、标准化等多种工作性质不同的成员,项目组随着项目开发任务的完成而解体。
混合型组织形式是将前两者结合起来,即一方面每个人都属于特定的部门或专业组,由部门或专业组的负责人对其进行管理,另一方面同一部门或专业组的不同个人又参与不同的项目,在项目的进行过程中,对该项目的负责人负责。
目前大多数的企业都采用混合型组织形式。作者还采用了用户组的概念,以用户组对应用户的静态组织部门,并为每个用户组分配相应的某些功能性权限:用户和用户组有继承关系,用户继承用户组的权限,从而简化了逐个用户的授权操作,如图3所示。
图3 人员组织结构与功能性权限分配
2.2 PDM数据的存储模式与项目状态
PDM系统要处理多个项目的各种不同类型的数据(如图纸、文档、产品结构等)。它们是权限管理模型的基本权限对象,通常以文件形式存储在PDM网络服务器的3个区域:个人工作区、共享数据区、归档数据区。
而项目的设计过程通常要经过设计、校对、标审、工艺审查、批准、发布等阶段,项目处于流程的某一阶段,称为项目状态。项目中的数据的存储位置与项目状态相关联。个人工作区中的数据为用户个人所有,通常是正在设计或编制中的对象,用户对自己个人工作区中的对象具有全部的权限;共享数据区中的数据通常是处于流程中的多个项目的数据,而且一般具有不同的状态;归档数据区中则是经过批准后正式发布的数据。
共享数据区、归档数据区内的数据都可以多用户共享,它们的具体存储路径对用户透明。要求权限管理系统能够根据系统的安全政策,判别不同项目、不同状态,给各个用户提供相应的操作权限。
2.3 角色与权限
采用角色的概念可以简化用户权限分配工作。所谓角色就是在项目中各成员所承担的工作岗位。如项目组中的设计员、工艺员、标审员等。角色应具有其业务工作中所需要的全部能力和权限,由于在项目中担任不同角色的用户承担不同工作因而权限可能不同。因此,每个角色对应着一个权限集合。
在本课题中,每个项目必须有一个项目负责人,他负责从用户的静态组织中抽调成员,并逐一分配角色,使之获得相应权限。即通过项目的角色分配结合系统预先设定的各角色的权限完成用户的实钵性权限和状态一实体性权限分配。因此:用户的权限=用户所在用户组的权限。用户在该项目中担任的角色的权限。
用户所属用户组往往相对固定,但用户在不同项目中,可能担任不同角色,且如上所述,项目组中各角色的权限随项目状态变化而变化。用二维表可以表示权限管理模型,表1为一个权限管理模型示例。
表1 权限管理模型示例
3 技术实现
本项目将用户ID、姓名、口令、所属用户组等用户基本信息保存在用户-组表(表2)中,而组-组权限表(表3)以组ID做为主键并记录了该组的组权限。如上所述,组权限包含该组用户应拥有的各功能性权限,并对应于系统主菜单中的相应菜单栏。
因此,用户-组表和组-组权限表限定了各用户所能运行的功能模块。当用户登陆时,输入用户ID和口令,系统判别是否为合法用户及其所在用户组,然后根据组ID查询组一组权限表,最后按照查询得到的组权限决定系统主菜栏上的相应菜单项灰或亮,从而规定了该用户所能运行的功能模块。
状态-实体性权限的控制主要使用项目-角色-成员表(表4)、项目-状态表(表5)、角色-状态-实体权限表(表6)。当新项目创建时,在项目-状态表中添加一条记录,记录项目名称和项目ID(项目ID为主键),并由项目负责人指派项目组成员、分配角色,填入项目-角色-成员表。
角色-状态-实体权限表规定了每一角色对处于各种状态下的项目实体所拥有的实体操作权限。当某用户要求进行实体操作时,系统根据该项目的状态和该用户在该项目中的角色,查询角色-状态-实体权限表确定该用户对该项目实体的操作权限(图5)。
主要表结构见表2~表6,角色的分配与权限控制流程见图4和图5。随着项目的进展,项目-状态表中的状态值发生变化,根据角色-状态-实体权限表,用户的权限发生改变:另一方面,同一用户在不同项目中担任不同角色,操作不同项目的实体时其权限也会自动发生变化。从而实现了权限管理的动态特性要求。
表2 用户-组表
表3 组-组权限表
表4 项目-角色-成员表
表5 项目-状态表
表6 角色-状态-实体权限表
用户对PDM系统图文档库中的访问按照实体性权限的原则控制。通过查询角色-项目-成员表,当用户为原项目组成员,该用户直接具有该项目的访问权限;否则,访问必须经过有关人员批准。
图4 项目创建-完成设计过程
4 小结
作者分析了PDM系统权限管理的基本问题与特性,通过实体性权限和状态-实体性权限的采用,系统能够根据项目或项目状态的不同而自动变换权限,不仅使数据管理更加安全和灵活,而且满足了权限管理的动态特性要求。
将PDM系统中的操作分为面向功能的操作和面向实体的操作两类,面向功能的操作权限是面向实体的操作权限的基础,具有面向功能的操作权限是进行面向实体的操作的前提,而面向实体的操作权限是面向功能的操作权限的细化和技术增强。
面向功能的操作权限采用用户组的权限管理策略;面向实体的操作权限采用基于角色的访问控制(RBAC)策略,把为用户分配权限的过程分解为用户的角色分配和角色的权限认定两个阶段,并把角色分配工作交项目负责人操作。这样不仅减少了系统管理员的工作量,提高了实际工作效率,而且能够灵活地表达系统的安全策略。
图5 用户登陆及权限控制过程
根据作者对PDM系统权限管理的需求分析与建立的模型、相应的数据结构及算法,在实践中较好地实现了数据安全性、共享性、使用方便性、权限分配简捷性的要求。