连接认证: 配置

可以将队列管理器配置为使用提供的用户标识和密码来检查用户是否有权访问资源。

在队列管理器上开启连接认证

在队列管理器对象上,可以将 CONNAUTH 属性设置为认证信息 (AUTHINFO) 对象的名称。 此对象可以是以下两种类型之一 (AUTHTYPE 属性):
IDPWOS
指示队列管理器使用本地操作系统来认证用户标识和密码。
IDPWLDAP
指示队列管理器使用 LDAP 服务器来认证用户标识和密码。
注: 不能在 CONNAUTH 字段中使用任何其他类型的认证信息对象。

IDPWOSIDPWLDAP 在其多个属性中相似,在此处进行了描述。 稍后将考虑其他属性。

要检查本地连接,请使用 AUTHINFO 属性 CHCKLOCL (检查本地连接)。 要检查客户机连接,请使用 AUTHINFO 属性 CHCKCLNT (检查客户机连接)。 必须先刷新配置,然后队列管理器才能识别更改。
ALTER QMGR CONNAUTH(USE.PW)
DEFINE AUTHINFO(USE.PW) +
AUTHTYPE(IDPWOS) +
FAILDLAY(10) +
CHCKLOCL(OPTIONAL) +
CHCKCLNT(REQUIRED)
REFRESH SECURITY TYPE(CONNAUTH)
其中 CONNAUTH 中的 USE.PW 是与 AUTHINFO 定义匹配的字符串。
CHCKLOCLCHCKCLNT 都具有相同的一组可能的值,这些值允许更改检查的严格性:
NONE
关闭检查。
可选
确保如果用户标识和密码由应用程序提供,那么它们是有效的对,但并非必须提供这些用户标识和密码。 例如,在迁移期间,此选项可能很有用。
要点: OPTIONAL 是您可以设置的最小值,以便使用更严格的 CHLAUTH 规则。

如果选择 NONE ,并且客户机连接与 CHCKCLNT REQUIRED (或 z/OS®以外的平台上的 REQDADM ) 的 CHLAUTH 记录匹配,那么连接将失败。 您在除 z/OS以外的平台上接收到消息 AMQ9793 ,在 z/OS上接收到消息 CSQX793E 。

Required
要求所有应用程序提供有效的用户标识和密码。 另请参阅以下注释。
REQDADM
特权用户必须提供有效的用户标识和密码,但非特权用户被视为具有 OPTIONAL 设置。 另请参阅以下注释。 [z/OS](在 z/OS 系统上不允许此设置。)
注:

CHCKLOCL 设置为 REQUIREDREQDADM 意味着您无法使用 runmqsc (错误 AMQ8135: 未授权) 本地管理队列管理器,除非用户在 runmqsc 命令行上指定 -u UserId 参数。 通过该设置, runmqsc 将在控制台上提示输入用户的密码。

同样,在本地系统上运行 IBM® MQ Explorer 的用户在尝试连接到队列管理器时将看到错误 AMQ4036 。 要指定用户名和密码,请右键单击本地队列管理器对象,然后选择 连接详细信息 > 属性 ... 从菜单中获取。 在 用户标识 部分中,输入要使用的用户名和密码,然后单击 确定

类似注意事项适用于与 CHCKCLNT的远程连接。

对于已迁移的队列管理器, CONNAUTH 为空白,但设置为 SYSTEM.DEFAULT.AUTHINFO.IDPWOS 。 缺省情况下,上述 AUTHINFO 定义将 CHCKCLNT 设置为 REQDADM

因此,您需要为使用特权用户标识进行连接的任何现有客户机提供正确的操作系统密码。

警告: 在某些情况下,将通过纯文本网络发送客户机应用程序的 MQCSP 结构中的密码。 要确保客户机应用程序密码受到适当保护,请参阅 MQCSP 密码保护

配置详细程度

除了用于开启用户标识和密码检查的 CHCKLOCLCHCKCLNT 之外,还对 CHLAUTH 规则进行了增强,以便可以使用 CHCKCLNT进行更具体的配置。

