文献标识码: A
文章编号: 0258-7998(2011)10-0131-03
网格环境跨越多个不同地点和不同自治域,每个自治域的访问控制策略和需求互不相同。大多数网格系统的访问控制是通过扩展传统的自主访问控制(DAC)、强制访问控制(MAC)或基于角色的访问控制(RBAC)而来的。在网格环境下,应用这类访问控制机制缺乏安全控制的灵活性。网格环境异构、动态和多域的特点决定了它需要易于扩展的、动态的、灵活的和细粒度的访问控制机制。
为了满足网格环境的访问控制需求,本文提出了基于XACML和SAML的动态授权访问控制模型。采用XACML来描述访问授权策略,实现策略的标准化,便于系统的扩展及不同应用系统之间的沟通,并具有很好的跨平台性。考虑到网格环境下资源的动态性,动态地为用户授予权限,实现访问控制管理。为在不同实体之间建立安全通信机制,采用安全声明标记语言SAML在不同自治域之间交换认证、属性和授权信息。
1 XACML
可扩展访问控制标记语言XACML[1](Extensible Access Control Markup Language)是由国际标准化组织OASIS安全服务协会提出的一种通用的用于保护资源的访问控制策略语言和访问决策语言。策略语言用于定义通用的访问控制需求,最终生成一个拒绝或许可的决策。访问决策语言用于设置是否允许对某些服务器资源的访问。
XACML策略机制主要由策略管理点PAP(Policy Administration Point)、策略信息点PIP(Policy Information Point)、策略决策点PDP(Policy Decision Point)和策略执行点PEP(Policy Enforcement Point)等模块构成,能够在分布式的环境中根据资源、请求者和环境属性动态地评估访问请求,并进行授权决策;XACML请求和响应格式定义了PDP与PEP之间的接口。PEP发布请求和处理响应;PDP根据资源的访问策略、请求者的属性和环境属性等,评估请求并返回一个响应。
XACML用于表示控制信息访问的规则和策略,具备可移植、可扩展、支持参数化的策略描述和多样化的策略组合。这些规则和策略与整体访问控制和保密策略的上下文的目标资源有关。其目的是定义一个XML规范来表达对互联网上的信息进行访问的策略。此规范的核心思想是围绕一个四元组<subject、object、action、condition>来定义授权策略,其中subject代表授权实体,object代表资源,action代表对资源的操作,condition是关于请求者可以对特定资源采取特定操作的先决条件的声明。
XACML策略格式如下:
<Policy>
<Target>目标</Target>
<Rule Effect= “Permit/Deny”>
<Target>目标</Target>
<Condition>执行条件</Condition>
</Rule>
<Obligations>
<Obligation FulfilOn= “Permit/ Deny”>…</Obligation>
</Obligations>
</Policy>
2 SAML框架
SAML是由OASIS制定的基于XML实现Web服务互操作的安全访问控制框架体系和协议,其框架如图1所示。SAML建立了一种独立于协议和平台的验证和授权交换机制。具有XML跨平台数据表述的特性。SAML利用XML对认证和授权信息进行编码,实现Internet环境中异构安全系统间信息的交换和处理,从而为系统间的应用提供协同的安全服务。SAML主要由两部分构成:声明和请求/响应协议。

