同样,市场上也出现了专门解决这类问题的产品,称为XML安全网关。类似传统的防火墙,企业可以把它部署在网络边界上,从而对所有进出的XML数据进行保护。XML安全网关遵循包括XML和WS-Security在内的行业标准,对XML数据进行验证、加密、签名以及认证,来提供安全的基于XML的Web服务通信。此外,它还可提供防火墙功能和访问控制功能。有些产品还可以与网络管理软件集成,帮助企业降低IT管理成本,并解决依从性需求。
2.3 缺乏良好的编程模型严重威胁企业安全
对于任何应用程序来说,保护信息访问的安全都是最基本的要求。由于按 SOA 原则而构造实现的服务、应用程序以及跨组织操作所具有的松耦合特性,这种环境往往更加容易暴露现有安全实现的弱点或局限性,因此缺乏良好的编程模型将严重威胁Web服务的安全。
仅采用边界防御(如防火墙和路由器)来保护企业信息安全是不够的,因为企业必须能够随着其合作伙伴、客户和雇员之间的关系发展而建立和断绝动态的信任关系。因此,企业需要灵活的、可自定义的基础设施,以适应新要求和规章制度。要提供这种灵活性,不应简单的指望将策略生搬硬套到基础设施中,应该在服务的开发过程中建立和遵循由策略驱动的编程模型。SOA 编程模型可以确保每个服务调用都符合对请求者和服务端点均有效的安全策略。
从安全的角度来看,编程模型负责对于谁负责实现安全策略(如基础设施或应用程序)以及需要让请求者得到此信息的哪一部分等做出决策。另一方面要考虑的是调用服务的变数。服务的消费者是否通过可在订阅期间定制的选择得到了灵活性。最后,在实现安全解决方案时,还应该考虑安全工程——用于构建安全应用程序的工程方法。
3 其它SOA安全保护方法
3.1 应用程序代理
一种非常有效的保护核心系统的方法是避免让任何人直接访问提供服务的平台,可以通过为SOA中的Web服务部署一个代理做到这一点。一个受保护的代理可以代表实际的Web服务接收所有Web服务请求,并对其做出响应,从而保护Web服务免遭恶意的侵害。代理方法的另一个好处在于,它能够减轻企业安全性基础架构的负担。代理可以降低网络流量,具体方法是集中管理和缓存对Web服务请求的身份验证和授权,而不是每次用户想调用Web服务时,就在网络上使用大量消息对该用户进行身份验证和授权。代理还可以在消息中插入了身份验证和授权SAML断言,从而消除了Web服务请求者直接查询核心安全性系统的风险。
3.2 契约管理
作为主要的SOA 管理问题之一,契约管理在SOA安全性中起着举足轻重的作用。所谓契约就是用于管理Web服务使用情况的一组规则。例如,某个契约可能会规定某个特定用户有权每天调用某个特定的Web服务五百次,而且在调用过程中,服务水平必须满足特定的参数,比如所有请求都必须在2秒钟内响应。
在安全性方面,契约有助于确定SOA是否运行正常,或者由于违反安全性规则而被误用。例如,SOA拦截器把Web服务请求和响应数据发送给SOA安全管理中心,然后该SOA安全管理中心确定该请求是否满足契约。如果某个安全性行为(比如拒绝式服务攻击)使Web服务的响应速度降低到契约规定的服务水平以下,SOA安全管理中心就会警告系统管理人员有问题存在,甚至可以根据预设的策略自动采取必要的措施,比如对某些攻击请求进行阻断或限制次重要服务的使用频率等。尽管一次足够严重的攻击可以导致整个网络崩溃,但是合理的契约管理至少可以使我们得到及时的安全问题通知,从而有效地采取行动。
总之,为了应对SOA的安全挑战,需要在企业范围内(还应包括其合作伙伴)建立一套统一的安全基础设施,通过对请求者进行身份验证和对其授予服务访问权、基于基本信任模型跨Web服务请求传播安全上下文、审核重要事件,以及有效地保护数据和内容,安全基础设施帮助企业形成一套完整的保护基于组件和服务的SOA环境的结构。
所有SOA 安全的核心都是基于策略的基础设施和策略的管理。在理想的情况下,SOA 应用程序的重点在于业务逻辑、委派安全策略的实现,以及处理基础设施的信任关系。而基于 Web 服务安全规范的Web服务安全模型和方法有助于解决保护面向服务的应用程序的难题。
(责任编辑:)