`
阅读更多

摘要:许多JMS提供商已将它们的产品应用于众多企业之中,需要应用集成的许多企业也在考虑采用何种消息中间件 厂商的产品,这些产品无疑将会支持JMS。

JMS与安全

冯键编译
JMS(Java Messaging Service)是近年来广受赞誉的一个消息传送服务规范。它的初衷是在已有的各种私有消息中间件产品之上提供统一的应用编程接口(API)。目前,它已经成为实现企业应用松散耦和集成的开放标准。许多JMS提供商已将它们的产品应用于众多企业之中,需要应用集成的许多企业也在考虑采用何种消息中间件厂商的产品,这些产品无疑将会支持JMS。

JMS规范为发布/订阅和基于队列的消息传送机制定义了丰富详细的接口,但是,JMS对以下问题没有给出明确定义:

1. 如何传送消息

2. 如何集群消息服务器

3. 如何支持高效消息传送和容错机制

4. 安全

这些问题留给JMS提供商来定义和实现,因而,对安全问题的实现,不同JMS提供商可能有完全不同的方案。基于这种考虑,充分理解以下两点是非常关键的:

(1) JMS部署的整体企业应用环境;

(2) JMS提供商的产品是否能满足你的安全需要。

1. 企业应用的环境

信息安全对大多应用而言都是需要严重关注的问题,而且,安全的重要性越来越突出。基于Internet的电子商务应用更加使用户对安全的威胁感到焦虑。不同的安全威胁需要不同的技术来解决,这些威胁有如下所列:

机密信息非法窃取:消息中间件是企业信息传送的通道,企业的敏感数据也通过它传送。这种情况下,要确保非授权用户不能接触企业的敏感数据。如企业不同部门之间传送的新产品数据,是企业的敏感信息,企业非常关心这些数据是否会被它的竞争对手非法窃取。

信息的非法篡改: 在消息传送过程中是不允许对消息内容篡改的,例如,银行 间传送的某一账户转账消息,如果这一事务的细节被他人篡改,都会对银行用户或银行造成不可预计的损失。

受保护资源的盗用:消息代理(broker)和它的目的地(消息主题或队列)是非常重要的企业资源,需要保护它们不被非法用户随意使用。例如,如果让某一恶意用户盗用broker来发布股票价格变动的消息,那么,此虚假消息将会造成灾难性的后果!

在这篇文章中,主要讨论解决这些问题的技术和JMS产品的特性。

2. 身份验证

在讨论JMS安全之前,需要为每个负责人(如用户)建立身份标识。JMS客户端与broker交互来验证自身身份,broker具有访问保存有效用户信息资源的权限。最简单的使用方式是验证用户名和口令,较复杂的方法是使用数字证书。证书是数字文档,它描述用户(或应用、服务)的标识和公用密匙(即公钥)。数字证书由一个信任的认证中心(CA)来颁发,CA可以是本地的,也可是第三方如VeriSign。证书最广泛应用的标准是国际通信联盟的X.509,除支持X.509之外,还要保证你有工具来管理企业应用环境中的用户和它们的权限。

用户常会被分配角色和相应的安全权限,简化了安全策略的管理。同样重要的是,broker也能通过与client的交互验证自身,这阻止了一个恶意系统声称为有效broker,并与未知客户端暗中交互通信。

需要说明的是,企业的信息安全架构往往是在部署JMS之间就有的。因而,如何能实现安全架构与消息通信平台的无缝集成问题,显得非常重要。对JMS的身份验证而言,具有外部集成能力或者即插即用的架构是关键。例如,可使用LDAP(Lightweight Directory Access Protocol)保存用户的数字证书,JMS提供商的产品应能实现与LDAP的集成,而不是坚持将证书引入自身的系统。

3. 授权

授权是一个对特定用户指定特定权限的过程,初级系统可实现JMS API层次上的控制,等价于“谁能调用什么操作”。但是,这是一种非常粗粒度的控制,在大多环境中并不适用。

非常有用的授权策略是将broker与JMS的目的地(主题和队列)结合起来。创建一个访问控制列表(ACL)意味着是对某用户主体安全策略的定义和描述,即他能为某一主题或队列发布消息,或者从某一主题或队列中接收消息。另外,你需要能描述对broker和它的JMS目的地管理权限的优先级。

由于某一broker可能管理着成千的主题或队列,为每一个主题和队列维护一个ACL将会增加大量的管理负担,所以,支持层次化管理主题或队列就变得非常重要。例如,一个在线的零售商,其主题层次如下:

Amazon.orders.electronics.cameras.sharp

 

 


 

 

JMS客户端能发布或订阅此主题树上不同点代表的主题。ACL也能应用于主题树上的不同点,通配符主题也被支持。例如,对Amazon.#,ACL定义所有角色都没有发布和订阅的权限,而将定义customer对Amazon.orders.#有发布消息的权限,则此权限沿着主题树向下传播,customer自然具有对Amazon.orders.electronics.cameras.sharp主题的发布权限,这样,就大大减少了ACL的定义数目,若另一ACL定义camara_distributor角色具有对Amazon.orders.electronics.camaras.*的订阅权限,则camara_distributor就能接收到customer发布的订单消息。

4.数据机密性

对于企业而言,确保机密数据不被非法用户访问是非常关键的,为了解决此问题,您需要应用一些加密算法,但需要说明,JMS提供商对数据加密的实现方法并不等同,以下是选择加密方案时需要考虑的方面:

4.1公钥还是私钥?

公钥加密使用两个钥匙:仅对拥有者公开的私钥和对所有希望与私钥拥有者通信的人公开的公钥。公钥加密是一种非对称加密技术,因为加密使用的钥匙不同于解密使用的钥匙。公钥解密技术的不足之处在于非对称加密算法需要占用CPU较多的计算时间,会影响JMS系统的运行性能。

替代方法是发送者和接收者都共享一把钥匙来加密和解密,这种对称钥匙加密算法比非对称算法在速度上至少要快100到1000倍。性能改进了,但随之而来的是如何建立发送者和接收者共享密钥的问题,通过配置方法或在软件 中硬编码的方法都不安全,而应将二者交互的过程认为是握手协议的一部分,为此过程建立密钥。

当向众多的消息订阅者发布时,使用包含加密消息和共享密钥的数字信封更为有效,此密钥自身使用公钥加密,接收者通过私钥解密来获得此密匙。公钥加密的非对称技术和私钥加密的对称技术结合,不仅提高了企业应用环境的安全等级,同时也不影响整体系统的运行性能。

4.2什么密码更强壮?

你应为JMS解决方案提供一套的密码,使你更容易选择,但这需要在加密强度和性能之间进行折衷。一般加密采用56位的数据加密标准(DES),但此密码可能会被攻击者采用特定设备并花费1百万美金的前提下39小时内攻破;更强状的加密采用168位的DES3,它将超出攻击者的能力,它需要花费许多年才有可能会被攻破。

4.3加密通道或者消息加密?

JMS规范没有讨论采用什么协议用来传送消息,因而,在实现上会有许多不同,如采用TCP、UDP、HTTP、IIOP、RMI等。从安全考虑,通常采用SSL来提供加密数据的传送通道(channel),这种技术会使broker和client通信的每一部分都被加密,如消息、二者之间的确认报文、协议所需的额外数据等等。

如果你仅需要对部分消息体加密的化,那么,采用SSL技术将是不恰当的,它可能会使整个系统做许多大量额外的工作。替代方法是对消息层次进行加密,而使用非加密协议,所有或部分消息在被传送之前首先被加密。选择每个消息是否加密的方法是可能的,如价格变动消息不需加密就可发布到某一目的地,但是,到同一目的地的购买请求消息却被加密,处理此消息队列时会显著影响系统的性能。

5.消息的完整性

即使消息如4.3节所述被加密处理,但是,接收者并不能确保这些消息是否在传输过程中被篡改过。为了保证这一点,需要定义一个hash函数,以消息为输入,产生一个固定长度的摘要(digest),类似于校验和。这种方法的缺点是存在着hash冲突,hash函数可能为不同消息产生相同的摘要值。一个恶意的侵入者可改变消息内容为其他值,此值被hash后与原有消息的摘要相同。摘要值越大,消息完整性越能被保证,MD5能产生128位的摘要,SHA-1能产生160位的值。

6.部署位置和安全

JMS部署的方案也可能会对你的安全需求产生重大影响。部署JMS系统跨越防火墙 实现Internet消息传送会带来其它 问题。防火墙在概念上被认为是确保网络安全 的独立实体,但是,企业防火墙实际上是代理服务器 (proxy Server),路由器 、防火墙软件包、甚至是中介网络(常称为DMZ)等构成的复杂体。通过企业防火墙传送消息,需要JMS产品支持Internet Messaging,JMS产品需要支持以下特征:

防火墙友好的协议

模块分布

强壮的broker

使用代理

6.1防火墙友好的协议

可能是防火墙软件的限制或是系统管理员的偏好,你可能发现JMS软件的本地协议是被禁止穿越防火墙的,需要其它协议的支持,防火墙最友好的协议是HTTP,它可用做JMS传输或者利用HTTP头建立HTTP通道来传送TCP或其它包通过防火墙。为了确保安全,这两种方法的任一种都能用做通道加密或消息加密,HTTPS用于通道加密是必要的,它是在SSL上实现HTTP传输。

一些HTTP/1.0的实现可能不包含保持连接的头信息(keep-alive connection),而保持连接的头信息会允许网络连接一直保持,因而会有更好的性能。HTTP/1.1规范支持保持连接的头信息,因而,当性能是考虑因素时,建议使用HTTP/1.1。

6.2模块分布

当前的防火墙架构关键特征是:应用部件的分布化使为不同模块提供隔离的保护措施。它能保证当某一模块失效后整个系统不会瘫痪。对部署在DMZ的JMS实现而言,这意味着将broker与它永久消息存储的分离,对broker的安全破坏不会影响永久消息存储模块的安全。

6.3强壮的broker

如果broker部署在DMZ环境,它的潜在攻击是相当高的,因而,需要密切关注它的模块。如broker有一个配置文件,它包含了关键的密码和安装参数,那么,此配置文件需要加密,你必须能在加密的配置文件下启动运行broker。

6.4使用代理

用户可能认为在DMZ环境中部署JMS是不合适的,broker需部署在内部网络。此种情况下,broker与外部client端的连接可通过使用逆向的代理服务器来获得,这些代理服务器部署在DMZ环境中。这中部署方案需要确保你的JMS已经测试过,并被证明能使用这些代理服务器。

7.总结

并不是所有的JMS实现都提供相同或支持高级的安全策略,这是由JMS提供商来决定的。但是,在企业应用集成环境中部署JMS方案时,你需要思考如下问题:

集成方案需要什么层次的安全保证?

client和broker如何部署?

加密的强度到底是怎样的?

如何平衡安全与性能的矛盾?什么方案是现实可接受的?

企业信息资源受何种威胁?哪种威胁最大?

说明:本文译自《eAI Journal》2002年7月的《Security and JMS》,作者:Steve Trythall, 任Sonic Software 公司的产品管理总监。

  • 大小: 5.7 KB
分享到:
评论

相关推荐

    绿联JMS578芯片硬盘盒关闭休眠工具+教程

    绿联JMS578芯片硬盘盒关闭休眠工具+教程

    基于JMS的混合安全消息模型在煤矿应急系统中的应用

    为了解决集团式煤矿企业特殊的上报和下发应急信息的业务要求,根据JMS的点对点和发布/订阅2种消息传递模式,提出了一种分布式混合安全消息传递模型。该模型不仅解决了单个消息传递模式不能解决集团式煤矿企业特殊业务...

    wlfullclient.jar 客户端开发包 rmi\jms\ejb3 网络安全人必备

    weblogic下开发客户端需要的全部jar包的集合包括,其中有rmi,jms,ejb3等重要的库,欢迎下载

    面向JMS消息中间件的安全协议MSTP (2007年)

    针对JMS规范和消息中间件的特点,提出面向JMS消息中间件的安全协议MSTP(包括消息传输协议、认证协议、审计协议、分布式信任协议),为解决消息中间件的安全问题提供了一个可选的方案。在具有自主知识产权的JTang...

    Spring-JMS把企业消息处理变容易.doc

    Spring-JMS把企业消息处理变容易.doc

    基于WebSphere MQ发送消息的简单JMS实例

    NULL 博文链接:https://bijian1013.iteye.com/blog/2308734

    Jboss控制台jmx-console的安全设置

    Jboss控制台jmx-console的安全设置

    BEA WebLogic Server8.1大全 源码

    本书全面介绍了WebLogic在J2EE应用程序的各个方面所完成的任务:从使用servlet、JSP和EJB,到管理分布式系统,包括利用JTA的事务处理、利用JNDI的目录服务、利用JMS的消息系统,等等。本书作者还特别注意WebLogic中...

    HJB (HTTP JMS Bridge)-开源

    HJB(HTTP JMS Bridge)将 HTTP 协议链接到 JMS API。 它提供了 JMS API 的 REST 等价物,从而可以通过 HTTP 访问 JMS 对象作为 REST 资源来执行 JMS 操作。

    JBOSS使用指南

    3. JBoss 的安全设置 3.1 jmx-console 登录的用户名和密码设置 3.2 web-console 登录的用户名和密码设置 4. JBoss 数据源的配置 5. JMS使用和设置 5.1 JMS消息的传递模型 5.2 JMS的配置 三.JMX原理和应用 1. 什么是...

    ActiveMQ中文手册

    2.4 安全机制 13 2.4.1 Simple Authentication Plugin 13 2.4.2 JAAS Authentication Plugin 14 2.4.3 Custom Authentication Implementation 14 2.4.4 Authorization Plugin 15 2.5 Clustering 16 ...

    MDB 消息驱动Bean

    虽然MDB负责处理消息,但是由运行MDB的EJB容器负责处理服务(事务、安全、资源、并发、消息确认,等等),使bean开发者把精力集中在处理消息的业务逻辑上。传统的JMS应用程序必须定制地编写一部分这些服务。MDB在...

    OpenJMS:作业管理系统(JMS)的开源版本

    OpenJMS 1.0被定义为MVP,具有附加功能,可在安全的多租户架构中使用Aurora数据库集群在AWS S3上托管(高度可扩展,自动备份,归档和灾难恢复以及EC2(负载平衡,多个实例,扩展))。公开发布的目标是2019年第三...

    ActiveMQ是Apache软件基金会所研发开源的消息中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信

    ActiveMQ是Apache软件基金会所研发开源的消息中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。抛开网络服务(Network Services)不说,我们应该知道的是ActiveMQ的三个重要组成部分:连接...

    java视频.txt

    04安全框架与商家入驻审核 05商品管理1 06商品管理2 07商品管理3 08广告管理与缓存解决方案 9搜索解决方案-Solr-1 10搜索解决方案-Solr-2 11搜索解决方案-Solr-3 12网页静态化解决方案-Freemarker 13消息中间件解决...

    php stomp 非线程安全 协议 64位

    php 以stomp 非线程安全 协议 实现 JMS 消息处理服务器的集成 包,包含完整的运行服务端,后台监控页面和demo实现,这是64位操作系统的完整包。下载以后,直接双击运行bin目录下的activemq.bat,在浏览器里访问:...

    weblogic笔记

    weblogic笔记包括: weblogic 的性能调优 weblogic 与JVM的配合 weblogic JMS与集群之间的关系 apache的性能调优 apache研究安全性与吞吐量

    rabbitmq学习手册

    AMQP,即Advanced Message Queuing Protocol...与JMS不同,AMQP是一个Wire级的协议,它描述了在网络上传输的数据的格式,以字节为流。因此任何遵守此数据格式的工具,其创建和解释消息,都能与其他兼容工具进行互操作。

    JBossMQJMS 反序列化漏洞(CVE-2017-7504)漏洞利用工具

    JBossMQJMS 反序列化漏洞(CVE-2017-7504)漏洞利用工具,方便我们进行漏洞利用getshell。

Global site tag (gtag.js) - Google Analytics