IBM MQ – 权限 – 读取透视图

为了给队列管理器的所有对象 (队列,通道等)提供读取权限以监视透视图,需要什么命令/权限。 我的监控客户端使用java api。

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

对于只读,您不希望使用MQZAO_ALL_ADMIN因为这将提供管理权限。 就setmqaut而言,这是+alladm并在队列上提供+chg +clr +dlt +dsp

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

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

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

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

*请注意,我总是使用-all前缀权限,以便您知道您授予的权限将是唯一的权限。 如果你没有-all并且上面的组已经拥有其他权限,例如+put一个允许保留的队列中,你将添加+dsp +inq并以+put +dsp +inq


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


请注意,作为setmqaut命令的替代方法,在MQ v7.1及更高版本中,您可以使用SET AUTHREC MQSC命令授予权限。 以下命令将提供与上述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)