任务:消息: 使用 WebSphere MQ Advanced Message Security 进行端到端加密

以前,IBM® WebSphere® MQ 等中间件在可信内部网中运行,安全模型非常依赖外围网络保护。但是现在,外联网和 VPNs 正在模糊外围网络的界限,攻击者经常侵入防火墙。IBM WebSphere MQ Advanced Message Security 扩展了 WebSphere MQ 基础产品提供的功能,在消息层面上包含了安全性。这实现了一个更精细的安全模型,帮助实现了法规遵从性;例如,在实现一个 Payment Card Industry Data Security Standard (PCI-DSS) 合规性解决方案时。本文介绍 WebSphere MQ Advanced Message Security 如何帮助您改善消息传递安全性。 本文来自于 IBM WebSphere Developer Technical Journal 中文版

T.Rob Wyatt, 高级管理顾问, IBM

T.Rob Wyatt 是一名高级管理顾问,主要负责 IBM Software Services for WebSphere。他帮助客户管理、设计和保护 WebSphere MQ。他的前几篇文章介绍 WebSphere MQ 管理方面的内容,发布在 IBM WebSphere 开发人员技术期刊 上。他出席过 IMPACT 以及 European Transaction and Messaging 会议。T.Rob 每月还在 WebSphere MQ 播客上主持 The Deep Queue。



2011 年 1 月 27 日

我在暑假所做的事

很长一段时间,我一直都在试用 IBM WebSphere MQ Advanced Message Security 的 alpha 和 beta 版本,但在 10 月 5 日的公告发布之前,我不能公开讨论它。现在,我终于可以谈论它了,这几乎就像暑假结束回到学校要报告暑假中所做的事一样 — 暑假期间,除了进行一些休闲活动外,实际上我一直在从事一个项目,该项目将给全世界的消息传递系统的安全性带来深远影响。

当然,IBM WebSphere MQ Extended Security Edition 在 WebSphere MQ 产品线中填充了一个类似的位置,但它的内存占用和复杂性真的使它更像一个企业产品。相比之下,WebSphere MQ Advanced Message Security 几乎没有可见的内存占用,适合在支持的平台上运行 WebSphere MQ 服务器或客户机的任何客户 — 从大型企业集团到生产中只有一两个队列管理器的小企业。

早在 2006 年,当我开始在一些会议上展示 WebSphere MQ 安全性时,我曾预言:在 10 年内,基于证书的身份验证和加密将在消息传递网络上广泛使用。当时,这似乎是一个非常乐观的预测,因为当时即使是配置了基本 WebSphere MQ 安全性的企业都非常少。但就在最近几年,我看到了这个领域中部署的安全控制显著增长,客户对安全的兴趣也日渐浓厚。WebSphere MQ V7.0 的新功能与 WebSphere MQ Advanced Message Security 相结合,构建起以前只在 WebSphere MQ Extended Security Edition 中可用的功能,但允许大众访问。

这时,您可能会想,我为什么确信 “大众” 也需要 WebSphere MQ Advanced Message Security 这样的产品。事实是,保护消息传递的方式一直没有跟上使用消息传递的方式的发展步伐。安全控制局限在连接和队列/主题的层面上,但如今消息传递的通常部署方式则受益于消息层面的安全性。这种趋势正在日益加强。

我们先花几分钟来进一步阐述这个理念,然后解释 WebSphere MQ Advanced Message Security 能够如何提供帮助。


正在消失的外围网络

面向消息的中间件非常依赖外围网络安全模型。以前,这类软件在 “可信内部网” 中运行,用于在应用程序之间交换消息。但消息传递已经变得无处不在,不再局限于这些有限的角色。

术语 “可信内部网” 旨在区分网络的内部部分和防火墙外部的目的地。但这个上下文中使用的术语 “可信” 是相关的,这并不是暗示内部网络是可以信任的,只是表示内部网络比防火墙外的网络更值得信赖。遗憾的是,这个术语通常被按照字面意思理解。我有一些客户认真地告诉我:按照定义,我们信任 “可信内部网” 中的任何东西,这也是我们称其为 “可信内部网” 的原因。显然,这言过其实了,因为即使是内部网络最忠实的信徒也对服务器、数据库和应用程序执行基于密码的登录。因此,内部网络固然可信,但应该有一个限度,即使是在内部网络上,身份验证和授权也很关键。

