探索中国CIO人才现状 | 第四季调研报告
面向SOA的安全架构研究综述
2014-04-13  作者:CIO时代网 

  随着Internet的高速发展,Web服务技术得到广泛应用,面向服务的体系架构(SOA,Service-OrientedArchitecture)也受到了业界的重视。SOA以服务的形式组合完成应用功能,具有开放性、可伸缩性、松散耦合性等优点。由于部署在SOA中的服务可以访问到系统的敏感信息,因而其面临的安全问题也日益凸显。当服务可以开启一系列处理的可能性的时候,如果没有考虑足够严格的安全策略来处理安全隐患,它就有可能带来系统的灾难。安全性问题在设计SOA系统时显得尤为重要。本文旨在研究SOA架构下的安全问题,提出SOA架构的安全解决方案,保证服务资源的安全。


  1.SOA的安全性


  SOA是一种设计、开发、部署和管理服务的面向服务的体系结构。基于SOA的系统可能由不同厂商的基于异构平台的多种服务组合而成,每个服务都具有各自独立的安全域,由不同企业的不同部门负责管理和维护,所以具有跨身份和管理边界的身份转换、传播和跨技术平台的特点。在安全性上要求SOA必须建立统一的信任体系,请求者能够在服务间自由交互,系统能够随着边界的不同而自动转换请求者的身份。同时WebService能够在多个系统安全完整地进行数据交换,要共同组成一个完整的一站式服务,必须在合作伙伴之间建立可靠、安全的信任关系。SOA系统可以是跨平台、多个应用系统的服务组合,需建立统一、重用、共享安全性的安全标准及共享安全组件,例如CA认证、信道加密或安全网关等。使用者需要对SOA提供的服务进行担保,确保服务仅执行其请求的操作。


  传统的安全防御对象主要是针对人,SOA强调机器与机器的交互,而其安全性都是基于人与机器交互的威胁。如何应对服务之间交互时产生的威胁是SOA安全防御的重要方面。在未采取安全保护措施的SOA中,Web服务往往不具备跟踪服务的授权和使用状态的功能,未授权用户可以非常轻松地访问Web服务。身份验证和授权是安全保障必需的方法。SOA设计要涵盖消息级和传输级安全性,必须保护敏感信息,以安全方式暂存敏感信息,同时保证消息源的完整性。SOA系统应具有可追究性和可跟踪性,必须具有很强的服务审计能力。SOA使用者可以保存系统的操作记录,以便跟踪其用户和消息。


  1.2SOA的安全基础


  SOA强调松散耦合的分布式系统集成,SOA架构解决了开放性和重用性,其安全性是架构存在的必要保障。结合SOA架构的特点,其安全性保障应解决的安全基础问题是认证、授权、机密性和抗攻击性。因为SOA架构的访问用户的随机性和不确定性,所以需要完善的身份认证措施。SOA架构的服务是开放的、跨边界的,防止非授权组织非法获取信息,加密和访问控制是保护敏感信息实现机密性的做法。SOA架构可以是提供多个服务组合的应用,一个应用功能可能对应各个组成服务的多个操作,因此,在对SOA架构的访问授权上应提出检查各组成服务的访问控制规则。SOA架构的抗攻击性是确保攻击者不能获得应用之外的控制。


  2.安全SOA架构的构建研究


  SOA是基于服务的分布式系统的设计框架。SOA系统的安全性主要是来自内部和外部的威胁。因此,我们采用现有的WS-Security规范和混合多级访问控制机制相结合来解决SOA架构的安全问题,设计端到端的安全模型,保障整个Web服务的对话安全。


  2.1构建SOA的安全服务


  SOA是面向服务的,所以SOA可以提供安全服务的调用来保障应用系统的安全。SOA架构的安全服务可以独立运行,同时提供应用程序接口API给其他服务、应用等调用。SOA的安全服务包括消息安全和系统安全。消息安全服务是指数据的一致性、私密性服务。系统安全服务则包括认证、授权、审计等服务。所以安全服务主要解决身份认证、资源授权、数据加密、数字签名、访问控制、传输安全等问题。SOA架构的应用系统可以由安全服务来提供安全保障,应用系统只需调用安全服务,应用服务的安全处理完全由安全服务来完成。


  在SOA架构下,安全服务应提供对用户及角色的管理和控制;将服务、数据及应用等客体资源的访问、操作及控制权限分配到相应的组织、用户、角色等主体中,对资源授权进行管理;对不同请求进行身份验证及访问控制,防止对服务的非法使用,禁止非法进入系统和调用服务;提供访问主体对受限资源访问的操作轨迹、历史记录等服务,以便跟踪和发现资源访问和操作问题。


  2.2应用WS-Security安全规范


  WebService是SOA架构的主要实现技术。对WebService的安全设计需要考虑各种安全,包括消息安全、数据安全、传输安全、环境安全。对传输安全可以采用基本认证、防抵赖及加密、防火墙、虚拟专用网(VPN)等措施解决。对环境安全可以采用登录、审核、构建信任关系和通信模式等管理措施解决。消息安全和数据安全的保障采用WS-Security安全规范。由于WebService中的各角色之间是以SOAP消息进行通信的,因此为保证SOAP消息的安全,WS-Security规范制定安全令牌、XML封装、XML数字签名的安全措施。WS-Security安全令牌(SecurityToken)即在SOAP消息头中嵌入用户名和密码或X.509证书等代表Web服务请求者的身份。服务的提供者将安全令牌和数字签名相结合可以确认SOAP消息是由合法的请求者产生。WS-Security对SOAP消息进行XML封装,确保消息的机密性,即使SOAP消息被监听,监听者也无法提取出有效信息。WS-Security对SOAP消息进行XML数字签名,确保消息的完整性和不可抵赖性,使得消息不被篡改。


  WS-Security规范提供了足够灵活的基础安全机制,在标准的SOAP规范之上构建安全WebService,保障完整性和机密性。但要解决WebService应用中所有的安全问题,仍需建立一系列的安全规范,包括WebService端策略(WS-Policy)、信任模型(WS-Trust)、隐私模型(WS-Privacy)、安全会话(WS-SecureConversation)、联合信任(WS-Federation)和授权(WS-Authorization),这些规范保证已经认证传输的信息,并解决如何连接使用不同安全技术用户计算机系统的问题。基于WSSecurity提供的基本安全机制,通过各种方式联合,WS-Security可以根据WebService应用环境构建使用多种策略的更完善的安全性模型。


  2.3设计SOA的安全模型


  对WebService安全性的探索呈现出一个特点,即通过遵循WS-Security规范,数字签名、XML数字加密等WebService安全性规范,保证了端对端的SOAP消息安全性,但是如何有效实现WebService的授权和认证仍是需要解决的关键问题。SOA架构的安全性不同于传统架构。SOA架构的服务请求者可以来自不同的安全级别、不同的操作系统以及不同的复杂网络环境。


  WS-Security安全规范是WebService内部安全性实现的保障,SOA架构下的应用系统可能是多个应用的服务组合而成的,因而多个服务之间的安全访问控制是确保SOA架构安全的关键性因素之一。


  传统架构常用的访问控制模型是自主访问控制和强制访问控制。随着网络技术的发展,对传统架构访问控制提出了一系列的改进,发展出基于角色的访问控制模型、基于决策的访问控制模型、基于信任关系的访问控制模型、基于对象的访问控制模型等。但传统的访问控制模型并没有考虑访问控制主体、客体的复杂性,不能完全适合SOA架构的开放性和安全性等特性需求,无法很好地解决SOA架构的访问控制安全问题。为保证SOA架构的服务资源的授权访问及信息机密性,国际组织制定了XACML(ExtensibleAccessControlMarkupLanguage,可扩展访问控制标记语言)安全标准规范,以对SOA架构的访问控制提供一定的安全技术支撑。XACML是一种基于XML标准的访问控制策略安全规范,提供了一种标准化的SOA架构访问控制决策模型,具有通用性和分布式特性。XACML充分地考虑了SOA架构的主体、资源和环境的属性,提供一种更细粒度的访问控制机制,很好地适用SOA架构服务的异构性、动态性和复用性等特性。


  本文研究了一种混合多级的访问控制安全模型。模型的设计思想归纳如下:模型以服务的方式实现,适合于分布式的动态变化的SOA架构,能够处理主客体的异构性、动态性;能够解决SOA架构下的访问控制策略的统一性及协商性问题;根据SOA架构的服务资源细粒度访问控制的需求构建资源模型,使访问控制对象划分更为明确和具有针对性。面向服务的混合的多级访问控制安全模型的实体认证技术采用混合访问控制,即采用基于角色、策略和信任关系等多种访问控制互补的混合访问控制方法。混合访问控制方法合理地拓展用户访问资源的范围和权限。访问控制根据用于用户角色和权限执行操作;根据设定的策略阻止潜在的入侵者,防止未授权的或滥用权限的访问;采用信任度和风险度评价相结合的方法,制定访问控制的决策,建模信任关系,支持来跨区域的可信用户的访问。面向服务的混合的多级访问控制安全模型的决策依据XACML决策模型来实现。在SOA架构下,XACML决策模型定义了一种策略语言和访问决策语言,用于保护资源的访问控制,并结合基于角色的授权机制提供对资源的细粒度访问控制。混合的多级访问控制安全模型实现的是细粒度的访问控制,将SOA架构的服务及方法对应的XML树结构中的元素及元素属性都作为模型的客体,侧重于SOA架构的系统保密性,在保持SOA架构的特性的前提下有效保护系统的服务资源。模型的用户是访问控制主体,是服务的请求者。模型中的资源是访问控制的客体。可以对服务的资源建模,从而达到对资源的访问控制更加细粒度化。


  3.结语


  本文研究SOA架构的安全问题,分析传统的安全措施应用于SOA的适用性问题;在应用WS-Security安全规范的基础上,援引构建安全服务的思想,研究了混合多级的访问控制安全模型,提出了SOA架构下的安全服务方案。除访问控制的安全服务外,模型的安全服务应该在不同的应用环境中提供不同的安全模型和安全手段,执行相应的安全措施保护对象安全,这些问题的解决对模型的设计至关重要。