传统IT安全是基于人与设备交互,SOA强调设备与设备交互,因此SOA的安全问题面临许多新的挑战。
面向服务的架构(SOA)是一种松耦合服务模式,通过标准化的接口来联系各种形式的服务,无论服务置于何地,均能通过一种便捷而统一的方式实现相关功能,这对信息资源的二次利用和服务模式的二次重整具有极大的作用。但由于SOA向基础架构引入了许多连接,在形成一套松耦合连接的基础上,包含了大量的依赖关系。因此,SOA也会面临多方面的安全挑战。
设备与设备交互
在具体技术上,SOA是通过XML/SOAP等几种系列的标准化技术来实现的。但是围绕SOA的安全问题一直没有彻底解决的方法,其原因在于:
不同信任域的信任关系的转移和认同。业务流程可能由不同厂商的基于异构平台的多种服务组合而成,每个服务都具有各自独立的安全域。这些安全域可能由不同企业的不同部门负责管理和维护,这要求必须在SOA架构范围内建立统一的信任体系,然而这种努力确实难度极大。
不同应用服务统一、重用和共享的安全性。SOA具备来自异构系统的多样性,要求建立一个统一的安全基础设施和标准。但是目前情况是不同的应用系统有不同的认证、授权模式,协调和统一的难度大。
SOA强调设备与设备的交互,而大多数IT安全性都是基于人与设备的交互。传统的安全防御对象主要是针对人,而SOA更多地强调了设备与设备的交互,即所谓服务的互操作性,如何应对来自合作伙伴或第三方服务交互请求的威胁(大多数情况下,这些请求被人恶意利用和操纵),将是SOA安全防御的一项重要课题。身份验证和授权在这个环境中变得更加富于挑战。在未受保护的SOA中,想要阻止Web服务的未授权使用实际上是不可能的,因为,未授权用户可以非常轻松地访问Web服务,而Web服务往往存在不具备跟踪谁在使用它们或者谁被允许使用它们的固有毛病。
SOA整套架构在应用层与表示层的隔离上做得不完美,这会导致未来阶段,新的代理程序很容易寻找和利用SOA的安全漏洞,僵尸网络工具准确找到应用中的安全漏洞的概率很大,而且准确性比现在的工具高得多。总之,SOA的应用毕竟处于起始阶段,安全性还存在许多的问题。
技术策略要有针对性
为了应对SOA面临的安全问题,OASIS国际标准组织已经制定了一系列技术标准,这些标准从不同的角度匡定了SOA的安全管理规范。比如说,WS-Security,描述如何将XML加密和XML签名应用于SOAP文档或信息;WS-SecurityPolicy,对哪些人被允许访问某个服务以及访问方式做出规定,并对认证方式的类型、所需要的加密等级做出限制。
除了这些技术规范外,SOA的安全问题还可通过一些技术策略来加以应对。
首先,可在服务模块前通过SOAP解析器来解决安全问题。具体就是在Web服务消费者和Web服务之间来回传递的SOAP消息的路径中放入一个叫做"SOAP拦截器"的特殊软件块。因为其分类、监控、复制和转发包含大量数据的SOAP消息的能力,SOAP拦截器可以在SOA安全性方面发挥重大作用。
其次可以整合信任源。不同的信任源有不同的信任基础,比如通过用户名+口令、证书、生物识别,通过把这些不同信任源的信任基础统一整合到一个完整的信任库中,再通过Security Assertion标签完成信任基础的定义并明确导向。基于目前企业信息化的现状,整合到CA平台上是一个高效可行的方式,目前的问题是CA的认证比较复杂,规模和流量对SOA的影响颇大,面向政府的SOA架构可能没有太多问题,但是对于大型系统(如客票系统)可能就会相对复杂。
最后,还可以通过一系列具体的安全产品加强保护。SOA安全网关:网关为进入企业的XML流量提供了一个代理,并运用安全策略来确保某种形式的请求与验证,主要作用是对SOAP进行解析,如果SOAP中涉及encrypt标签,需指向专门的SOAP加解密设备来完成;SOA安全平台:主要提供验证和授权方面的安全支撑;SOA反病毒邮件网关,目前能够针对SOAP病毒的反病毒邮件网关还比较少,需要增加特定的SOAP协议支持才能对SOAP病毒进行防范。
总之,在企业SOA安全架构的咨询过程中,应主要把握三点内容:1,分析SOA中对信息安全性的要求,包括了信息机密性、完整性和可用性需求,通过制定表格把信息敏感性确定下来;2,具体描述SOA中的标签,通过信息的敏感性分别定义不同的SOAP安全标签;3,部署统一的SOA信任域,不同应用系统有不同的信任对象和信任方式,统一纳入到CA系统中进行信任是必要且可行的。