为了授予队列管理器的 所有对象 (队列,通道等)的读取权限以监视视角,需要什么命令/权限。我的监视客户端使用Java api。
威尔MQZAO_ALL_ADMIN用于此目的的权限做。可setmqaut 用于设置此权限,但是此命令具有+ put,+ get等选项,而不是MQZAO_ALL_ADMIN。目前,我正在setmqaut为每个队列等使用8.0.0.4版。
MQZAO_ALL_ADMIN
setmqaut
对于只读用户,您不想使用它,MQZAO_ALL_ADMIN因为这将授予管理权限。在这方面setmqaut,+alladm并提供+chg +clr +dlt +dsp队列。
+alladm
+chg +clr +dlt +dsp
通常,对于只读对象,您将+connect +inq +dsp针对该qmgr对象以及+dsp要监视的任何对象提供该对象。 +dsp使您可以查看对象的名称以及某些情况下的对象详细信息。对于某些对象(队列,进程,名称列表),还需要添加+inq以查看对象的详细信息。如果要使用动态队列,还需要提供+put给SYSTEM.ADMIN.COMMAND.QUEUE和+get或提供给模型队列,或提供给普通的本地队列。
+connect +inq +dsp
qmgr
+dsp
+inq
+put
SYSTEM.ADMIN.COMMAND.QUEUE
+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并最终得到+put +dsp +inq。
-all
+dsp +inq
+put +dsp +inq
如果队列管理器在Windows上,则可以使用-p和用户名直接将权限授予该用户。在v8之前的Unix上,如果您使用-p,它将实际上将权限授予用户主组;在v8中,之后,如果您将其添加SecurityPolicy=user到Service:qm.ini节,它将表现得像Windows一直拥有的并且仅向用指定的用户-p。在大型组织中,这是首选方法,因为您知道您仅向单个用户提供权限,如果您在组级别提供权限,则可能有人可以将第二个用户添加到该组,而第二个用户现在拥有相同的权限。
-p
SecurityPolicy=user
Service:
请注意setmqaut,在MQ v7.1和更高版本中,该命令的替代方法可以使用SET AUTHRECMQSC命令授予权限。以下命令将提供与上述setmqaut命令相同的权限:
SET AUTHREC
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)