TIBCO EMS是一款基于JMS标准的消息中间件产品,具有良好的扩展性、易用性和高效性,很多客户将其作为企业内部的消息总线,在企业应用集成平台架构中担任重要的角色,因此,它的安全性也就显的非常重要,往往会影响到整个企业应用集成平台的运行。在默认情况下,TIBCO EMS对连接用户没有任何限制,即使没有用户名和密码,用户一样可以连接到消息服务器,并对服务器中的主题及队列进行操作。本文中,我们将为您介绍如何一步步打造安全的TIBCO EMS消息服务器。 1.启用用户认证 如下设置TIBCO EMS主配置文件tibemsd.conf中的认证选项: 以下是引用片段:authorization……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
1.启用用户认证
如下设置TIBCO EMS主配置文件tibemsd.conf中的认证选项:
以下是引用片段: authorization = enabled (默认为disabled) |
或者在EMS管理工具中执行命令:
以下是引用片段: set server authorization=enabled |
设置该选项后,用户连接TIBCO EMS服务器必须进行用户名和密码的验证,否则不能进行连接。
2.建立用户和组
与数据库的管理类似,TIBCO EMS服务器中也可以建立用户和用户组,以便我们将来使用不同的用户来管理不同的消息应用。
用户信息存储在users.conf,格式如下:
以下是引用片段: <user-name>:[password]:<description> |
其中password会以加密数据方式存储在文件中。可以通过create user命令创建用户,例如:
以下是引用片段: create user orderuser 订单创建用户 password=orderuserpasswd |
组信息存储在groups.conf,格式如下:
以下是引用片段: <group-name1>:[<description>] <user-name1> <user-name2> . . . <user-nameN> |
可以通过create group命令创建组,例如:
以下是引用片段: Create group ordergroup 订单组 |
通过add member命令为组增加用户,例如:
以下是引用片段: Add member ordergroup orderuser |
用户和用户组类似于数据库用户管理中的用户和角色的概念。
3.访问控制列表
通过访问控制列表(ACL)可以控制用户或用户组对EMS服务器中特定目的地(队列或主题)的访问权限。访问控制列表信息存储在acl.conf,格式如下:
以下是引用片段: TOPIC=<topic> USER=<user> PERM=<permissions> TOPIC=<topic> GROUP=<group> PERM=<permissions> QUEUE=<queue> USER=<user> PERM=<permissions> QUEUE=<queue> GROUP=<group> PERM=<permissions> |
通过上述访问控制信息将主题(TOPIC)或者队列(QUEUE)的权限分配给用户或者用户组。
其中主题(TOPIC)上的权限如下所示:
权限 | 权限名称 | 说明 |
subscribe | 订阅 | 在主题上建立非持久化订阅的权限 |
publish | 发布 | 向主题上发布消息的权限 |
durable | 持久化 | 在主题上建立、删除或者修改持久化订阅的权限 |
use_durable | 使用持久化 | 使用主题上已经存在的持久化订阅的权限,但是不能进行持久化订阅的创建、删除或修改 |
队列(QUEUE)上的权限如下所示:
权限 | 权限名称 | 说明 |
receive | 接收 | 从队列上接收消息的权限 |
send | 发送 | 向队列上发送消息的权限 |
browse | 浏览 | 浏览队列上的消息的权限 |
通过设置主题和队列的访问控制列表,来阻止非法用户对目的地的非法访问,保证消息总线中信息传递的正确性。
4.启动目的地访问控制
为了使主题和队列的访问控制生效,需要激活目的地上的安全访问机制,即为主题和队列增加安全(secure)属性。可用如下命令为目的地增加安全属性:
以下是引用片段: addprop topic <topic-name> secure addprop queue <queue-name> secure |
访问控制启用后,如果有无权限的用户试图对目的地进行操作,会产生javax.jms.JMSSecurityException: Not permitted异常。
通过上述步骤,即可实现TIBCO EMS的访问控制管理,为用户打造一个安全的信息总线环境。
应用案例
以我们客户的一个应用场景为例,我们为客户建立了用户主数据库,管理企业中的用户信息,企业内应用系统中的用户数据都从用户主数据库中获得,当用户主数据库中的用户数据发生变化,变化的数据需要实时的更新到所有的应用系统中,保证各个系统内用户数据的统一性。这里,我们使用TIBCO EMS作为用户信息传输的消息总线,其中EMS的访问控制配置如下:
建立用户数据传输主题(TOPIC),并激活访问控制属性,运行命令如下:
以下是引用片段: create topic topic.masterdata.user addprop topic topic.masterdata.user secure |
建立用户主数据发布用户,运行命令如下:
以下是引用片段: create user mduser 用户主数据发布用户 password=mduserpassw |
建立用户主数据订阅用户组,包括财务、计划、生产、客服四个系统用户,运行命令如下:
以下是引用片段: create user financial 财务用户 password=financialpasswd create user plan 计划用户 password=planpasswd create user product 生产用户 password=productpasswd create user service 客户用户 password=servicepasswd create group submdusers 订阅用户主数据用户组 add member submdusers financial add member submdusers plan add member submdusers product add member submdusers service |
为用户主数据发布用户在主题上设置发布权限,运行命令如下:
以下是引用片段: grant topic topic.masterdata.user user=mduser publish |
为订阅用户主数据用户组在主题上设置持久化订阅权限,运行命令如下:
以下是引用片段: grant topic topic.masterdata.user group=submdusers durable |
根据上述设置,只有用户主数据管理系统使用的mduser用户才能够向topic.masterdata.user主题发送消息;也只有财务、计划、生产、客服四个系统使用的financial、plan、product和service用户才能从topic.masterdata.user主题订阅用户数据信息。使用其他EMS用户对topic.masterdata.user主题进行操作均会出现权限不足异常。
作者
相关推荐
-
AppDynamics引入应用集成平台
AppDynamics的微服务架构应用集成平台(AIP)旨在对跨不同应用环境的应用进行统一监控,此前这一过程需要各种应用及架构相关的管理工具才能做到。
-
为什么要用消息中间件?什么时候用?
消息中间件的主要类型和用户案例有哪些?在众多技术领域里面,中间件往往是厨房的洗涤盆。
-
如何快速切入SOA实施阶段
SOA价值在于实现企业级的业务服务重用,消除软件开发的冗余,提高业务敏捷性,但实现这些价值的前提是要成功的SOA实施。
-
如何找对SOA实施的几大切入点
SOA(面向服务架构)发展至今,对企业来说已经是一项成熟的技术,但对于SOA实施还是有几点是要注意的。