例如,可以将整体 CHCKCLNT 值设置为 OPTIONAL,然后通过在 CHLAUTH 规则中将 CHCKCLNT 设置为 REQUIREDREQDADM ,将其升级为对特定通道更严格。 缺省情况下, CHLAUTH 规则将与 CHCKCLNT(ASQMGR) 一起运行,因此不必使用此粒度。 例如:
DEFINE AUTHINFO(USE.PW) AUTHTYPE(xxxxxx) +
CHCKCLNT(OPTIONAL)
SET CHLAUTH('*') TYPE(ADDRESSMAP) +
ADDRESS('*') USERSRC(CHANNEL) +
CHCKCLNT(REQUIRED)
SET CHLAUTH('*') TYPE(SSLPEERMAP) +
SSLPEER('CN=*') USERSRC(CHANNEL)

错误通知

失败连接认证的图示。 请参阅文本以获取更多详细信息。
如果应用程序在需要时未提供用户标识和密码,或者提供了不正确的组合 (即使该组合是可选的) ,那么将记录错误。
注: 当关闭密码检查时,通过在 CHCKLOCLCHCKCLNT上使用 NONE 选项,不会检测到无效密码。

在将错误返回到应用程序之前,将在 FAILDLAY 属性指定的秒数内保留失败的认证。 这为重复尝试连接的应用程序提供了一些保护。

该错误以多种方式记录:
应用程序
将返回标准 IBM MQ 安全性错误 RC2035 -MQRC_NOT_AUTHORIZED
管理员
IBM MQ 管理员会看到错误日志中报告的事件,因此可以看到应用程序已被拒绝,因为用户标识和密码未能通过检查,而不是因为例如没有连接权限。
监测工具
如果通过向 SYSTEM.ADMIN.QMGR.EVENT 队列:
ALTER QMGR AUTHOREV(ENABLED)
此 "未授权" 事件是类型 1 连接事件,并提供与其他类型 1 事件相同的字段以及提供的附加字段 MQCSP 用户标识。 事件消息中未提供密码。 这意味着事件消息中有两个用户标识: 应用程序运行所使用的标识以及应用程序为用户标识和密码检查提供的标识。

与授权的关系

请参阅文本以获取详细信息。
您可以配置队列管理器,以要求某些应用程序提供用户标识和密码,因为应用程序打开队列以进行输出时,应用程序运行所使用的用户标识可能不是应用程序提供的用户标识以及密码,例如:
ALTER QMGR CONNAUTH(USE.PWD)
DEFINE AUTHINFO(USE.PWD) +
AUTHTYPE(xxxxxx) +
CHCKLOCL(OPTIONAL) +
CHCKCLNT(REQUIRED) +
ADOPTCTX(YES)
如何处理用户标识和密码由认证信息对象上的 ADOPTCTX 属性控制。
ADOPTCTX (是)
将使用您通过密码认证的用户标识对应用程序进行所有授权检查,方法是选择在连接的剩余时间内采用上下文作为应用程序上下文。
注意: 使用 ADOPTCTX (YES) 和操作系统用户标识时,必须确保所采用的用户标识不超过用户标识的最大长度。 请参阅 用户标识 以获取更多信息。
ADOPTCTX (NO)
应用程序提供用户标识和密码以用于在连接时对其进行认证,但随后继续使用应用程序运行时所使用的用户标识进行将来的授权检查。 如果您计划使用其他机制 (例如通道认证记录) 来分配 消息通道代理程序用户标识 (MCAUSER),那么您可能会发现此选项在迁移时很有用。
注:

在认证信息对象上使用 ADOPTCTX(YES) 参数时,除非在 qm.ini 文件的 channel 节中设置 ChlauthEarlyAdopt 参数,否则无法采用其他安全上下文。

例如,缺省认证信息对象设置为 ADOPTCTX(YES),用户 fred 已登录。 配置了以下两个 CHLAUTH 规则:
SET CHLAUTH('MY.CHLAUTH') TYPE(ADDRESSMAP) DESCR('Block all access by
default') ADDRESS('*') USERSRC(NOACCESS) ACTION(REPLACE)
SET CHLAUTH('MY.CHLAUTH') TYPE(USERMAP) DESCR('Allow user bob and force
CONNAUTH') CLNTUSER('bob') CHCKCLNT(REQUIRED) USERSRC(CHANNEL)
发出以下命令,目的是将该命令作为用户 bob的已采用安全上下文进行认证:
runmqsc -c -u bob QMGR
实际上,队列管理器使用 fred而不是 bob的安全上下文,并且连接失败。

有关 ChlauthEarlyAdopt的更多信息,请参阅 通道节的属性