但是,就算我们都同意内部网络不能完全信任,但我们知道内部网络的确切边界吗?近年来,内部网络和外部网络的边界变得模糊。外联网不仅扩展连通性,通常还将路由、名称解析、身份验证和其他服务扩展到防火墙外部的目的地。虚拟专用网(Virtual Private Network,VPN)将 “可信内部网” 扩展到企业外部的员工便携式计算机:家里、酒店、机场、咖啡馆、以及有 Internet 连接的任何地方。有如此众多发源自防火墙外部的合法的、全服务(full-service)连接,哪里才是外围网络的确切界线呢?难道这种定义外围网络的 “内部-外部” 方法不需要更强的安全控制吗?

在回答上述问题之前,我们还要首先考虑从三层消息传递系统到两层消息传递系统的转换。以前,消息传递被中间层应用程序使用。用户将他们的工作站上的浏览器或客户机连接到应用程序服务器,后者又连接到一个队列管理器。但是,最近的趋势是直接将用户的客户机连接到队列管理器。一些新技术,比如 WebSphere MQ 的 HTTP 接口和 IBM WebSphere MQ Telemetry Transport,将向位于网络边缘、数量不断增长的设备交付消息传递功能,从而强化这种趋势。在三层架构中,队列管理器只了解应用程序的身份。在两层模型中,队列管理器必须了解所有已连接用户和设备的身份,并应对这些用户和设备经常位于防火墙外部这种情况。

这些趋势的结果是我们需要将安全模型中的细粒度水平增加一两个数量级,与此同时,我们还需要更好的外围网络安全性。幸运的是,WebSphere MQ Advanced Message Security 能够应对这些挑战。


WebSphere MQ Advanced Message Security 概述

WebSphere MQ Advanced Message Security 于 2010 年 10 月 8 日发布,提供了身份验证、增强的授权机制、以及消息加密功能。它旨在与 WebSphere MQ 紧密集成,并消除对外部组件的依赖。WebSphere MQ Advanced Message Security 不需要其他服务器和守护程序进程运行,因此,它很容易实现,并能保护其他 IBM WebSphere 产品的安全,比如 IBM WebSphere MQ File Transfer Edition。

WebSphere MQ Advanced Message Security 的一个主要设计目标是避免对应用程序代码进行任何更改。为此,WebSphere MQ Advanced Message Security 被实现为三种类型的拦截程序:

  • Java 拦截程序捕获对 JMQI 层的调用,因此同时处理 Java 和 JMS 应用程序。
  • C 客户机拦截程序捕获对 C 客户机库的调用。
  • 一个 API 出口拦截绑定模式调用。这个拦截程序执行其功能后,调用被传递到原始 MQ 库或类。

这三种类型的拦截程序覆盖了广泛的应用程序范围。例如,长久以来一直要求对 JMS 管理的对象定义进行某种特殊处理。这种架构还能减少原生 WebSphere MQ 库上的依赖项,从而简化了 WebSphere MQ 和 WebSphere MQ Advanced Message Security 的维护。

由于 WebSphere MQ Advanced Message Security 完全基于拦截程序,因此不需要运行任何额外程序。当队列管理器或应用程序启动时,常规 API 调用被传递到 WebSphere MQ Advanced Message Security 库,后者执行并调用底层 WebSphere MQ 库。管理功能通过一个 WebSphere MQ Explorer 插件和一组命令行工具提供。

参考资料 部分包含一些可用于访问 WebSphere MQ Advanced Message Security 会议演示的链接。IBM Software Services for WebSphere 研发了一个新的 QuickStart 产品,将实现和深入培训带到组织内部,以便您能够用最少的时间设置并运行 WebSphere MQ Advanced Message Security。

WebSphere MQ Advanced Message Security 能够在消息生成时签署并加密消息,然后在消息使用时解密并验证消息。在消息生成和消息使用之间的所有时点上,消息都受到保护,不管是为了完整性(使用散列表)还是为了私密性(使用加密)。如果私密性启用,消息负载将在以下位置加密:线路上、内存中、队列上、日志文件中、以及收集的任何记录中。消息头保持纯文本格式,以便队列管理器能够正确路由它。根据设置的策略的不同,访问权设置可以是对管理员的能力不进行任何特殊限制,也可以指定一个特殊队列上的消息的授权签署者和接收者的一个枚举列表。

