分析:传统安全措施为何不适用于SOA

      目前有许多企业使用面向服务体系架构(SOA)来提高应用软件的灵活性,让系统集成的管理更加简单易用,同时降低研发成本和优化技术系统与业务流程的结合。面向服务体系架构的过人之处在于它能将企业的IT基础架构划分为各种服务,每个部分都能由用户和服务来实现业务流程。

      举例来说,一项服务可能要将新进员工添加到企业内部的员工薪水册和奖金系统。为了让服务能在多重相关系统中关联起来,同时还要降低成本和提高流程的连贯性,每项服务都应该提供一份说明来详细阐述服务如何使用,都包括那些功能等。

      但面向服务体系架构的安全维护与目前多数企业使用的传统安全措施是不同的。面向服务体系架构是各种服务应用软件的混合体。对于面向服务体系架构的安全保障,我们要让它具备更多的灵活性的同时,也能提高其防范风险的安全性能。

      服务合同成为泄密渠道

      要考虑到一项典型的服务如何在面向服务体系架构上执行:用户和服务是通过企业服务总线连接起来的彼此来传递信息。企业服务总线为企业充当了信息的传递通道。企业服务总线要了解可用的服务,他们的语义,以及如何实现应用信息从一个点传递到另外一个点。在企业服务总线上的每项服务都必须使用企业服务总线的彼岸准信息传递协议(即通常所说的SOAP)来设定。

      为了让服务更加易于使用,每项服务都必须都自我描述的方式来向用户说明这项服务如何使用。这种描述被称为服务合同,最常使用的描述语言是网络服务描述语言(Web Service Description Language)。服务研发时使用的共用合同的规则很少会像面向服务体系架构这样严谨。在多数面向服务体系架构中,每项服务都有自己供用户查询和找回合同的方法。这种找回合同的方法通常也是标准化的,它不是由应用软件框架厂商来提供的,就是由面向服务体系架构从业者提供的。

      这种标准化的合同和合同找回的方法让面向服务体系架构更加公开化,这也无形中让面向服务体系架构增加了新的安全风险。

      这种免费提供的合同对研发人员的帮助很大,因为他们可以用它来创建新的服务和重新启用企业内部现有的服务。但不幸的是,研发人员所做的努力也同样帮助了攻击者,他们会借机了解企业和服务。攻击者会收集这些合同,然后利用这些合同轻而易举的就能创建企业内部的寻宝图。为了甄别那些高价值的攻击目标,攻击着会利用这张寻宝图和查阅那些对高价值服务(比如安全管理)有关的服务合同,寻找其中的薄弱攻击点。

      面向服务体系架构会尽量采取安全保障来阻止攻击者通过对服务合同的匿名攻击来创建这种寻宝图。尽管安全决策是严密的,但并非所有的服务和所有的企业都是这么去实施的。这是因为通过对服务合同分配的限制,就增加了合法用户找到合同的难度,研发工具与服务合同无缝导入的可能性也因此变小。

      信息层安全为攻击者提供了可趁之机

      具有讽刺意义的是,信息层安全的使用也成为导致面向服务体系架构攻击的潜在因素。信息层安全能帮助研发人员来使用和选择部分需要传递和加密的信息。为了给企业服务总线的选址和路径提供支持,信息的目的地通知通常不在信息加密部分之列。可选的加密措施与其他点对点或者传输层安全协议是不同的,比如SSL就能保护整个连接网络。

      通过信息层安全,监控网络的攻击者会获取在发送者和接受者之间传输的应用层信息的更多内容。可选的应用层安全也加重了研发人员实施安全保障的复杂性,也增加了管理员无法对部分既定信息应用关键性安全保护的概率。

      服务信息的泄露在某些环境下可能风险性不大,但也不能轻视。攻击者知道的越多,攻击的目标就会越多。在面向服务体系架构之前,不同的系统使用不同种类的协议会让服务本身不那么容易暴露。攻击者要想发现和了解一个应用环境下的所有系统并非易事。面向服务体系架构打破了这些障碍,为攻击者对系统的全面窥视提供了可趁之机。

      信息中介的应用增加了潜在的攻击目标

      面向服务体系架构让系统从单晶电路软件向独立模式的转变更为灵活了,它让用户按照需求来重新配置系统组件成为可能。为了管理这些组件,面向服务体系架构鼓励使用信息路由器和服务注册表来实现信息在企业服务总线上的传递。对于能运行信息的信息路由器而言,部分信息必须进行加密,或者信息路由器必须有权来对信息解密。这种方法意味着你不能使用在服务提供商与服务消费者之间的传输层安全。它也意味着攻击者能使用这些信息管理和中介来危及终端行为的安全。

      乍看起来,你可能会认为无阻碍的传输路径信息与通过SSL这样的协议来保护的IP和TCP协议没什么不同。但是他们是有区别的:SSL提供的中介几乎不包含传输信息的内容,你也别指望这个中介能保证传输的信息是完全加密的。但是面向服务体系架构更易于被入侵,经常在有有效签名的情况下自行修改信息。当攻击者试图改变面向服务体系架构环境时,这种操作窗口就成为攻击者使用的工具。

      确实网络服务安全(WS-Security)能够为信息安全提供类似SSL这样的保障。但网络服务安全标准的灵活性和复杂性都增大了信息的风险,这些信息里包含的敏感内容将无法得到正确的加密或者完全的保护。

      同样,服务注册表也是面向服务体系架构使用的一个有风险性的中介。对于服务来说他们和域名服务器是类似的。当服务的消费者希望找到合适的服务提供商,消费者将会查询服务注册表来寻找提供商目前的地址。在很多配置下,服务注册表能由系统管理员或者提供商自己来进行动态升级。这对于面向服务体系架构的好处是能随着服务变动而导致的服务地址变迁一起来轻松实现重新配置。

      但这种配置控制也让服务注册表成为攻击者喜欢攻击的目标。举例来说,攻击者能利用注册表将服务返回到由攻击者指定的地址。如果攻击者的目标是正确的服务,比如安全服务,攻击者可能就会对想要使用安全服务的用户做出自定义的反馈。在用户的配置中,黑客可以攻击安全服务,对所有的访问请求都表示许可,让安全服务形同虚设。

      为了配置安全和动态的面向服务体系架构,研发人员和架构师必须考虑系统的那个部分要实现动态,那个部分要保持静态。面向服务体系架构的配置元素必须设置将攻击者拒之门外的安全门槛。

      企业服务总线之间的通讯给了攻击者新的切入点

      位于任何面向服务体系架构的中心位置的都是企业服务总线,它负责处理信息传输和提供所需的基础服务。通常,企业会有几条企业服务总线,通过桥连接在一起。

      无论你是有一条企业服务总线还是几条企业服务总线,企业服务总线的用户都是消除传统的"软"防火墙,这就让企业服务总线成为攻击的目标,特别是因为它托管着关键服务,比如登录和身份鉴定等。当所有相连的部分不是使用同一个协议互通时,"软"防火墙是对这些互联通讯人为采取的限制。因此即使攻击者进入了一个系统,没有可兼容的协议它也无法实现攻击。举例来说,能危及网络服务安全的攻击者可能无法伤害大型机,因为大型机使用的是令牌网(Token Ring),但使用在两者之间没有桥连接的TCP/IP网络的网络服务器就无法幸免了。

      企业服务总线的设计能消除互联通讯的障碍,这意味着在面向服务体系架构中来自网络服务器的攻击也会伤及大型机。同样的互通性无形中也为攻击者提供了帮助。

      企业服务总线的高连通性提高了稳定内部,外部和企业服务总线服务应用软件安全进程的重要性。传统的连接方式对诸如大型机到企业服务总线这样的系统保护是非常有限的,在此之前,他们的安全层都要确认系统可以在其他环境中运行。从攻击者的角度去考虑在面向服务体系架构中执行的新兴互联通讯环境,尽量避免攻击者从被攻击服务器上去传染其他的关联系统。要设计缓冲计划来控制和阻止这种传染。

      面向服务体系架构这样的灵活系统是对安全极大的挑战,但如果从开始阶段你就采取了正确的步骤,安全保障并非不可实现。