无法连接到WebSphere MQ 7.1中的队列管理器

时间:2012-10-15 05:49:03

标签: security ibm-mq mq userid messagebroker

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

2 个答案:

答案 0 :(得分:6)

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

有关类似问题的T.Rob详细解答,请参阅此link

<强>更新

SVRCONN通道定义队列管理器的端点,表示客户端连接到队列管理器所需的连接信息。客户端应用程序使用此类型的通道向/从队列或主题发送和接收消息。

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

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

答案 1 :(得分:5)

如果你在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“如果有人尝试使用管理用户ID通过SVRCONN连接,在所有情况下都会阻止连接。”

要允许来自Broker Toolkit的连接,您有以下两种选择:

  1. 从mqm组中删除mqbrkrs。这允许它在不触发阻止管理员用户的CHLAUTH规则的情况下进行连接。当然,您需要将mqbrkrs组的授权授予它需要访问的所有代理和应用程序队列,因为它不再是MQ管理员。
  2. 重写CHLAUTH规则以允许代理工具包以SYSTEM.BROKER.CONFIG通道的管理员身份进行连接。
  3. 作为安全专家,我赞成第一种选择。 MQ管理员可以管理代理是不可避免的。但是,可以避免允许代理(以及扩展所有代理流程)来管理QMgr。

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

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

    由于WMQ应用了最具体的规则,默认规则会被新规则覆盖,但仅适用于SYSTEM.BKR.CONFIG频道。 BLOCKUSER规则语法允许我们指定拒绝的人但不允许允许的人,并且它使用用户ID而不是组ID。为了允许管理员访问,有必要指定不是*MQADMIN ID。我选择了*NOACCESS,因为它不是实际的用户ID,而是WMQ在其他地方使用的保留字。您可以轻松使用任何用户ID,例如nobody甚至mqm。 (阻止mqm将允许mqbrkrs但不允许mqm,但由于mqbrkrs位于mqm组,因此不会限制mqbrkrs管理QMgr。)

    最后,请注意,任何允许管理员访问的频道都应进行强身份验证。如果您设置的唯一CHLAUTH规则是上面的规则,则具有到QMgr的网络路由的 anybody 可以通过在连接上声明mqbrkrs用户ID来连接该通道。连接后,他们可以完全控制QMgr,并能够使用mqmmqbrkrs用户ID远程,匿名执行命令。至少添加一个CHLAUTH规则来按IP地址过滤此通道上的连接。或者,更好的是,使用证书专有名称的SSL和过滤器连接。