这仅仅是 WebSphere MQ Advanced Message Security 功能的皮毛,因此,我建议您通过下面的 参考资料 深入探索这个产品。


B2B 用例

WebSphere MQ Advanced Message Security 的一个主要用例是帮助处理正在消失的外围网络引起的问题,B2B 连接就是这方面的一个好例子。由于 WebSphere MQ Advanced Message Security 不需要中央策略服务器,因此它在 B2B 情景下效果很好。

WebSphere MQ Advanced Message Security 通过在消息层面建立一个安全外围网络来提供额外控制。每条消息都在自己的加密信封中传输,加密信封包含发送者的负载和身份。这个信封带着消息从消息生成应用程序一路前往消息使用应用程序。WebSphere MQ Advanced Message Security 支持基于每条消息的入站流量身份验证,并支持严格限制那些消息可以发送到哪些队列上和哪些接收者可以接收它们。这对于通过 VPN 或外联网进行连接特别有用。

外联网拓扑的一个特殊例子是票据交换所(clearing house),这在许多行业都比较常见,可以想到的几个有金融业、医疗保健和保险业。为了提供安全性和客户隔离,许多运行票据交换所的供应商都为每个客户提供单独的路径。通常,这些路径涉及单独的队列、通道和监听程序,但有些用例还涉及专用队列管理器。本质上,这种隔离的实现机制是将安全策略嵌入到网络的物理连通性层中。提供的隔离越多,维护配置的成本也就越高。

由于复杂性是安全性的 “敌人”,这种方法可以实现的安全性也是有限的。使用 WebSphere MQ Advanced Message Security 时,安全性通过策略管理,物理网络的结构更多地受到容量规划等因素的影响。如果我是一位票据交换所供应商,我将对使用 WebSphere MQ Advanced Message Security 将安全管理移到网络拓扑外部感兴趣,因为这会简化我的物理控制并节约资金。如果我是一个客户,能够在使用和不使用 WebSphere MQ Advanced Message Security 提供的服务之间选择,那么我将选择 WebSphere MQ Advanced Message Security 版本,因为它具有更好的责任感和安全性。

我经常被问到的一个问题是:如何配置 WebSphere MQ 才能满足 PCI-DSS (Payment Card Industry Data Security Standard) 或其他法规遵从性要求?宣称某个产品 PCI 是合规的实际上是不太可能的,因为大部分标准都应用人工流程和控制。但是,探索特定配置如何适应整个合规性要求是可能的 — 也是适当的。对于 PCI-DSS,存在保护持卡人数据的要求,这通常通过加密来实现。WebSphere MQ 能够在消息穿过通道时独自临时加密数据,但它并不在队列管理器处理消息时加密消息。这意味着消息在内存、日志文件、跟踪记录和返回队列结构的文件中是可读的。为符合合规性,这些问题可以通过使用一些缓解控制机制来处理,比如通过一个基于主机的防火墙来隔离队列管理器并在队列管理器服务器上审计登录会话。通常,可以结合使用多种控制方法来构建一个分层防御机制。使用 WebSphere MQ Advanced Message Security,消息在传递到队列管理器之前被加密。这意味着在非 SSL 通道上、以及队列管理器可能创建的任何临时副本中,消息甚至也会被加密。由于消息在队列管理器的监护之下时从来都不是纯文本格式,这就消除了大量进行缓解控制的必要性,甚至可能会将队列管理器从 PCI 审计的范围内完全移除。

法规遵从性的另一个特征是职责分离。WebSphere MQ 管理员能够拦截、编辑并将消息注入任何队列。对于合规性或敏感应用程序,这种级别的访问有时并不理想。当应用程序使用 WebSphere MQ Advanced Message Security 签署消息时,甚至是 WebSphere MQ 管理员也不能改变消息,或者注入不良消息而不被察觉。如果消息还经过加密,那么 WebSphere MQ 管理员不能解密消息。注意,管理员仍然能够访问队列,包括移除受保护的消息。这种能力是有必要的,例如,当应用程序被阻塞时,管理员需要从队列移除不良消息。但是,管理员不能阅读消息,这满足了合规性要求。(可以配置 WebSphere MQ 管理员能否阅读加密消息;限制较少的应用程序总是能够在消息首次生成时选择将管理员列示为一个经过授权的接收者。)


