IBM MQ 认证和授权

时间:2021-03-14 08:43:16

标签: authentication authorization ibm-mq messaging

按照我目前的理解,所有的客户端连接都是通过两个级别的认证,通道级别和队列管理器级别,

在队列管理器级别,它使用 CONNAUTH 对象的 QMGR 属性值来确定如何完成身份验证(例如:使用主机操作系统用户存储库),如果 AUTHINFO 对象指定 AUTHINFO,则它使用 ADOPTCTX(YES) 结构中包含的用户 ID 作为应用程序上下文的用户 ID,并用于授权或如果 {{1}在那里,运行客户端应用程序的用户 ID 用作应用程序上下文的用户 ID,而该用户 ID 用于授权。

在渠道层面,没有做任何与授权有关的事情。只有身份验证发生在那里配置。为了进行更精细的访问控制,将一组通道身份验证记录应用于通道。 MQCSPADOPTCTX(NO) 属性值仍用于确定要对其进行身份验证的用户存储库。

问题:

  1. 到目前为止我是否正确? (非常感谢更正/解释。)
  2. 通道对象的 MCAUSER 属性有什么作用?它的目的是什么?为什么消息通道代理在哪个用户下运行很重要?
  3. 毕竟,通道级别的身份验证实际上如何与 MCAUSER 配合使用?
  4. 这两个身份验证程序是按什么顺序完成的?通道认证是先做的吗?

1 个答案:

答案 0 :(得分:3)

您是正确的,应该分两个阶段考虑客户端连接的 MQ 应用程序的安全性。有一个认证阶段(你是谁?证明它!)和一个授权阶段(现在我知道你是谁,你可以做你想做的事吗?)。

客户端连接的 MQ 应用程序的身份验证可以通过检查应用程序(在 MQCSP 中)或通道级别的某些内容提供的用户 ID 和密码来完成。这本质上是对通道连接进行身份验证,但它与客户端应用程序密不可分。此通道身份验证可以使用 TLS 证书或安全出口以任何您喜欢的方式询问远程方。 [也有 IP 地址过滤,但我不会称之为身份验证]。

这些身份验证的目的是确定连接方是谁(并在必要时拒绝他们!)并为下一步(授权检查)分配适当的用户 ID。可以通过接受密码验证的用户 ID (ADOPTCTX(YES)) 来分配此用户 ID;通过使用 CHLAUTH 规则映射证书 DN(或 IP 地址);通过安全出口设置 MCAUSER;或者通过简单地将用户 ID 硬编码到 MCAUSER 中(不是身份验证,但仍然是一种为以后的授权检查分配用户 ID 的方法)。所有这些都有一个共同点,它们所做的最终都在运行的 SVRCONNMCAUSER 字段中。您可以使用 DISPLAY CHSTATUS 显示它。

客户端连接的 MQ 应用程序的授权与本地绑定的 MQ 应用程序一样。根据相同的规则检查相同的操作。是否允许此用户“打开此队列进行放置”,或“查询此 QMgr 对象”,或“订阅此主题”等。区别仅在于如何获取该授权检查中使用的用户 ID - 即如何获取进入MCAUSER

总结(并检查我是否已经涵盖了您的所有问题):-

  1. 有点 - 阅读上面的文字
  2. 运行时的 MCAUSER 属性包含此客户端应用程序的最终确定的用户 ID。在定义时,可以将其硬编码为用户 ID(有些人使用此方法将垃圾用户 ID 硬编码为 CHLAUTH 支持规则旁边的腰带和大括号)。
  3. 通道级身份验证实质上设置了 MCAUSER 的运行时值
  4. 身份验证发生在授权之前。

进一步阅读