声明是SAML的基本数据对象,是对主体(用户、角色等)的安全信息(身份、权限等)的XML描述形式,由认证授权权威机构颁发,确保其有效性。SAML定义了认证、授权和属性三种声明。认证声明描述与认证成功事件相关的信息(如认证的机构、方式和有效期等);授权决议声明描述许可权查询和检查的结果,此结果可以是接收或拒绝主体(用户、角色等)对资源的访问请求;属性声明描述与主体(用户、角色等)的认证和授权决议相关的信息(如主体的标志、所属用户组、角色、可访问的资源及权限等)。声明实际上就是一组由签发者提供的包含认证、属性和授权决议信息的集合。
请求/响应协议规定了两点间共享SAML数据所需交换的消息种类和格式,而两点间的消息传输通过与具体传输协议的绑定实现,因此可与多种标准的传输协议或XML消息交换架构相绑定(如HTTP、MIME、SMTP、FTP,以及SOAP、Biztalk、ebXML等),使得SAML具有良好的开放性和可扩展性[2-3]。SAML当前可提供使用的绑定协议是SMAL/HTTP协议和SAML/SOAP协议。例如SAML/SOAP协议说明了如何使用SOAP消息发送和接收SAML请求和响应。
3 XACML和SAML相关性分析[4]
XACML定义了一种创建进行授权决策所需的规则、策略和策略集的机制,提供了一个标准化的细粒度的访问控制决策模型,但它没有定义这些构件之间的通信协议和机制。需要SAML来定义声明、协议和传输机制。
SAML标准提供了允许第三方实体请求验证和授权信息的接口,并提供策略决策点PDP和策略执行点PEP处理用户身份验证和授权。策略决策点对用户的权限进行判断,并发出授权声明;策略执行点接收用户请求,并将通过身份认证的用户信息发送到策略决策点,并接收来自策略决策点的授权决策信息,进行访问控制的实施。
因此,XACML和SAML相结合才能提供安全的访问控制解决方案。为了更好地将XACML与SAML结合,允许PEP利用SAML请求和响应语法来完全支持XACML请求上下文和响应上下文。OASIS发布了在XACML中使用SAML的文档规范[5]。规范定义了多个SAML扩展,并且规定了XACML中各构件之间的通信格式和机制。结合SAML的XACML访问控制体系结构如图2所示。其中SAQ=SAMLAttributeQuery,SAS=SAMLAttributeStatement。

图2中有6种Query和Statement,其含义和功能描述如下:
(1)AQ(AttributeQuery):一种标准的SAML请求,用于从属性权威AA(Attribute Authority)请求一个或多个属性。
(2)AS(AttributeStatement):一种标准的SAML声明,包含一个或多个属性。这种声明用于来自属性权威的SAML响应中,或者作为一种将属性存储在Attribute Repository (属性存储器)的格式,用于SAML声明中。
(3)XPQ(XACMLPolicyQuery):一种SAML请求的扩展,用于从策略管理点处请求一个或多个策略。
(4)XPS(XACMLPolicyStatement):一种SAML声明的扩展。用于来自策略管理点的SAML响应中,或者作为一种将策略存储在策略存储器(Policy Repository)的格式,用于SAML声明中。
(5)XADQ(XACMLAuthorizationDecisionQuery):一种SAML请求的扩展,用于PEP从XACML PDP处请求授权决策。
(6)XADS(XACMLAuthorizationDecisionStatement):一种SAML声明的扩展。用于来自XACML PDP的SAML响应中;也可用于用做凭证的SAML声明中。
有了这些SAML的扩展,PDP就可以直接利用SAML形式的请求和响应与XACML的各构件之间直接通信,获取所需的信息。
4 基于XACML的授权访问控制模型
4.1 访问控制模型体系结构
基于对XACML和SAML技术的分析,建立由SAML服务器、一个或多个属性权威AA、策略执行模块、策略决策模块、策略管理模块、策略信息收集模块、XACML上下文处理模块、UDDI服务等组件组成的访问控制体系结构,如图3所示。

