Ibm mq 如何在多个远程客户端之间共享Websphere MQ QM和侦听器?

Ibm mq 如何在多个远程客户端之间共享Websphere MQ QM和侦听器?,ibm-mq,Ibm Mq,为了利用系统资源,我需要在多个客户机之间共享QM及其侦听器 我关心的是安全-访问控制。 由于所有客户端都可以访问侦听器端口,所以我不能使用防火墙来管理访问权限 如何确保客户端只能访问共享QM下的特定队列? 我知道我可以将MCAUSER分配给客户端级别的通道,但是,是什么让客户端只能连接到特定的通道 我已将MCAUSER分配给频道并设置权限。 现在,从客户机java JMS API中,我如何连接到该特定通道,以及什么禁止其他客户机连接到该特定通道?您的思路是正确的。我建议阅读IBM会议上的安全演示

为了利用系统资源,我需要在多个客户机之间共享QM及其侦听器

我关心的是安全-访问控制。 由于所有客户端都可以访问侦听器端口,所以我不能使用防火墙来管理访问权限

如何确保客户端只能访问共享QM下的特定队列? 我知道我可以将MCAUSER分配给客户端级别的通道,但是,是什么让客户端只能连接到特定的通道

我已将MCAUSER分配给频道并设置权限。
现在,从客户机java JMS API中,我如何连接到该特定通道,以及什么禁止其他客户机连接到该特定通道?

您的思路是正确的。我建议阅读IBM会议上的安全演示文稿作为背景。转到并向下滚动一点

请记住,客户端可以指定除您为其设置的频道名称之外的任何频道名称,因此除了在一个频道上设置MCAUSER外,还需要在所有频道上设置MCAUSER。名为
SYSTEM.DEF.*
SYSTEM.AUTO.*
的频道应使用不能用作valis用户ID的MCAUSER禁用。我们目前建议使用
MCAUSER('*NOACCESS')
,因为
*NOACCESS
在WMQ V7.1及更高版本中是保留字

现在您已经阻止了未使用的通道,您需要安排将客户端连接映射到它们各自的用户ID。根据您拥有的WMQ QMgr版本的不同,执行此操作的方式也不同。在V7.0及更早版本中,它需要退出。位于的BlockIP2出口是社区多年来为之做出贡献的出口,由IBM员工拥有和维护。在V7.1及更高版本中,BlockIP2中的函数在WMQ中作为CHLAUTH规则本机实现

具体而言,退出或V7.1中的CHLAUTH规则允许您将连接客户端的断言ID、IP地址或SSL可分辨名称映射到用户ID,以便在进行通道连接时放入MCAUSER


如果您需要验证用户ID和密码,那么您需要编写或购买一个出口来进行验证。此时WMQ和BlockIP2都不会验证ID和密码。然而,像Capitalware这样的商业伙伴出售的出口正是这样做的。如果您希望编写这样的退出,BlockIP2源代码是一个很好的起点。

服务器上的WMQ版本是什么?谢谢@rob。这很有帮助。不过,使用JMS API的客户机如何传递其用户ID?是否是连接createConnection(字符串用户ID、字符串密码)?根据您的回复,是否只使用用户ID?所以我仍然必须使用基于IP的规则?正确。WMQ除了使密码可供出口使用外,对密码不做任何处理。如果不存在用于验证ID和密码的出口,WMQ只使用提供的ID,正如您的示例所示,该ID可以由程序员或用户断言。目前,您可以选择使用IP筛选、证书可分辨名称筛选或映射显示的ID。V7.1和更高版本中的CHLAUTH规则允许其他选项,包括“接受用户提供的ID,只要它不是管理性的”和“阻止这些特定ID”。我明白了。MQ何时在通道中使用MCAUSER集,何时从客户端createConnection传递MCAUSER集(字符串用户ID、字符串密码)?假设我对所有通道使用一个禁用的MCAUSER,并仅授予客户端应传递的用户ID的权限。那我安全吗?它会强制客户端传递用户ID吗?如果没有,它将无法执行任何操作?如果在通道中设置MCAUSER,则会覆盖客户端可能发送的任何内容。如果您将MCAUSER('trob')放入,而我将'mqm'作为ID发送,则通道将作为'trob'连接。唯一可以覆盖通道MCAUSER的是安全出口。至于何时信任客户端发送的ID的问题,只有当您有出口对其进行身份验证时(V7.0及更早版本),或者如果您有CHLAUTH rule BLOCKUSER(“*MQADMIN”)(V7.1及更高版本)。CHLAUTH规则仍然允许非管理员伪造彼此的ID,但不允许成为管理员。要获得更强的身份验证,请使用SSL或exit.Wow。因此,我不妨将MCAUSER放在通道上,只使用BlockIP2或CHLAUTH来过滤客户端IP。下一个级别是a)验证用户和密码的空MCAUSER+安全出口,或b)SSL。谢谢@trob