考虑以下队列defintinons:
SET AUTHREC OBJTYPE(QMGR)GROUP('mq-user')AUTHADD(INQ,DSP,CONNECT)
SET AUTHREC PROFILE(SYSTEM.MQEXPLORER.REPLY.MODEL)OBJTYPE(QUEUE)GROUP( 'MQ-用户')AUTHADD(INQ,DSP,GET)
SET AUTHREC PROFILE(SYSTEM.ADMIN.COMMAND.QUEUE)OBJTYPE(QUEUE)GROUP('mq-user')AUTHADD(INQ,DSP,PUT)
DEFINE CHANNEL($ cname)CHLTYPE(SVRCONN)TRPTYPE(TCP)MCAUSER('tcs-mq-user')REPLACE
SET CHLAUTH($ cname)TYPE(ADDRESSMAP)ADDRESS(*)MCAUSER('tcs-mq-user')
答案 0 :(得分:8)
好的,答案正在发售,今天买一送三! :-)让我们按顺序采取这些......
1.A。频道的MCAUSER值是执行授权检查的ID。如果DEFINE CHL() CHLTYPE(SVRCONN)
将MCAUSER留空,则客户端连接可以指定他们希望连接的ID。如果他们未能指定,WMQ客户端尝试使用从客户端应用程序运行的工作站看到的客户端用户的ID并显示该ID。在通道定义中设置MCAUSER
会阻止客户端应用指定值。
1.B。 ADDRESSMAP
规则中的MCAUSER用于根据某些识别标准映射MCAUSER
。它说“ IF 连接到达此频道具有指定的IP地址|用户名| SSL专有名称那么使用 this < / em> ID为MCAUSER
AND 允许频道在没有其他规则阻止的情况下运行。
如果使用CHLAUTH
映射规则,建议通常是将频道的MCAUSER
设置为一个不可能是用户ID的值,以便它不会运行。这样,除非CHLAUTH
规则将MCAUSER覆盖为允许访问的值,否则通道默认为安全状态。在Hursley Lab的WMQ战略家Mark Taylor建议使用不能是实际用户ID的值(例如MCAUSER
)之前,nobody
的典型值曾经是no#body
。从WMQ V7.1开始,值*NOACCESS
是一项保留的工作,以及我目前在会议演示中使用的内容。
2。是的。 WMQ基于组进行授权。标准建议是将您的安全需求解构为“admin”,“app1”,“app2”,“monitoring”,“anonymous”等角色。然后,对于需要访问权限的每个角色,创建一个组。
但访问请求来自唯一标识的主体,而不是来自组。授权检查需要一个帐户进行检查,因此通道中的MCAUSER是一个ID,而授权权限则按组存储。要将用户与正确的权限相关联,请将他们注册到正确的组中。
这是支持职责分离的标准UNIX授权模型。资源管理员(WMQ管理员)授权组。帐户管理员在组中注册用户ID。它需要两个组来提供访问权限。在现实世界中,大多数商店不使用职责分离功能,但在重要情况下,它是强制性的。
3。排序。 V7.1或更高版本的默认QMgr根本不允许任何远程连接。这是因为在创建时它没有AUTHREC
规则,因此未授予非管理员访问权限。默认CHLAUTH
规则阻止管理员进行远程访问。
根据指定的规则,任何人可以成功连接到$cname
频道,并将被授权为tcs-mq-user
。如果您希望它们作为具有相同权限的其他用户ID 连接,则需要将该ID添加到mq-user
组,然后将通道设置为映射所显示的ID。如果您想强制执行某人连接的ID,因为您必须按IP地址指定映射,或者更好的是,根据其证书专有名称。
4. 否。如上面#2中所述,访问请求始终由委托人而不是群组进行。 CHLAUTH
规则,MCAUSER
和可分辨名称映射的重点是解析通道用于授权检查的用户ID。通道定义MCAUSER
是该ID解析过程中的安全控件,因此它对ID进行操作,而不是对组进行操作。
如果您还没有找到该网站,可能会发现T-Rob.net有用。特别是,在链接页面上,我发布了会议的所有WMQ安全演示文稿以及我和其他作者文章的链接。