WebSphere MQ Advanced Message Security 的内部用例

上面讨论的票据交换所模型是一个 “轮毂辐条状(hub-and-spoke)” 模式,其中,辐条是每个不同的 B2B 接口,目标是避免辐条之间相互通信。但许多企业都有内部轮毂辐条状网络,这些网络呈现出相反的安全挑战。

在这种情况下,目标是允许辐条交换消息,但是要采用安全的方式操作。当身份验证和授权基于每个连接时(WebSphere MQ 就是这种情况),到达一个辐条节点的所有消息都好像源自轮毂处。为了加入网络,各个辐条必须隐式信任轮毂。要在目的地上实施安全性,必须针对可以设置的授权,在轮毂上以及大量 QRemote 和 QAlias 定义上定义所有辐条节点的身份。同样,这是将安全策略嵌入物理网络设计中的一种实践。这不仅复杂,还可能导致轮毂处的安全负担增加。这是因为,如果轮毂受到损坏,整个网络就会受到损坏。

WebSphere MQ Advanced Message Security 将身份验证和授权功能从连接向下移动到消息级别。由于队列上的消息可以追溯到消息发送者,且安全策略在使用点应用,因此这比整个网络在来自集线器的单个连接中汇合的影响要小一些。这大大减轻了集线器的安全责任,并极大地简化了集线器配置。

WebSphere MQ Advanced Message Security 还有助于 WebSphere MQ 集群安全性。除非使用一个通道自动定义出口,否则 WebSphere MQ 集群中的所有远程节点的授权都将基于集群接收器通道定义中的 MCAUSER 值。这非常像 “轮毂辐条状” 模式,在该模式中,来自 WebSphere MQ 集群中的所有节点的流量都通过单个通道到达;因此,所有集群节点的授权都集中到那个连接中。如果某个集群中的任一远程节点被授权到一个队列,则该集群中的所有节点都能够将消息发送到那个队列。WebSphere MQ Advanced Message Security 没有改变这一点,但它的确在消息级别额外添加了一个控制层,以便使用来自一个队列的消息的使用者能够区分不同的发送者并拒绝未经授权的消息。由于 CHAD 出口在连接和队列级别操作,而 WebSphere MQ Advanced Message Security 在消息级别操作,因此它们二者是互补的。尽管 WebSphere MQ Advanced Message Security 可能会减小或消除集群中的 CHAD 出口的必要性,但它不会替代现有出口。

WebSphere MQ Advanced Message Security 最有用的特性之一是其支持大量身份的能力。前面提到过,用户从服务器应用程序后面出来并直接连接到队列管理器。通常,消息传递连通性正在向网络外围区域移动,并出现在用户工作站、浏览器、仪表、独立设备、甚至电话中。这意味着消息传递层中的安全性现在必须支持多得多的独立用户并细化到每个用户的粒度水平。只要安全性在连接和队列级别上管理,就不能很好地伸缩。使用 WebSphere MQ Advanced Message Security,汇集连接和队列级别的安全性成为可能,这将简化物理网络拓扑。然后,基于规定谁可以签署和谁可以使用一个给定队列上的消息的策略,可以在消息级别上实现额外的粒度。

将消息传递迁移到网络边缘还意味着到队列管理器的连接现在通常发源自锁定的数据中心的外部。当连接从与客户机连接的应用程序服务器迁移到用户的桌面机上的客户机应用程序时,它对于队列管理器来说只是另一个客户机连接 — 我们通常倾向于使用以前的控制和安全模型。但是,去除以前由锁定的数据中心提供的物理安全控制手段意味着 “位于野外的” 客户机应用程序应该经过更严格的身份验证,其访问权受到更严格的控制。使用 WebSphere MQ Advanced Message Security,可以使用单个证书对连接进行身份验证并签署消息,也可以针对不同的目的使用单独的证书。这提供了多种服务质量和选项来将额外的安全性构建到共享办公室应用程序中。

当然,WebSphere MQ Advanced Message Security 用例要比本文讨论的用例要多得多,但这些是我经常遇到的用例。共同的思路是我们为消息传递实现的安全模型需要与我们使用消息传递的方式保持同步。尽管基本的安全性对于基于点对点拓扑和三层架构的 “可信内部网” 已经足够好,但今天的消息传递系统需要在消息级别进行更严格的身份验证和控制。


