IBM MQ - 权限 - 读取透视图

IBM MQ - Permissions - Read perspective

为了向队列管理器(队列、通道等)的所有对象授予读取权限以进行监控,command/permission 是必需的。我的监控客户端使用 java api.

MQZAO_ALL_ADMIN 许可用于此目的。可以使用 setmqaut 来设置此权限,但此命令有 +put 、 +get 等选项,而不是 MQZAO_ALL_ADMIN。目前我正在为每个队列等使用 setmqaut 版本 8.0.0.4.

对于只读,您不想使用 MQZAO_ALL_ADMIN,因为这会授予管理权限。根据 setmqaut+alladm 并在队列上提供 +chg +clr +dlt +dsp

一般来说,对于只读,您将为 qmgr 对象提供 +connect +inq +dsp,为您要监视的任何对象提供 +dsp+dsp 允许您查看对象的名称,在某些情况下还可以查看对象的详细信息。对于某些对象(队列、进程、名单),您还需要添加 +inq 以查看对象的详细信息。如果要使用动态队列,您还需要向 SYSTEM.ADMIN.COMMAND.QUEUE 提供 +put 和向模型队列提供 +get,或者向普通本地队列提供

如果您想为多个队列提供权限,也可以使用通配符。

下面的示例将为所有类型的所有对象提供只读权限:

setmqaut -m <QMGR>                               -t qmgr     -g group -all +connect +inq +dsp
setmqaut -m <QMGR> -n SYSTEM.ADMIN.COMMAND.QUEUE -t queue    -g group -all +inq +put +dsp
setmqaut -m <QMGR> -n SYSTEM.DEFAULT.MODEL.QUEUE -t queue    -g group -all +inq +get +dsp
setmqaut -m <QMGR> -n '**'                       -t namelist -g group -all +dsp +inq
setmqaut -m <QMGR> -n '**'                       -t process  -g group -all +dsp +inq
setmqaut -m <QMGR> -n '**'                       -t queue    -g group -all +dsp +inq
setmqaut -m <QMGR> -n '**'                       -t channel  -g group -all +dsp
setmqaut -m <QMGR> -n '**'                       -t clntconn -g group -all +dsp
setmqaut -m <QMGR> -n '**'                       -t listener -g group -all +dsp
setmqaut -m <QMGR> -n '**'                       -t service  -g group -all +dsp
setmqaut -m <QMGR> -n '**'                       -t topic    -g group -all +dsp

*请注意,我总是在权限前加上 -all,这样您就知道您授予的权限将是唯一的权限。如果您没有 -all 并且上面的组已经有其他权限,例如 +put 在队列上,该权限将保留并且您将添加 +dsp +inq 并以 [=28= 结束].


如果队列管理器在 Windows 上,您可以使用 -p 和用户名来直接向该用户授予权限。在 v8 之前的 Unix 上,如果你使用 -p 它实际上会授予用户主要组的权限,在 v8 和更高版本中,如果你将 SecurityPolicy=user 添加到 qm.ini 的 Service: 节将表现得像 Windows 一直拥有的那样,并且只向 -p 指定的用户授予权限。在大型组织中,这可能是首选,因为您知道您只向单个用户提供了权限,如果您在组级别提供它,则可能有人可以将第二个用户添加到该组,而第二个用户现在拥有同样的权限。


请注意,在 MQ v7.1 和更高版本中,您可以使用 SET AUTHREC MQSC 命令授予权限,以替代 setmqaut 命令。以下命令将提供与上述 setmqaut 命令相同的权限:

SET AUTHREC PROFILE('self')                       GROUP('group') OBJTYPE(QMGR)     AUTHRMV(ALL) AUTHADD(CONNECT,DSP,INQ)
SET AUTHREC PROFILE('SYSTEM.ADMIN.COMMAND.QUEUE') GROUP('group') OBJTYPE(QUEUE)    AUTHRMV(ALL) AUTHADD(DSP,INQ,PUT)
SET AUTHREC PROFILE('SYSTEM.DEFAULT.MODEL.QUEUE') GROUP('group') OBJTYPE(QUEUE)    AUTHRMV(ALL) AUTHADD(DSP,INQ,GET)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(NAMELIST) AUTHRMV(ALL) AUTHADD(DSP,INQ)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(PROCESS)  AUTHRMV(ALL) AUTHADD(DSP,INQ)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(QUEUE)    AUTHRMV(ALL) AUTHADD(DSP,INQ)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(CHANNEL)  AUTHRMV(ALL) AUTHADD(DSP)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(CLNTCONN) AUTHRMV(ALL) AUTHADD(DSP)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(LISTENER) AUTHRMV(ALL) AUTHADD(DSP)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(SERVICE)  AUTHRMV(ALL) AUTHADD(DSP)
SET AUTHREC PROFILE('**')                         GROUP('group') OBJTYPE(TOPIC)    AUTHRMV(ALL) AUTHADD(DSP)