我已经在 Linux 平台上安装了 WebSphere MQ 7.1,之后我安装了 WebSphere Message Broker 8.0.0.1。现在,当我尝试创建一个执行组时,我收到一个异常:原因代码 2035。此异常表明用户未获授权连接到队列管理器。我将此用户添加到 mqm
组中。我在使用 MQ 7.0.x 时没有遇到任何此类问题。我搜索了很多,才知道MQ 7.1 中存在用户ID 阻塞。但是,我希望这个用户能够创建执行组,我该怎么做?请指教。
最佳答案
如果您在 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 的连接,您有以下两种选择:
作为安全专家,我赞成第一种选择。 MQ 管理员可以管理代理是不可避免的。但是,可以避免允许代理(以及所有代理流)管理 QMgr。
但是,如果您希望采用第二条路线,则需要覆盖阻止管理员访问的 CHLAUTH 规则。有几种方法可以做到这一点。您可以删除该规则,但这会打开 所有 您的 channel 到管理员连接。更精确的方法是为管理员要连接的 channel 提供规则。例如:
SET CHLAUTH(SYSTEM.BKR.CONFIG) TYPE(BLOCKUSER) +
USERLIST('*NOACCESS')
由于 WMQ 应用最具体的规则,默认规则被新规则覆盖,但仅适用于
SYSTEM.BKR.CONFIG
channel 。 BLOCKUSER
规则语法允许我们指定拒绝谁而不是允许谁,它需要用户 ID 而不是组 ID。为了允许管理员访问,有必要指定一些不是 *MQADMIN
的 ID。我选择 *NOACCESS
是因为它不能是实际的用户 ID,并且是 WMQ 在其他地方使用的保留字。您可以轻松使用任何用户 ID,例如 nobody
甚至 mqm
。 (阻止 mqm
将允许 mqbrkrs
但不允许 mqm
但是因为 mqbrkrs
在 mqm
组中,它不会限制 mqbrkrs 管理 QMgr。)最后,请注意,任何允许管理员访问的 channel 都应该经过严格的身份验证。如果您设置的唯一 CHLAUTH 规则是上述规则,那么任何拥有到 QMgr 的网络路由的人都可以通过在连接上声明
mqbrkrs
用户 ID 来连接到该 channel 。连接后,他们将完全控制 QMgr 并能够使用 mqm
或 mqbrkrs
用户 ID 远程匿名执行命令。至少添加一个 CHLAUTH 规则以按 IP 地址过滤此 channel 上的连接。或者,更好的是,使用 SSL 并按证书专有名称过滤连接。
关于security - 无法连接到 WebSphere MQ 7.1 中的队列管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12889953/