在Unix + MQ9中为Authorization完成的命令。想要查看(这是一种正确的方法吗?)以及如何在Windows服务器中实现以下命令?
setmqaut -m TLSTEST.QM -t qmgr -p clientadmin +connect +dsp +inq
setmqaut -m TLSTEST.QM -t queue -p clientadmin -n '**' +put +get +browse +dsp +inq
runmqsc TLSTEST.QM
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
ALTER QMGR CHLAUTH(DISABLED)
REFRESH SECURITY TYPE(CONNAUTH)
2017年3月29日更新
是setmqaut可以用作只需要如下所示,而不是'**'?
setmqaut -m TLSTEST.QM -t qmgr -p clientadmin +connect +dsp +inq
setmqaut -m TLSTEST.QM -t queue -p clientadmin -n RECEIVE +put +get +browse +dsp +inq
setmqaut -m TLSTEST.QM -t queue -p clientadmin -n SEND +put +get +browse +dsp +inq
下面的命令对我来说是必需的,因为我的jms-client不会传递有关连接请求的用户详细信息。这是在客户端代码中传递如下或外部化这些值的好方法吗?
MQEnvironment.userID =“mqm”;
MQEnvironment.password =“password”;
runmqsc TLSTEST.QM
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
ALTER QMGR CHLAUTH(DISABLED)
REFRESH SECURITY TYPE(CONNAUTH)
答案 0 :(得分:1)
您在问题中提供的命令在Windows中的工作方式与在Unix中的工作方式相同。
注意您建议的命令会关闭安全性,这不是一件好事,并且还授权用户“clientadmin”到队列管理器上的所有队列,包括允许该用户使用的SYSTEM *队列利用MQ管理权限。
2017年3月29日更新的命令可以为队列SEND和RECEIVE提供特定权限。
在我看来,将userID和password的值外部化是一个很好的方法,这样如果将来这些更改,你就不需要重新编译。
将应用程序连接为mqm并不是一个好方法,因为mqm具有完全的管理权限。
设置CHLAUTH(DISABLED)不会阻止密码检查它只会关闭正常的开箱即用的CHLAUTH规则,这会阻止MQ管理员连接到SVRCONN通道,以及阻止使用SYSTEM。*通道。
从CHCKCLNT(REQDADM)的默认值设置CHCKCLNT(可选)将MQ配置为仅在向MQ提供密码时检查密码是否有效。
默认值CHCKCLNT(REQDADM)与CHCKCLNT(可选)相同,并附加要求具有MQ管理权限的帐户需要提供有效密码。没有MQ管理员权限的帐户不需要提供有效密码,但如果提供密码,则必须有效。
如果您的配置仅适用于CHCKCLNT(可选),则表示您作为具有MQ管理权限的帐户进行连接。
将MQ设置为不强制发送有效密码存在安全问题,除非您使用SSLCIPH和SSLPEER限制SVRCONN仅允许特定客户端证书连接,并确保所有其他通道都被锁定。默认的CHLAUTH规则通过不允许具有MQ管理权限的用户进行连接来锁定所有通道,并阻止与所有SYSTEM *通道的连接。
设置SSLCAUTH(可选)将MQ配置为不要求客户端具有证书,如果客户端具有证书,则MQ将验证它是否可信,如果您具有SSLPEER集,则将确保客户端证书DN值匹配
SSLCAUTH(REQUIRED)将MQ配置为要求客户端具有证书。您还希望将其与通道SSLPEER设置配对,以确保证书是您期望的不仅仅是队列管理器信任的证书,您还希望将MCAUSER设置为低权限用户。
设置CHLAUTH(DISABLED)可能会使SYSTEM。*通道不安全。
如果您没有其他缓解控件,则显示的配置不安全。