要确保面向服务架构(SOA)的安全,最简单也是最常见的方案就是通过虚拟专用网(VPN)来传送服务请求。这种方案提供的安全性足以满足简单、粗粒度的要求,而且与简单对象访问协议(SOAP)、代表性状态传输(REST)及非Web服务协议兼容,甚至足以满足许多外部集成场景的要求。不过并非所有的安全场景都很简单:对比较复杂的要求和细粒度的SOA安全而言,架构师们必须大大加强规划和设计。要为SOA安全制定一套综合的策略和架构,架构师就必须考虑方方面面的安全要求、业务场景和应用基础架构,把多个产品、标准和自定义组件结合起来,形成一套灵活、稳健的 SOA安全解决方案。
至少有10类产品可以在SOA安全架构中发挥作用,它们在几个重要方面存在功能重叠。SOA和Web服务安全规范具有模块化的结构,这意味着架构师们必须针对将来使用哪些规范、何时使用这些规范作好认真规划。对安全有不同要求的业务场景可能需要结合不同的规范和产品。进一步增添复杂性的是,诸多标准和规范还没有完全成熟。所以对许多规范来说,业界在最佳实践方面还没有太多的经验可谈。架构师们可能面临另外几个挑战,包括不同的SOA基础架构、多个SOA消息交换模式、需要跨多个环境联合安全,以及一个服务调用另一个服务时,需要跨各层宣布身份。更不用说那些常见问题了,比如组织摩擦、成本和架构治理方面的难题。
正是由于这些难题,很少有企业能够事先进行投入,构建一套全面、综合的SOA安全解决方案来满足将来的所有要求。这意味着架构师面临的最终挑战是,逐渐完善综合的解决方案。为了帮助获得这种循序渐进的方案,本文介绍了一系列完整的四种解决方案模式,表明了如何把不同的产品整合到SOA安全解决方案以满足今天的要求,以及今天的解决方案如何为满足明天的要求留有一条后路。
第一种场景: 简单的VPN在短期内提供基本的解决方案。
先从第一种模式说起,有些SOA用户会遇到这种场景: 眼下他们需要迅速找到一款可以接受、尽管并非最理想的SOA安全解决方案。在这种情况下,SOA请求和响应只使用传输层安全机制来确保安全。若是SOAP 和REST,通常通过双向的安全套接层(SSL)协议来实现。若是VPN连接,那么通过公共互联网传达的请求也是机密、安全的。简单的VPN方案常常使用隐式授权(implicit authorization),通过VPN进来的任何请求都可以访问可用服务。虽然简单的VPN能支持识别每个用户身份的任务,但由于管理每个用户的证书需要庞大的管理开销,所以这种情况实际很少出现。简单的VPN常常被配置成服务使用者平台和服务平台之间的直接传输层连接——服务平台可能是应用服务器,或者是简单的Web服务环境。据弗雷斯特调研公司的一项调查显示,三分之二的SOA用户表示,单单使用简单的VPN也是确保SOA安全的一个重要手段。
方案成熟度: ★★★★☆
实施难易: ★★★☆☆
第二种场景: 基于应用服务器的方案满足审计和合规方面的要求。
第二种模式基于应用服务器的方案与第三种模式单一中介方案,都能处理对单个用户进行验证和授权的任务。基于应用服务器的方案立足于服务实现平台中的SOA安全功能,服务实现平台包括应用服务器、集成服务器、套装应用软件和软件即服务(SaaS)等平台。由于让服务平台可以根据实际最终用户来保留安全环境,这种方案便于实现高级的授权策略。它还让审计日志可以记录实际最终用户的服务请求活动,这种功能对隐私及其他法规所需的详细审计和合规来说很重要。尽管这种方案有这样的优点: 不需要现金支出来购买新的SOA专门产品,但如果用户有多个平台,所需的配置及集成工作可能会导致在工时上所花的成本相当于或超过购买及配置SOA专门产品所需的成本。
基于应用服务器的SOA安全常常会使用简单的VPN连接作为基础。这种场景可能出现的一种延伸应用包括: 使用来自单次登录或身份管理环境的SOA或应用服务器安全插件,为应用服务器上的SOA服务与身份管理产品控制的其他应用资产之间提供始终如一的安全性。
方案成熟度: ★★★★☆
实施难易: ★★★☆☆
第三种场景: 单一中介整合安全处理工作。
第三种模式是单一中介方案,这种方案把SOA安全功能全部集中到在用户的服务实现平台前的策略执行点。这就简化了 SOA安全,提供的单一解决方案(包括中介及管理工具)能够跨所有SOA服务来提供安全,至少对该中介支持的消息格式和协议来说是这样。不过要是单纯采用这种方案,服务平台实际上关闭了用户级的SOA安全功能,而改由中介来处理所有SOA安全。中介可能由几类不同产品来提供,包括SOA设备、SOA管理解决方案、企业服务总线(ESB)、面向集成的业务流程管理套件(IC-BPMS)或者是专门的SOA安全产品。
单一中介方案可能也会使用简单的VPN连接作为基础。中介负责所有SOA安全处理工作; 因而,并不要求服务平台支持任何特定的SOA安全; 这样,该解决方案就可以支持一系列广泛的服务平台。
方案成熟度: ★★★★☆
实施难易: ★★★★☆
第四种场景: 代理、分层、联合的方法提供完整的SOA安全。
属于第四种模式的SOA安全解决方案深入全面地集成,可以跨多层服务调用,确保了每个服务平台都可以访问用户的身份; 该方案还支持高级的安全场景,比如安全联合和令牌交换。如今,很少有公司接触这种解决方案,更不用说实现了。不过,随着SOA安全解决方案、标准和产品的不断成熟,加上隐私和金融法规变得更严格,高级的SOA安全解决方案会变得更切实可行(包括成本上和技术上)。而且,有些场景可能确实明确需要这种解决方案。代理、分层、联合的SOA安全解决方案会使用多种标准、集成多个产品,而且极有可能需要自定义集成,以便把各部分整合起来。
为了逐步完善SOA安全策略,IT部门在设计时,应尽可能在简单的SOA安全模式与较复杂的模式之间融入连贯性、一致性。虽然企业可能习惯于在安全方面做出妥协,以避免高级的代理、分层、联合安全策略所需的成本,但随着SOA安全日趋成熟、对网络安全的要求与日俱增,高级的安全策略会逐渐变得更容易实现、更必不可少。
方案成熟度: ★★★☆☆
实施难易: ★★★★☆
SOA安全要素
SOA安全部署最有效的地方并非像传统解决方案那样在于网关。IT人员需要结合现行的情况进行部署,并要根据企业 SOA的环境来评估决定。IT用户可以借鉴企业解决网络访问管理(WAM)问题来提高互动状态的方法来保护SOA,包括如下重点:
SOA安全网关: 网关为进入企业的XML流量提供了一个代理,并运用安全策略来确保某种形式的请求与验证。
SOA平台: 在为SOA应用提供管理的同时,平台在验证和授权方面也提供了一些基本的安全保护。
SOA容器: 最终每种应用都将直接建立自己的安全功能来保护数据安全。