摘 要:本文提出了基于SOA的属性访问控制模型,在角色中通过属性的引入,能够在相同访问控制效果下,使得角色的创建和维护工作量得到大幅度的降低。另外,通过规则的引入,能够支持角色属性,并且也能够支持工作流访问控制模型中出现的按照时间、空间、系统状态等上下文进行访问控制的需求。
关键词: SOA;属性访问控制模型;安全
1、引言
随着面向服务的架构(SOA)的广泛推广和应用,面向服务的架构下的安全性值得引起足够的重视。基于SOA的属性访问控制模型的研究具有十分重要的意义。本文探讨了基于SOA的属性访问控制模型,相对于传统的访问控制模型来说,本文提出的模型具有更多的优点,是一个很好的访问控制模型。
2、基于SOA的属性访问控制模型中的各个组成部分定义
属性(Attribute):它是角色的构成要素,也就是说,对角色在特定的观察角度上所进行的描述。例如,能够对“移动公司业务员”这一角色增加所位于的地点属性来描述其所在的分公司信息。
用户(User):U=(ul, u2, un),就是系统中所涉及的全部用户所组成的一个集合。
角色(Role ):本文提出的角色是动态的,在将角色激活之后,角色所拥有的权限才被确定,也就是说,当角色被激活的时候,它可以拥有多个不同的属性值,并且能够拥有多个不同的权限。
根据上述属性、用户和角色的定义,A,B,C分公司的移动公司业务员可以分别定义为:
移动公司业务员.Position=A
移动公司业务员.Position=B
移动公司业务员.Position=C
规则(Rules):通常情况下,在具体的权限控制的设计的过程中,一系列的因素都必须被考虑到,例如时间日期,空间位置等等。结合本文设计的基于SOA的属性访问控制模型中的角色动态性的要求,本文在角色和权限之间,将规则的概念引入进来。通过这些规则来对角色所拥有的权限进行一个动态的映射。
操作对象(Object):是权限的最终实施对象,也就是说,在对于特定的一个客体所进行的特定的一项操作中,操作对象就是这个客体。
3、基于SOA的属性访问控制模型中的规则的表述
在XML文档之内,定位信息的标准方式是XPath。通过XPath,能够在XML文档中对文本数据、各个组成部分、属性以及其他信息进行访问。XPath这种语言一方面是非常精密的,另一方面,也是非常复杂的,对于本文设计的模型中的规则的描述,可以借用XPath在定位树型结构时候的强大功能,如下所示是相关的概念:
逻辑或
@ 属性
Not 逻辑非
/ 指定角色路径
* 路径的通配符
/C/parent::*角色C的所有父亲角色
/C/child::*角色C的所有子角色
/C/descendent::*角色C的所有后代角色
/C/encestor::*角色C的所有祖先角色
/C/Cncestor-or-self角色C及其所有祖先角色
/C/descendent-or-self角色C及其所有后代角色
在移动公司中,首先定义角色移动公司业务员,该角色拥有属性Position。属性赋值在用户角色映射时能够自动完成。定义操作对象“业务清单”,为其定义属性BusinessAmount。添加“角色一规则一权限”之间的对应关系
角色:移动公司业务员
规则:
Rulel :role In/移动公司业务员/descendant-or-self(是移动公司业务员或其子角色)
Rule2:role@Position业务清单@Position
(角色位置属性与业务清单位置属性相同)
权限:操作x对象 = 写x业务清单
这样就只需要定义“移动公司业务员”一个角色就能满足需求,方便了角色的创建和维护。
为适应工作流中对于时间、空间等的限制要求,能够对规则做进一步的扩展。引入限制规则集Restricted_Rule = (Time,Position, System status}。只有当所有规则都为真时,用户才能够对指定对象进行操作。例如移动公司业务员只有在工作时间可以写业务清单,其他时间只能够对业务清单进行读操作。
Rule_Time:CurrentTime in Restricted Time
进行写操作,须保证Rule_1 ∩ Rule_2 ∩ Rule_3 ∩ Time = True
4、结束语
本文提出的基于SOA的属性访问控制模型,已经在实际的面向服务的架构的系统中得到具体的应用。通过实践发现,相对于传统的访问控制模型来说,本文提出的模型是非常可行的,能够满足面向服务的架构下的安全需求。
参考文献:
. 计算机集成制造系统, 2009,(09)