AMQ9776:频道被阻止

时间:2018-09-27 21:30:18

标签: ibm-mq

我需要帮助,我遇到以下问题:

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)     

所以我不知道我还能做什么,我一直在阅读有关此问题的信息,并创建了连接到该频道的规则,并向用户授予了特权。 ¿我想念什么?

1 个答案:

答案 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通道不是一个好习惯,您没有提及是否使用mqmCONNAUTH证书在通道上提供安全性,但如果不是,则应使用一个或另一个来锁定可以连接到该频道的人。