SYSTEM.* 队列保护

WebSphere MQ Advanced Message Security 的一个重要特性是保护队列管理器的内部队列的能力。许多 WebSphere 产品,比如 WebSphere MQ File Transfer Edition,使用 SYSTEM.* 队列进行管理和常规操作。扩展 WebSphere MQ Advanced Message Security 功能来包含这些 WebSphere MQ 系列产品要求管理员能够对这些 SYSTEM.* 队列应用策略。WebSphere MQ Advanced Message Security 就是专为解决这种需求而设计的。

以 WebSphere MQ File Transfer Edition 为例。与大部分 WebSphere 产品一样,它在一个队列上监听,基于放置在那里的命令执行管理和用户操作,并将响应发送给请求者。保护一个 WebSphere MQ File Transfer Edition 代理的首要任务是限制对这个命令队列的访问。对于直接连接的对象,比如代理本身,这个任务可以通过 WebSphere MQ 基本安全性处理。但对于从其他队列管理器发送命令的对象又该如何办呢?由于 WebSphere MQ 安全性基于连接,允许访问本地命令队列的是另一个队列管理器,该队列管理器上的各个用户和应用程序被汇集到一个连接中。如果可以(可靠地)将访问权授予给从那个远程队列管理器发送命令的特定身份,那么情况会好得多。

由于 WebSphere MQ Advanced Message Security 在每条消息上附加一个身份并基于那个身份实施策略,因此它非常适合上述任务。现在,管理员可以指定拥有授权、可以在指定代理的命令队列上放置消息的用户、仪表和远程 WebSphere MQ File Transfer Edition 代理的枚举列表。没有附加这些经过授权的身份的所有消息都将在 WebSphere MQ File Transfer Edition 代理看到它们之前被拒绝。这支持更轻松地将 WebSphere MQ File Transfer Edition 代理放置到现有 WebSphere MQ 网络上,包括集群和 “轮毂辐条状” 拓扑。

对 WebSphere MQ File Transfer Edition 代理的命令队列的访问进行适当限制后,一个有用的增强可能是对在代理之间流动的文件数据进行加密。每个代理都有几个专用队列,其中一个用于与其他代理交换数据。通过在 WebSphere MQ File Transfer Edition 代理的数据队列上放置一个 WebSphere MQ Advanced Message Security 保护策略,可以在文件数据在代理之间传输时对其透明地进行加密。由于消息在传输到队列管理器之前得到加密,因此数据在内存、队列文件、日志和跟踪记录中受到保护。


定位 WebSphere MQ Advanced Message Security

保护 WebSphere MQ File Transfer Edition 代理的命令和数据队列提供了一种安全控制机制,这有助于满足任何类型的敏感数据的合规性要求。WebSphere MQ Advanced Message Security 将减少许多补充控制机制的需求,甚至可能将队列管理器从 PCI 审计范围内移除。减少的合规性成本甚至可能会超过 WebSphere MQ Advanced Message Security 许可成本,这将转化为非常快速(如果不是立即)的 ROI。我坚信,与不使用 WebSphere MQ Advanced Message Security 相比,使用这个产品来满足 PCI 要求、还有 HIPAA、SOX、FISMA 以及非常多的合规性要求的成本将会更低。

但在我看来,就像通常关注安全性的人那样,合规性也许是考虑 WebSphere MQ Advanced Message Security 最次要的因素。我更关心更广泛的问题:这个场景中有 B2B 连接吗?有 WebSphere MQ 集群吗?有 “轮毂辐条状” 网络吗?有大量客户机连接吗?远程连接源自终端用户设备吗?请求连接的身份数量非常大吗?

在所有这些场景中,借助在各个消息级别上、而不是在每个连接或每个队列上操作的产品组合中添加的工具,安全性更容易实现。既然现在这些工具可由各种规模的企业 — 从全球企业到便携式计算机上的一个基于 WebSphere MQ 客户机的应用程序 — 访问,安全性模型就能适应架构变化的要求。这有助于消除我们的消息传递网络中当前存在的大部分潜在风险,到那一天,这种风险的缓减将会成为 WebSphere MQ Advanced Message Security 的真实益处 — 我们都可以从中受益。

参考资料

学习

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=619071
ArticleTitle=任务:消息: 使用 WebSphere MQ Advanced Message Security 进行端到端加密
publish-date=01272011