使用通道认证记录 (CHLAUTH) 时解决某些访问问题的步骤和示例。
关于本任务
CHLAUTH 处理有三个缺省规则:
- 任何
MQ-admin* 用户都不接受所有通道
- 不接受所有 SYSTEM.* 所有用户的通道
- ALLOW 访问 SYSTEM.ADMIN.SVRCONN 通道 (非
MQ-admin 用户)
前两个规则会阻止对所有通道的访问。 如果通道是 SYSTEM.ADMIN.SVRCONN 通道,因此允许在该通道上进行访问。
CHLAUTH 规则用于确定是否可以启动通道,并且它们允许通过 MCAUSER 映射到另一个用户标识。 如果无法启动通道,那么通常会发生以下错误:
rc 2035 mqrc_not_authorized
RC 2059 mqrc_q_mgr_not_available
AMQ4036 不允许访问
AMQ9776: 通道已被用户标识阻塞
AMQ9777: 通道已阻塞
MQJE001: 发生 MQException: 完成代码 2 ,原因 2035
MQJE036: 队列管理器已拒绝连接尝试
您应该严格阻止访问,然后添加更多 CHLAUTH 规则以控制谁可以访问和启动通道。
作为临时措施,要对列出的错误进行故障诊断,请完成以下任何步骤。
过程
- 禁用 CHLAUTH 规则
作为临时措施,并且为了对以上错误进行故障诊断,您可以禁用 CHLAUTH 规则。 可以随时重新启用这些规则,如果禁用 CHLAUTH 规则可解决连接问题,那么您知道这是原因。
要禁用 CHLAUTH 规则,请运行以下 MQSC 命令:
ALTER QMGR CHLAUTH (DISABLED)
请注意,您还可以将 CHLAUTH 设置为
WARN,这将允许访问并记录规则的结果。
- 修改或除去 CHLAUTH 规则
您还可以删除或修改 CHLAUTH 规则或规则,从而导致问题。
要修改 CHLAUTH 规则,请使用带有 ACTION (REPLACE) 的 SET CHLAUTH 命令。 例如,要修改导致任何
MQ-admin 用户无法访问 WARN 的所有通道的缺省规则,而不是被阻止,请运行以下 MQSC 命令:
SET CHLAUTH (*) TYPE (BLOCKUSER) USERLIST (*MQADMIN) WARN(YES)
ACTION (REPLACE)
要删除 CHLAUTH 规则,请将 SET CHLAUTH 命令与 ACTION (REMOVE) 配合使用。 例如,要删除导致任何
MQ-admin 用户无法访问所有通道的缺省规则,请运行以下 MQSC 命令:
SET CHLAUTH (*) TYPE (BLOCKUSER) USERLIST (*MQADMIN) ACTION (REMOVE)
- 使用 MATCH (RUNCHECK) 测试访问
您可以使用 CHLAUTH 规则的
MATCH (
RUNCHECK) 选项来测试 CHLAUTH 规则的结果。
MATCH (
RUNCHECK) 选项返回在运行时由特定入站通道匹配的记录 (如果该通道连接到此队列管理器)。 您必须提供:
- 通道名
- “地址”属性
- SSLPEER 属性,仅当入站通道使用 SSL 或 TLS 时
- QMNAME ,如果入站通道是队列管理器通道,或者
- CLNTUSER 属性 (如果入站通道是客户机通道)
以下示例运行 MQSC 命令以检查具有缺省规则的 CHLAUTH 规则将导致
MQ-admin 用户
johndoe 访问名为
CHAN1的通道:
DISPLAY CHLAUTH (CHAN1) MATCH (RUNCHECK) CLNTUSER ('johndoe') ADDRESS
('192.168.1.138')
AMQ8878: Display channel authentication record details.
CHLAUTH(*) TYPE(BLOCKUSER)
USERLIST(*MQADMIN)
对于用户
johndoe,通道未运行,将由于 *MQADMIN 用户的 BLOCKUSER 规则而阻止用户。
以下示例运行 MQSC 命令以检查具有缺省规则的 CHLAUTH 规则将导致用户
alice (非
MQ-admin 用户) 访问名为
CHAN1的通道:
DISPLAY CHLAUTH (CHAN1) MATCH (RUNCHECK) CLNTUSER ('alice') ADDRESS
('192.168.1.138')
AMQ9783: Channel will run using MCAUSER('alice').
对于用户
alice,通道将运行,并且通道将
alice 作为 MCAUSER 传入。 MCAUSER 是用于检查
IBM MQ 对象权限的用户标识。