WebSphere MQ v7.1安全性用户凭据

arr*_*man 2 java jms ibm-mq

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

我创建了一个用户'mq-user',它属于Linux中的'mq-users'组.然后我创建了一个队列管理器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)
Run Code Online (Sandbox Code Playgroud)

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

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

如需更多详细信息,请告知我们.谢谢.

T.R*_*Rob 6

这一行:

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,则查询其主要组,然后根据该组设置授权.因此,如果mq-users有一个主要组staffusers那个是获得授权的,而mq-users不是你想要的.始终使用,group以便获得您想要的结果setmqautAUTHREC.
  • 授予ALLQMgr使ID /组管理.QMgr级别的权限之一是SET,具有SET权限的组中的任何用户都可以设置授权控制列表等.因此,即使您只授予AUTHADD(INQ,DSP,PUT)mq-usersID,也可以提交PCF命令来授予对所有对象的所有访问权限.只有授予CONNECTINQUIREQMgr,如果你需要的全部.
  • 有一个假设(实际上是粗体)表示您需要传递用户凭据.请注意,如果您提供用户ID和密码,WMQ不会验证用户ID和密码.它接受您断言的ID.密码字段可用于退出,可用于验证ID和密码,例如LDAP或本地操作系统.这样的退出可以从第三方购买或写入,但基本WMQ不对密码做任何事情.如果您USERSRC(CHANNEL)在映射上指定了,那么您的ID将被使用并且很可能被拒绝.但拒绝可能是因为它在mqm组中(被默认CHLAUTH规则阻止),或者因为AUTHREC它所在的组没有记录.

有关加强WMQ的更多信息,此处收集了大量资源.该硬化的WebSphere MQ表现为V7.0.虽然v7.1有新的控件,但是主体保持不变:

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