2012-10-15 108 views
3

我已经在Linux平台上安装了WebSphere MQ 7.1,之后我安装了WebSphere Message Broker 8.0.0.1。现在,当我尝试创建一个执行组时,我得到一个异常:原因码2035.此异常表明用户未经授权连接到队列管理器。我在mqm组中添加了此用户。当我使用MQ 7.0.x时,我没有遇到任何此类问题。我搜索了很多,并且知道MQ 7.1中存在用户标识阻止。但是,我希望这个用户能够创建执行组,我该怎么做?请指教。无法连接到WebSphere MQ 7.1中的队列管理器

回答

4

如果你创建在V7.1或以上的新QMGR,它带有以下默认CHLAUTH规则:

SET CHLAUTH(SYSTEM.ADMIN.SVRCONN)   TYPE(ADDRESSMAP) 
    DESCR(Default rule to allow MQ Explorer access) 
    ADDRESS(*) 
    MCAUSER()        USERSRC(CHANNEL) 

SET CHLAUTH(SYSTEM.*)      TYPE(ADDRESSMAP) 
    DESCR(Default rule to disable all SYSTEM channels) 
    ADDRESS(*) 
    MCAUSER()        USERSRC(NOACCESS) 

SET CHLAUTH(*)        TYPE(BLOCKUSER) 
    DESCR(Default rule to disallow privileged users) 
    USERLIST(*MQADMIN) 

底部的一个告诉QMGR“如果有人试图将SVRCONN进行连接使用管理用户标识,在所有情况下都会阻止连接。“

要允许从Broker Toolkit中的连接,你有两个选择如下:

  1. 从MQM组中删除mqbrkrs的。这允许它在不触发阻止管理员用户的CHLAUTH规则的情况下进行连接。您当然会被要求将mqbrkrs组的授权授予其需要访问的所有代理和应用程序队列,因为它不再是MQ管理员。
  2. 覆盖CHLAUTH规则以允许代理工具包以SYSTEM.BROKER.CONFIG通道上的管理员身份进行连接。

作为安全专家,我赞成第一种选择。 MQ管理员可以管理代理是不可避免的。但是,可以避免允许经纪人(以及所有经纪人流程)来管理QMgr。

但是,如果您想采用第二条路线,则需要覆盖阻止管理员访问的CHLAUTH规则。有几种方法可以做到这一点。您可以删除规则,但打开全部您的频道到管理员连接。更准确的方法是仅为管理员要连接的通道提供规则。例如:

SET CHLAUTH(SYSTEM.BKR.CONFIG) TYPE(BLOCKUSER) + 
    USERLIST('*NOACCESS') 

由于WMQ应用最具体的规则,默认规则是由新的,但只为SYSTEM.BKR.CONFIG渠道覆盖。 BLOCKUSER规则语法允许我们指定拒绝谁,但不允许谁,并且需要用户ID而不是组ID。为了允许管理员访问,有必要指定某些 ID不是*MQADMIN。我选择了*NOACCESS,因为它不能成为实际的用户ID,并且是其他地方WMQ使用的保留字。您可以轻松使用任何用户ID,例如nobody或甚至mqm。 (阻塞mqm将使mqbrkrs但却没有mqm因为mqbrkrsmqm组中,将不会限制从管理的QMGR mqbrkrs的。)

最后请注意,它允许管理员访问任何通道应严格验证。如果您设置的唯一CHLAUTH规则是上述规则,那么带有到QMgr的网络路由的任何人都可以通过在连接上声明mqbrkrs用户ID来连接该通道。一旦连接,他们就可以完全控制QMgr以及使用mqmmqbrkrs用户ID远程匿名执行命令。至少添加一个CHLAUTH规则来按IP地址过滤此通道上的条件。或者,更好的方法是使用SSL和按证书专有名称筛选连接。

+0

..非常感谢您的回答,他们非常有用..我开始认识MQ 7.1及其安全特性。我也能够成功创建执行组。感谢名单.. – Tanu

6

MQ v7.1中的MQ安全性得到了很大的改进,并且与之前MQ版本中的不同。在MQ v7.1中,默认情况下所有SYSTEM。 频道被阻止。如果您尝试使用这些系统中的任何一个。渠道,那么你将得到2035这是MQRC_NOT_AUTHORIZED。推荐的方法是为代理创建自己的SVRCONN通道并创建通道认证记录以允许用户访问队列管理器。

请参阅此link以获得T.Rob在类似问题上的详细解答。

更新:

甲SVRCONN信道定义了一个队列管理器意味着由客户端连接到一个队列管理器所需的连接信息的端点。客户端应用程序使用这种类型的通道来发送和接收来自队列或主题的消息。

消息代理工具包是您可以用来管理消息代理的GUI,例如创建执行组,创建流程,部署条形文件等。工具包在Windows上可用,我猜它可以在Linux上使用。

我知道MB工具包需要SYSTEM.BRK.CONFIG通道,它是SVRCONN通道连接到队列管理器。我认为这是您需要授权允许Message Broker连接到MQ的渠道。你可以检查是否是这种情况,如果是这样的话,为该频道创建频道认证记录?

+0

感谢您的回复。根据给定的链接...你可以告诉我哪些所有渠道我应该设置CHLAUTH?因为在这个链接上它给了:SET CHLAUTH('JAVA.CHANNEL')TYPE(USERMAP)CLNTUSER('mqbrkrs')USERSRC(MAP)MCAUSER('mqbrkrs')ACTION(ADD)..但是通过这个命令,我会只能在'JAVA.CHANNEl'上授权mqbrkrs。在我需要设置授权的其他渠道上,以便mqbrkrs(在mqm组中添加)能够创建执行组?另外,请告诉我我是否也需要从mqm组中删除mqbrkrs?那么,mqbrkrs不再是管理员用户? – Tanu

+0

从V7.1开始,您必须为您定义的每个* SVRCONN通道提供访问权限。定义频道和授权群组将允许非管理员用户进行连接。对于拥有管理员权限的用户,您还必须覆盖阻止管理员用户的CHLAUTH规则。最好的建议是每个频道**这样做,而不是删除或禁用规则。如果可能的话,请将mqbrkrs从mqm组中取出。只保留mqm组中的实际MQ管理员。 Shashi - 感谢您的链接! –

+0

@ T.Rob ..我mqbrkrs在mqm组中添加..我会告诉你我到现在为止做了什么..我禁用CHLAUTH ..之后,事情工作正常..但我不想这个..现在..我删除了队列管理并重新创建它,以便启用身份验证。现在我执行:SET CHLAUTH(*)TYPE(QMGRMAP)QMNAME(NSPZPAI1)USERSRC(MAP)MCAUSER('mqbrkrs')setmqaut -m NSPZPAI1 -n ** -t queue -g mqbrkrs + dsp + inq + put +得到,但我仍然得到“2035”。请告知,因为它非常重要。 – Tanu

相关问题