策略执行模块执行访问控制策略;负责监听转发访问请求并更新属性,实施策略决策模块对访问请求的授予或拒绝决定。
SAML服务器负责接收来自策略执行模块的认证请求〈AuthnRequest〉,并产生和发送相应的认证声明。SAML利用UDDI服务找到相应的属性权威;接收来自策略决策组件的属性请求〈AttributeQuery〉并转发给属性权威,接收来自属性权威的SAML属性声明,并将其转换为XACML的属性形式。
属性权威负责接收来自SAML服务器的属性请求,产生并发送相应的属性声明,包含若干〈AttributeStatement〉。
统一描述、发现和集成协议UDDI[6](Universal Description Discovery and Integration)是一套基于Web的、分布式的、为Web服务提供信息注册中心的实现标准规范;同时也包含一组使企业能将自身提供的Web服务注册,以使别的企业能够发现的访问协议实现标准。这种应用程序能够在后台自动访问UDDI目录,寻找它们需要完成业务处理的信息。UDDI服务给相应的构件提供请求服务,以便SAML利用主体身份找到相应的属性权威。
XACML上下文处理器用于将XACML核心语言与应用程序环境及其他内容隔离。XACML上下文提供了PEP与PDP之间信息交换的模式,无论应用程序的环境是XACML、SAML,还是.NET等,都能够将它们转换为XACML的上下文。使PDP对XACML请求和属性信息进行解析和判决, 而与具体的应用完全脱离,极大地提高了灵活性。策略信息收集点PIP的存在也使得XACML能实施访问请求、决策结果与决策响应之间格式的转换。
策略决策模块的主要功能是依据访问控制策略、上下文信息等对主体的请求作出授权决策。策略决策模块根据主体、资源和环境的属性,以及资源的访问策略(此策略以XACMLPolicyQuery和XACMLPolicyStatement的方式从策略管理模块获取),向SAML服务器发送属性请求〈AttributeQuery〉,获取相关授权决策所需的属性进行授权决策,并产生和发送相应的授权决策声明,包含若干〈XACMLAuthorizationDecisionStatement〉,将决策结果返回给PEP。
4.2 基于XACML的授权访问控制模型实现机制
访问发起者发起访问请求,策略执行模块从访问请求者获得访问请求,向SAML服务器发送SAML认证请求〈AuthnRequest〉。
SAML服务器对用户进行认证(用户名/口令认证或X.509证书认证等),产生并返回SAML认证声明。SAML服务器利用系统提供的UDDI服务,找到相应的属性权威(其URI)。
上下文处理模块向策略信息收集模块提出属性请求。策略信息收集模块从主体、资源、环境功能模块获取相关属性,返回给上下文处理模块。上下文处理模块将这些属性和资源信息以及请求信息做一定的处理,向策略决策模块提出包含请求主体身份、请求的资源(URI)和请求的操作等信息的授权决策请求<XACMLAuthorizationDecisionQuery>。
策略决策模块根据策略管理模块提供的策略对决策请求作出决定,并返回结果。
上下文处理模块将结果返回策略执行模块,由策略执行模块实施决策结果,向服务提供模块提交任务要求或拒绝用户访问请求。
利用XACML创建策略和规则,以SAML声明和请求/响应机制为载体,传递用户的认证和授权信息。根据主体、资源、环境的属性进行访问控制决策,动态地评估访问请求,控制信息的访问,创建更加细粒度的访问控制,具有可扩展性和灵活性的特点,同时满足网格环境下访问控制的安全性要求。
参考文献
[1] OASIS. Extensible access control markup language committee draft 04[S].2004.
[2] 钟迅科. 基于SAML实现Web服务的单点登录[J].现代计算机,2004,185(1):32-36.
[3] GROB T. Security analysis of the SAML single sign on browser/artifact profile[R]. IBM Zurich Research Laboratory Zurich, Switzerland, 2002.
[4] VERMA M.Control information access with XACML[EB/OL]. http://www.ibm.com/developerworks/xml/library/x-xacml/sidefile1.html.2004.
[5] ANDERSON. A core and hierarchical role based access control profile of XACML, version2.0, committee draft 01 [EB/OL].http://docs.Oasis-open.org/xacml/access_controlxacml-2. 0-rbac_profile1-spec-cd-01.pdf.2004.
[6] UDDI. UDDI technical white paper[DB/OL]. http://www.uddi.org/pubs/Iru_UDDI_Technical_White_Paper.pdf,2000.
