【问题标题】:WebSphere MQ Channel Access Security QuestionsWebSphere MQ 通道访问安全问题
【发布时间】:2012-08-01 15:48:25
【问题描述】:

考虑以下队列定义:

SET AUTHREC OBJTYPE(QMGR) GROUP('mq-user') AUTHADD(INQ,DSP,CONNECT)

SET AUTHREC PROFILE(SYSTEM.MQEXPLORER.REPLY.MODEL) OBJTYPE(QUEUE) GROUP('mq-user') AUTHADD(INQ,DSP,GET)

SET AUTHREC PROFILE(SYSTEM.ADMIN.COMMAND.QUEUE) OBJTYPE(QUEUE) GROUP('mq-user') AUTHAD(INQ,DSP,PUT)

定义通道 ($cname) CHLTYPE (SVRCONN) TRPTYPE (TCP) MCAUSER('tcs-mq-user') 替换

SET CHLAUTH($cname) TYPE(ADDRESSMAP) ADDRESS(*) MCAUSER('tcs-mq-user')

  1. 在 DEFINE CHANNEL 和 SETCHLAUTH 中 MCAUSER 是什么意思?
  2. tcs-mq-user 是否应该属于 mq-user 组?
  3. 这是否意味着只有 tcs-mq-user 可以在绑定模式下访问队列管理器?现在,如果我想在绑定模式下授予另一个用户访问权限,我应该为这个用户创建另一对 DEFINE CHANNEL 和 SET CHLAUTH 命令吗?
  4. 是否可以将频道访问权限授予 mcs-user 组?

【问题讨论】:

    标签: ibm-mq


    【解决方案1】:

    好的,答案正在打折,今天买一送三! :-) 让我们按顺序来...

    1.A. 频道的 MCAUSER 值是执行授权检查的 ID。如果DEFINE CHL() CHLTYPE(SVRCONN) 将 MCAUSER 留空,则连接的客户端可以指定他们希望连接的 ID。如果他们未能指定,WMQ 客户端尝试使用从运行客户端应用程序的工作站看到的客户端用户 ID,并显示该 ID。在通道定义中设置MCAUSER 可防止客户端应用指定该值。

    1.B. ADDRESSMAP 规则中的 MCAUSER 用于根据某些识别标准映射 MCAUSER。它说“如果一个连接到达 这个频道 并带有指定的 IP 地址 | 用户名 | SSL 可分辨名称 THEN 使用 this ID 为MCAUSER AND 允许通道在没有其他规则阻止的情况下运行。

    如果使用CHLAUTH 映射规则,建议通常将通道的MCAUSER 设置为不可能是用户ID 的值,这样它就不会运行。这样,通道默认为安全状态,除非CHLAUTH 规则将 MCAUSER 覆盖为旨在允许访问的值。 MCAUSER 的典型值曾经是 nobody,直到 Hursley 实验室的 WMQ 策略师 Mark Taylor 建议使用不能是实际用户 ID 的值,例如 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 安全演示文稿以及指向我和其他作者文章的链接。

    【讨论】:

    • 一如既往的非常透彻的回答。至于您的回答中的第 3 项,您说 anyone 可以连接到 $cname... 现在我从客户端模式理解这一点。绑定模式怎么样,那里也是这样吗?
    • 在绑定或共享内存模式下,我需要切换到 tcs-mq-user 对吗?如果 tcs-mq-user 是非登录 id 怎么办?
    • 在绑定模式下,不使用通道。它是直接的内存到内存连接。 CHLAUTH 规则和通道定义仅适用于通过网络堆栈建立连接时。如果您希望 tcs-mq-user 以绑定模式连接,则该 ID 必须能够运行进程。因此,根据您商店中“非登录”的含义,您可能需要将其设为登录帐户才能在本地运行流程。 (有些商店配置“非登录”,因此不允许交互式 shell,但 root 仍然可以启动以该 ID 运行的进程。您的里程可能会有所不同。)
    猜你喜欢
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2016-04-18
    • 2012-09-06
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多