【问题标题】:WAS MQ 7.0.x prevent mqm user to put message on queueWAS MQ 7.0.x 阻止 mqm 用户将消息放入队列
【发布时间】:2014-04-30 05:55:52
【问题描述】:

我是 WAS MQ 的新手。我有一个名为 QM1 的 qmgr 和一个名为 Q1 的本地队列。有一个 MCA 设置为 mqm 的 SVRCONN 通道。

我想阻止通过此通道传入的消息将消息发送到 Q1。 我正在使用 setmqaut,但它没有按我的意愿工作。

【问题讨论】:

  • 谢谢 T.Rob。我正在使用 WAS MQ 7.0.1.8。实际上没有完成代码和原因代码或任何异常。问题是我有两个队列(Q1,Q2);有一个应用程序想要从 Q1 获取消息做一些事情并将结果放在 Q2 中。我可以使用 MCA 用户 ID 来执行此操作吗?我想做一些类似身份验证的事情。
  • 对不起,我把你的问题读反了。我以为你是说mqm ID 被阻止了,而不是它通过了。请看下面的答案。

标签: ibm-mq mq


【解决方案1】:

您无法阻止通过该通道进行特定 API 调用的原因是 MCAUSER('mqm') 设置可确保通过该通道连接的任何内容始终以完全管理权限连接。无法使用setmqaut 或任何其他本机 WMQ 功能来阻止管理员访问队列。无论setmqaut 设置如何,QMgr 始终允许管理员访问。

关于推荐什么有点不清楚,因为没有“WAS MQ”之类的东西。有 WebSphere Application Server (WAS) 和 WebSphere MQ (WMQ)。 WAS 曾经与 WMQ 捆绑在一起,但两者并不是一个产品。

假设您指的是 WebSphere MQ 而不是 WebSphere App Server 与 WMQ 通信,我强烈建议您迁移到现代版本。 WMQ v7.0 已宣布终止生命周期,它缺少 v7.1 及更高版本的身份验证功能。从 v8.0 开始,WMQ 甚至可以验证用户 ID 和密码。

为了在 WMQ 中进行身份验证和应用精细授权,您需要在通道的 MCAUSER 中使用一些值 other 而不是“mqm”。标准建议是将RCVRRQSTRCLUSRCVRSVRCONN 类型的所有通道的MCAUSER 设置为*NOBODY,然后根据有用的信息(例如专有名称)安排对您的通道进行身份验证的证书。验证连接的其他不太有用的方法(因为这些几乎不能称为“身份验证”)包括查看入站连接的 IP 地址或 SVRCONN 上声明的身份。

在 v7.0 中,这些需要退出,BlockIP2 是全球 WMQ 安装基础中使用的标准。在 v7.1 和 v7.5 中,您只需使用标准 MQSC 脚本配置 CHLAUTH 规则即可实现相同的目的。

t-rob.netLinks 页面上的多个会议演示文稿讨论了如何执行此操作。我强烈建议迁移到 WMQ v7.5,特别是因为 you can do so for free 作为开发人员,无论运行 QMgr 的公司购买的许可状态如何。但是,如果 QMgr 处于维护状态,也可以免费升级到 v7.5。如果你等到 6 月,你就可以拥有 v8.0,尽管据我所知,还没有宣布免费的开发者版本的可用性。

【讨论】:

  • 谢谢 T.Rob。在 v7.5 中,我如何希望其他想要连接到我的 QMGR 的应用程序设置用户名和密码?这可能吗?
  • WMQ v8.0 可能会在 6 月发布。旧版本的 WMQ 需要通道安全出口来验证密码。 Capitalware 出售这样的出口,或者可以写一个,但不推荐。编写一个的问题在于它需要系统级的、递归的、可重入的、线程安全的 C 代码。大多数商店在内部没有这种技能,或者愿意在内部为一个组件保持这种技能。这给我带来了很多咨询工作,给客户带来了很多中断。所以等待 v8.0,使用证书,或致电 Capitalware。
  • 感谢您的回复。但还有另一个问题。我有一个 qmgr QM1 和本地队列 Q1 和 Q2。有一个 MCA 设置为 mqm 的 SVRCONN 通道。有多个应用程序连接到我的 QMGR,例如 APP1 和 App2。我希望 App1 只有 PUT 权限,这意味着只有 PUT 消息到 Q1 或 Q2,而 App2 只有 GET 权限,只能从 Q1 或 Q2 获取消息。
  • 每组唯一的授权都需要附加到一个组。然后,当应用程序连接时,它需要作为相应组中的用户 ID 进行连接。 (请记住,访问请求总是解析到特定的主体,但授权附加到组。)一旦你有 app1 和 app2 的组,那么你需要安排 running 通道的 MCAUSER 是相应组中的用户 ID。您可以通过在每个通道中使用硬编码的 MCAUSER 来实现这一点,或者根据 CHLAUTH 规则动态设置 MCAUSER。
  • 谢谢@T.Rob。我在这里问了这个问题:stackoverflow.com/questions/23730710/…。我将为每个应用程序定义 2 个通道,并为它们定义 2 个组。
【解决方案2】:

我搜索了很长时间来解决这个问题,还阅读了T.Rob 的演示文稿,尤其是this 的一个。最后我选择定义CHLAUTH的解决方案,以检查IP想通过哪个连接到我的频道。

我在下面添加CHLAUTH 到我的队列管理器,它可以工作。

SET CHLAUTH('SVRCONN') TYPE(BLOCKUSER) USERLIST('ALLOWANY') WARN(YES) ACTION(ADD)
SET CHLAUTH('SVRCONN') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(NOACCESS)
SET CHLAUTH('SVRCONN') TYPE(ADDRESSMAP) ADDRESS('192.168.148.40-60') MCAUSER('mqm')

我也推荐看看this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多