Tibco EMS 初级使用方法小结

(http://tomboxfan.iteye.com/blog/340006)


   TIBCO Enterprise Message Service 是一个消息服务器产品,它采用C语言编写,
完全支持JMS的通讯协议,在运行速度和消息吞吐量上表现非常出色,
对于WindowsLinuxMacAIX平台都提供支持,关于这个产品,我也是刚刚接触不久,
以下是本人一段时间使用的一个小结:

1、将EMS设置为控制访问模式
      默认安装好的EMS对于消息队列(Queue 或者消息主题(Topic 的访问是不需要口令的,
显然在任何生产环境中都不会让这样的设置存在,我们第一步要做的事情就是打开服务的访问控制:
启动 EMS Administration Tool ,使用管理员(admin)身份登录,密码初始为空,敲入命令

tcp://192.168.1.23:7222> set server authorization=enabled

Server parameters have been changed

2
、更改管理员登录口令
      设置好了访问控制,下一步就是修改管理员密码:
tcp://192.168.1.23:7222> set password admin admin
Password of user 'admin' has been modified

set password 
是一个控制命令,这句话的意思是将用户 admin 的密码设置为 admin

3、创建用户和用户组
      创建用户组 emsgroup
tcp://192.168.1.23:7222> create group emsgroup
Group 'emsgroup' has been created
      
创建用户 emsuser
tcp://192.168.1.23:7222> create user emsuser password=emsuser
User 'emsuser' has been created
       
将用户添加至用户组中:
tcp://192.168.1.23:7222> add member emsgroup emsuser
Group 'emsgroup' has been modified
       
查看用户是否添加成功:
tcp://192.168.1.23:7222> show group emsgroup
 Group:        emsgroup
 Description:
 Users:        1
       
以上显示组 emsgroup 中有一个用户,显然就是 emsuser 这个用户。
 
4
、创建消息队列
      创建一个名叫 nanjing 的消息队列:
tcp://192.168.1.23:7222> create queue nanjing
Queue 'nanjing' has been created
            
5
、为用户分配访问权限
      为用户 emsuser 分配 receivesendbrowse 的权利:
tcp://192.168.1.23:7222> grant queue nanjing emsuser receive,send,browse
Permissions have been changed

      
好了,现在就可以使用 JMS 客户端向服务器的7222端口上发送消息了,使用的用户名就是我们
刚才设置的 emsuser 口令是 emsuser,消息队列的名称:nanjing



===========================================================



TIBCO EMS是一款基于JMS标准的消息中间件产品,具有良好的扩展性、易用性和高效性,很多客户将其作为企业内部的消息总线,在企业应用集成平台架构中担任重要的角色,因此,它的安全性也就显的非常重要,往往会影响到整个企业应用集成平台的运行。在默认情况下,TIBCO EMS对连接用户没有任何限制,即使没有用户名和密码,用户一样可以连接到消息服务器,并对服务器中的主题及队列进行操作。本文中,我们将一步步打造安全的TIBCO EMS消息服务器。

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的访问控制配置如下:

l  建立用户数据传输主题(TOPIC),并激活访问控制属性,运行命令如下:

createtopic topic.masterdata.user

addproptopic topic.masterdata.user secure

l  建立用户主数据发布用户,运行命令如下:

create user mduser 用户主数据发布用户 password=mduserpassw

l  建立用户主数据订阅用户组,包括财务、计划、生产、客服四个系统用户,运行命令如下:

create user financial 财务用户 password=financialpasswd

create user plan 计划用户 password=planpasswd

create user product 生产用户 password=productpasswd

create user service 客户用户 password=servicepasswd

create groupsubmdusers 订阅用户主数据用户组

add member submdusersfinancial

add member submdusers plan

add member submdusersproduct

add member submdusersservice

l  为用户主数据发布用户在主题上设置发布权限,运行命令如下:

grant topic topic.masterdata.useruser=mduser publish

l  为订阅用户主数据用户组在主题上设置持久化订阅权限,运行命令如下:

grant topictopic.masterdata.user group=submdusers durable

 

根据上述设置,只有用户主数据管理系统使用的mduser用户才能够向topic.masterdata.user主题发送消息;也只有财务、计划、生产、客服四个系统使用的financial、plan、product和service用户才能从topic.masterdata.user主题订阅用户数据信息。使用其他EMS用户对topic.masterdata.user主题进行操作均会出现权限不足异常。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值