websphere MQ 7.0 - 接受任何用户

websphere MQ 7.0 - accept any user

连接到我们的 Websphere MQ 7.0 服务器的客户端收到错误代码 2035。

这是因为每个用户都使用自己的用户名连接。他们无法改变这种行为。解决这个问题非常简单。我只需将用户名添加到 mqm 组 (linux) 及其工作。

问题是,我无法将所有用户添加到 mqm 组。这一直在变化。

有没有办法让每个人都能连接和发送数据?

如果您忽略允许任何人访问 MQ 资源的安全隐患,则可以通过伪组 "nobody" 授予该权限。在 Unix 平台上,每个用户都被视为该组的成员,即使它实际上并不存在。

所以

setmqaut -t qmgr -m QM1 -g nobody +connect

将授予所有用户连接权限。类似的事情可以用通配符('**')来完成,用于设置队列等权限

正如马克所说:

If you ignore the security implications of allowing anyone to access MQ resources

我建议您了解如何正确执行 MQ 安全性,因为它真的很容易。您可以使用用户已经在的组或创建新组并仅向其中添加那些特定的 UserId。请不要将非 MQAdmin UserIds 放在 'mqm' 组中。安全性差,安全性非常差。

假设您有一堆以 'ABC' 开头的队列,并且支持团队需要完全访问权限。您可以创建一个名为 'abc_rw' 的组(允许 read/write)并放置所有需要完全权限的 UserId。因此,setmqaut 命令将是:

setmqaut -m {QM_NAME} -t qmgr -g abc_rw +connect +inq +dsp
setmqaut -m {QM_NAME} -n ABC.** -t queue -g abc_rw +allmqi +dsp

其中 {QM_NAME} 是队列管理器的名称。

第一行设置组 'abc_rw' 访问队列管理器的权限。 第 2 行授予组 'abc_rw' 访问所有以 'ABC.'.

开头的队列的权限

就是这样。就这么简单。不要忘记在发出任何 setmqaut 命令后发出 REFRESH SECURITY 命令。

现在,如果用户使用列出队列管理器队列的工具,那么您将需要授予他们这样做的权限。同样很容易。

setmqaut -m {QM_NAME} -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue -g abc_rw +put +inq +dsp
setmqaut -m {QM_NAME} -n SYSTEM.DEFAULT.MODEL.QUEUE -t queue -g abc_rw +get +inq +dsp

第一行授予组 'abc_rw' 将消息放入命令队列的权限,MQ 工具执行此操作以请求队列列表。 第 2 行授予组 'abc_rw' 使用模型队列创建临时动态队列的权限,MQ 工具将从中读取回复消息。