我需要帮助,我遇到以下问题:
AMQ9776: Channel was blocked by userid
EXPLANATION:
The inbound channel 'TEST1.SRVCONN' was blocked from address '10.0.2.4'
because the active values of the channel were mapped to a userid which should
be blocked. The active values of the channel were 'MCAUSER(mqm) CLNTUSER(mqm)'.
我有以下权威记录:
DISPLAY CHLAUTH(*)
37 : DISPLAY CHLAUTH(*)
AMQ8878: Ver detalles de registro de autenticación de canal.
CHLAUTH(SYSTEM.ADMIN.SVRCONN) TYPE(ADDRESSMAP)
ADDRESS(*) USERSRC(CHANNEL)
AMQ8878: Ver detalles de registro de autenticación de canal.
CHLAUTH(TEST1.SRVCNN) TYPE(ADDRESSMAP)
ADDRESS(10.0.2.4) USERSRC(CHANNEL)
AMQ8878: Ver detalles de registro de autenticación de canal.
CHLAUTH(TEST1.SRVCNN) TYPE(BLOCKUSER)
USERLIST(mqm)
AMQ8878: Ver detalles de registro de autenticación de canal.
CHLAUTH(SYSTEM.*) TYPE(ADDRESSMAP)
ADDRESS(*) USERSRC(NOACCESS)
AMQ8878: Ver detalles de registro de autenticación de canal.
CHLAUTH(*) TYPE(BLOCKUSER)
USERLIST(*MQADMIN)
所以我不知道我还能做什么,我一直在阅读有关此问题的信息,并创建了连接到该频道的规则,并向用户授予了特权。 ¿我想念什么?
答案 0 :(得分:3)
请注意,对于MQ v8及更高版本,当MQ将MQ客户端用户与USERLIST
规则的TYPE(BLOCKUSER)
或CLNTUSER
规则的TYPE(USERMAP)
比较时,它将可以设置为查看正在运行客户端进程的用户,或者查看MQCSP中显示并由CONNAUTH成功认证的用户。要获得以后的行为,您必须在ChlauthEarlyAdopt=y
的{{1}}节中设置Channels:
。对于在MQ v8.0 LTS和MQ v9.0 LTS下创建的新队列管理器,默认情况下不会对此进行设置,并且MQ将查看正在运行客户端进程的用户。对于MQ v9.0.5 CD,MQ v9.1 LTS和MQ v9.1 CD,默认设置是设置它,MQ将查看在MQCSP中发送并由CONNAUTH成功验证的用户。
请注意,qm.ini
设置是在8.0.0.5处添加的,在此之前,它将始终查看正在运行客户端进程的用户。
默认情况下,MQ附带以下规则:
ChlauthEarlyAdopt
该规则阻止MQ认为具有MQ管理权限的所有用户连接到队列管理器上的任何CHLAUTH(*) TYPE(BLOCKUSER)
USERLIST(*MQADMIN)
通道。
您添加了以下两个规则(注意,除非将ALL添加到DISPLAY命令中,否则它不会显示所有属性,因此我只能讨论您显示的内容)
SVRCONN
第一个(AMQ8878: Ver detalles de registro de autenticación de canal.
CHLAUTH(TEST1.SRVCNN) TYPE(ADDRESSMAP)
ADDRESS(10.0.2.4) USERSRC(CHANNEL)
AMQ8878: Ver detalles de registro de autenticación de canal.
CHLAUTH(TEST1.SRVCNN) TYPE(BLOCKUSER)
USERLIST(mqm)
)将允许从TYPE(ADDRESSMAP)
到此频道的连接,并使用户设置为在该频道上协商的内容。但是由于没有其他任何通过设置ADDRESS(10.0.2.4)
来阻止连接的MAP规则,该规则实际上没有任何作用。
如果您的USERSRC(NOACCESS)
频道的空白SVRCONN
,那么MQ将接受从客户端发送的用户名。对于大多数客户端来说,这是进程正在运行的用户,对于Java和JMS,发送包含空值的任何用户都非常容易。如果客户端发送的用户和通道上的MCAUSER
均为空白,则经过协商的MCAUSER
将是运行消息通道代理进程的用户,在Unix上,通常为MCAUSER
第二条规则(mqm
)实际上是在告诉MQ专门阻止从客户端发送用户TYPE(BLOCKUSER)
的任何通道,这很可能与您试图完成的相反。
如果客户端连接不是管理应用程序,则解决此问题的最佳方法是定义另一个用户,并对该用户授予其所需的权限。
有关如何向低特权用户提供MQ权限的更多详细信息,请参见我对以下问题的回答:Authorization errors with MQ8 + JDk8
允许应用程序连接到不具有安全性的SVRCONN通道不是一个好习惯,您没有提及是否使用mqm
或CONNAUTH
证书在通道上提供安全性,但如果不是,则应使用一个或另一个来锁定可以连接到该频道的人。