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
有一个staff
或users
的主要组,那就是获得授权而不是mq-users
并且可能不是您想要的。始终使用group
,这样您就可以通过setmqaut
或AUTHREC
获得您想要的结果。
在 QMgr 上授予 ALL
会使 ID/组具有管理性。 QMgr 级别的权限之一是SET
,组中具有SET
权限的任何用户都可以设置授权控制列表等。因此,即使您只授予了AUTHADD(INQ,DSP,PUT)
,mq-users
ID 也可以提交 PCF 命令以授予对所有对象的所有访问权限。如果您只需要在 QMgr 上授予 CONNECT
和 INQUIRE
有一个假设(实际上是粗体字),您预计需要传递用户凭据。请注意,如果您确实提供了用户 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 帮助需求 - 访问或安全性
如何将用户定义的用户名从 IBM Websphere Application 服务器传递到 AS400 MQ 服务器进行身份验证?