WebSphere MQ v7.1 安全用户凭证

Posted

技术标签:

【中文标题】WebSphere MQ v7.1 安全用户凭证【英文标题】:WebSphere MQ v7.1 Security User Credentials 【发布时间】:2012-03-14 01:31:10 【问题描述】:

运行 WebSphere MQ Server v7.1 的 Linux Server Box:

我在 Linux 中创建了一个属于“mq-users”组的用户“mq-user”。然后我创建了一个队列管理器QM_TEST,并使用 MQSC 发出以下命令来创建队列并设置安全性:

SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('mq-user') AUTHADD(ALL)
SET AUTHREC PROFILE(SYSTEM.MQEXPLORER.REPLY.MODEL) OBJTYPE(QUEUE) PRINCIPAL('mq-user') AUTHADD(INQ,DSP,GET)
SET SET AUTHREC PROFILE(SYSTEM.ADMIN.COMMAND.QUEUE) OBJTYPE(QUEUE) PRINCIPAL('mq-user') AUTHADD(INQ,DSP,PUT)
DEFINE CHANNEL (TEST_CHANNEL) CHLTYPE (SVRCONN) TRPTYPE (TCP) MCAUSER('mq-user')
SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS(*) MCAUSER('mq-user')
DEFINE QLOCAL (TEST_QUEUE)
SET AUTHREC PROFILE(TEST_QUEUE) OBJTYPE(QUEUE) PRINCIPAL('mq-user') AUTHADD(ALL)
DEFINE LISTENER (TEST_LISTENER) TRPTYPE (TCP) CONTROL (QMGR) PORT (1414)
START LISTENER (TEST_LISTENER)

运行 WebSphere MQ Client v7.1 和 WebSphere MQ Explorer 的 Linux Client Box:

我以我的用户名 (arrehman) 登录,该用户名不属于 mq-users 组。但是,我可以通过 Java 应用程序和 MQ Explorer 客户端访问我在上面创建的队列,而无需传递任何用户凭据。如果安全有效,为什么会这样?

需要任何进一步的细节,请告诉我。谢谢。

【问题讨论】:

【参考方案1】:

这一行:

SET CHLAUTH(TEST_CHANNEL) TYPE(ADDRESSMAP) ADDRESS(*) MCAUSER('mq-user')

这样说:

对于请求TEST_CHANNEL的连接... 源自任何 IP 地址... 将 MCAUSER 设置为 mq-user

换句话说,启用通道以使任何连接都继承mq-user 的权限,而不管它们来自何处以及它们呈现什么身份。因此,您看到的行为是基于上述CHLAUTH 规则的预期行为。

列出的规则还有一些其他问题:

使用PRINCIPAL 而不是GROUP。在非 Windows 服务器上,如果您指定 PRINCIPAL,QMgr 会查找该 ID,查询其主要组,然后根据该 ID 设置授权。所以如果mq-users 有一个staffusers 的主要组,那就是获得授权而不是mq-users 并且可能不是您想要的。始终使用group,这样您就可以通过setmqautAUTHREC 获得您想要的结果。 在 QMgr 上授予 ALL 会使 ID/组具有管理性。 QMgr 级别的权限之一是SET,组中具有SET 权限的任何用户都可以设置授权控制列表等。因此,即使您只授予了AUTHADD(INQ,DSP,PUT)mq-users ID 也可以提交 PCF 命令以授予对所有对象的所有访问权限。如果您只需要在 QMgr 上授予 CONNECTINQUIRE 有一个假设(实际上是粗体字),您预计需要传递用户凭据。请注意,如果您确实提供了用户 ID 和密码,WMQ 不会验证它们。它接受您声明的 ID。密码字段可用于出口,可用于针对例如 LDAP 或本地操作系统验证 ID 和密码。这样的出口可以从第 3 方购买或编写,但基本 WMQ 不会对密码做任何事情。如果您在映射中指定了USERSRC(CHANNEL),那么您的 ID 将被使用并且很可能被拒绝。但拒绝可能是因为它在 mqm 组中(被默认的 CHLAUTH 规则阻止),或者因为它所在的组没有 AUTHREC 记录。

有关强化 WMQ 的更多信息,收集了许多资源here。 强化 WebSphere MQ 演示来自 v7.0。虽然 v7.1 有新的控制,但原则保持不变:

使用 IP 过滤(适用于连接源自锁定数据中心的应用或 QMgrs)、SSL/TLS 和/或出口验证连接 通过在通道中硬编码或使用退出或CHLAUTH 规则动态设置将经过身份验证的身份映射到MCAUSER 值 应使用 TLS 对管理连接和高价值应用程序进行身份验证

【讨论】:

T.Rob,这个问题是根据您的回答写的。像往常一样出色的工作,我将按照您的建议解决问题。这让我现在在安全方面感觉好多了。我将阅读“强化安全性”文章,如果我有问题,我会在这里发布。谢谢! 我将 BROWSE、CLR、CONNECT、DSP、GET、INQ、PUT、SETALL 的所有组合都提供给了队列管理器,但是 MQ Explorer 无法连接到它,我缺少哪个授权?如果我全力以赴。 您确定您授权的对象是正确的吗?我刚刚启动了一个 QMgr 并授予 +inq +dsp +connect 并且效果很好。另一方面,+browse+get 和其他不适用于 QMgr 的会导致错误 AMQ7097: You gave an authorization specification that is not valid. 我的错,我不知道我是怎么做到的!现在很好,谢谢 Rob。 我们会把它归结为小精灵。 ;-) 很高兴它现在可以工作了!

以上是关于WebSphere MQ v7.1 安全用户凭证的主要内容,如果未能解决你的问题,请参考以下文章

WebSphere MQ 7.1 帮助需求 - 访问或安全性

websphere MQ 7.0 - 接受任何用户

提供对 IBM WebSphere MQ 的匿名访问

IBM Websphere MQ 基本实验操作

如何将用户定义的用户名从 IBM Websphere Application 服务器传递到 AS400 MQ 服务器进行身份验证?

IBM WebSphere MQ安装集成