我在Linux平台上安装了WebSphere MQ 7.1,之后我安装了WebSphere Message Broker 8.0.0.1。现在,当我尝试创建一个执行组时,我得到一个异常:原因代码2035.此异常表明用户未经授权连接到队列管理器。我在mqm
组中添加了此用户。当我使用MQ 7.0.x时,我没有遇到任何此类问题。我经常搜索并发现MQ 7.1中存在用户ID阻塞。但是,我希望这个用户能够创建执行组,我该怎么办?请指教。
答案 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的连接,您有以下两种选择:
作为安全专家,我赞成第一种选择。 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,并能够使用mqm
或mqbrkrs
用户ID远程,匿名执行命令。至少添加一个CHLAUTH规则来按IP地址过滤此通道上的连接。或者,更好的是,使用证书专有名称的SSL和过滤器连接。