我在 Linux 平台上安装了 WebSphere MQ 7.1,之后我安装了 WebSphere Message Broker 8.0.0.1。现在,当我尝试创建执行组时,出现异常:原因代码 2035。此异常表明用户未经授权连接到队列管理器。我在mqm
组中添加了这个用户。我在使用 MQ 7.0.x 时没有遇到任何此类问题。我搜索了很多,才知道在 MQ 7.1 中有用户 ID 阻塞。但是,我希望这个用户能够创建执行组,我该怎么做?请指教。
2 回答
MQ v7.1 中的 MQ 安全性得到了很大改进,与以前的 MQ 版本不同。在 MQ v7.1 中,默认情况下都是 SYSTEM。渠道被封锁。如果您尝试使用这些系统中的任何一个。通道然后您将获得 2035,即 MQRC_NOT_AUTHORIZED。推荐的方法是为代理创建自己的 SVRCONN 通道,并创建通道认证记录以允许用户访问队列管理器。
请参阅此链接以获取 T.Rob 对类似问题的详细回答。
更新:
SVRCONN 通道定义队列管理器的端点,这意味着客户端连接到队列管理器所需的连接信息。客户端应用程序使用这种类型的通道向队列或主题发送和接收消息。
Message Broker 工具包是一个 GUI,您可以使用它来管理消息代理,例如创建执行组、创建流程、部署 bar 文件等。工具包在 Windows 上可用,我猜它在 Linux 上可用。
我知道 MB 工具包需要 SYSTEM.BRK.CONFIG 通道,这是一个连接到队列管理器的 SVRCONN 通道。我认为这是您需要授权以允许 Message Broker 连接到 MQ 的通道。您能否检查是否是这种情况,如果是,则为该频道创建频道身份验证记录?
如果您在 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 的连接,您有以下两种选择:
- 从 mqm 组中删除 mqbrkrs。这允许它在不触发阻止管理员用户的 CHLAUTH 规则的情况下进行连接。您当然需要将 mqbrkrs 组的授权授予它需要访问的所有代理和应用程序队列,因为它不再是 MQ 管理员。
- 覆盖 CHLAUTH 规则以允许代理工具包以管理员身份连接 SYSTEM.BROKER.CONFIG 通道。
作为一名安全专家,我赞成第一种选择。MQ 管理员可以管理代理是不可避免的。但是,可以避免允许代理(以及所有代理流)管理 QMgr。
但是,如果您希望采用第二条路线,则需要覆盖阻止管理员访问的 CHLAUTH 规则。有几种方法可以做到这一点。您可以删除该规则,但这会将您的所有频道打开给管理员连接。更精确的方法是为管理员要连接的通道提供规则。例如:
SET CHLAUTH(SYSTEM.BKR.CONFIG) TYPE(BLOCKUSER) +
USERLIST('*NOACCESS')
由于 WMQ 应用最具体的规则,默认规则被新规则覆盖,但仅适用于SYSTEM.BKR.CONFIG
通道。BLOCKUSER
规则语法允许我们指定拒绝谁而不是允许谁,它采用用户 ID 而不是组 ID 。为了允许管理员访问,有必要指定一些不是*MQADMIN
. 我之所以选择*NOACCESS
它是因为它不能是实际的用户 ID,并且是 WMQ 在其他地方使用的保留字。nobody
您可以轻松使用任何用户 ID ,例如mqm
. (阻止mqm
将允许mqbrkrs
但不允许,mqm
但由于mqbrkrs
在mqm
组中,它不会限制 mqbrkrs 管理 QMgr。)
最后,请注意,任何允许管理员访问的通道都应该经过严格的身份验证。如果您设置的唯一 CHLAUTH 规则是上述规则,那么任何拥有到 QMgr 的网络路由的人都可以通过在连接上声明mqbrkrs
用户 ID 来连接该通道。连接后,他们将完全控制 QMgr,并能够使用mqm
或mqbrkrs
用户 ID 远程匿名执行命令。至少添加一个 CHLAUTH 规则以通过 IP 地址过滤此通道上的连接。或者,更好的是,使用 SSL 并通过证书专有名称过滤连接。