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)
为了向队列管理器(队列、通道等)的所有对象授予读取权限以进行监控,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)