基于主题的安全性

使用基于主题的安全性来控制发布/预订系统中的哪些应用程序可以访问有关哪些主题的信息。

对于您希望限制访问的每个主题,可以指定哪些主体(用户标识和用户标识组)可以发布到主题,以及哪些主体可以预订主题。还可以指定哪些主体可以请求持久传递消息。

对于您没有明确地限制访问的任何主题,任何主体可以发布、预订以及请求持久传递其消息。

基于主题的安全性由使用访问控制表(ACL)的用户名称服务器管理,该表创建来确定应用哪些权限。

主体和用户名称服务器

WebSphere Message Broker 中的用户名称服务器管理已在网络中定义的主体集,代表代理和配置管理器,用于发布/预订。在 Windows 上,这个用户列表是根据 mqsicreateusernameserver 命令指定的域给出的。

通过在 mqsicreatebrokermqsicreateconfigmgr 命令上指定用户名称服务器队列管理器,可使用户名称服务器为代理和配置管理器所知晓。

代理域内的消息代理与用户名称服务器进行交互,获取完整的用户和组集合,访问控制表是从该集合建立的,并且发布/预订请求也是针对该集合进行确认。配置管理器用户名称服务器进行交互,显示 ACL 中的用户和用户组,ACL 是由工作台“代理管理”透视图提供的主题层次结构编辑器所创建的。

访问控制表

对任何主题和主体,访问控制表用于定义该主体发布或预订该主题的权限,或请求该主题发布内容的持久传递的权限。

还可以使用 ACL 来定义希望应用到每个主题的消息保护的级别。

使用工作台“代理管理”透视图中的主题层次结构编辑器指定这些定义。

可以为所有单个的主题显式地设置访问控制。但是,如果没有为主题定义显式 ACL,访问控制会从祖代或父主题那里继承,如同主题树层次结构所定义的那样。 如果直到主题根为止,层次结构中没有主题有显式 ACL,则主题将继承主题根的 ACL。

用户名称服务器所知的任何已定义主体都能以这种方式与主题关联。

解决 ACL 冲突

如果代理域中的主体包括多个组中的一个或多个用户,则显式或继承的 ACL 值可能发生冲突。 下列规则表明了如何解决冲突:
  • 如果用户对感兴趣的主题具有显式用户 ACL,则该 ACL 将总是具有优先权,代理将在该基础上验证当前操作。
  • 如果用户对感兴趣的主题不具有显式用户 ACL,但对主题树中的某一祖代具有显式用户 ACL,则最接近该用户的祖代 ACL 将具有优先权,代理将在该基础上验证当前操作。
  • 如果用户对感兴趣的主题或它的祖代都没有显式用户 ACL,代理将尝试在组 ACL 的基础上验证当前操作:
    • 如果用户是对感兴趣的主题具有显式组 ACL 的组成员,代理在那个组 ACL 的基础上验证当前操作。
    • 如果用户不是对感兴趣的主题具有显式组 ACL 的组成员,但他是对主题树中某一祖代具有显式组 ACL 的组成员,则最接近该用户的祖代 ACL 将具有优先权,代理将在该基础上验证当前操作。
    • 如果在主题树中的特定级别处,具有显式 ACL 的多个组包含用户标识,那么,如果有任何规范是肯定的,则授予许可权;否则拒绝授予许可权。

无法将 ACL 与包含一个或多个通配符的主题关联。但是,注册预订后,即使客户机应用程序在主题中指定了通配符,也将正确地处理来自该应用程序的访问。

PublicGroup 权限

除了您定义的组以外,WebSphere Message Broker 提供了隐式组 PublicGroup,所有用户都自动属于该组。该隐式组简化了主题树中 ACL 的规范。 该组特别用于主题根的 ACL 规范中。注:主题根的缺省设置允许进行 PublicGroup 的发布和预订操作。可以使用工作台查看和更改该 ACL,但不能除去它。它确定整个主题树的缺省许可权。如果要为所有用户定义许可权,可在主题树中的其他任何地方指定 PublicGroup 的 ACL。

如果在现有的安全环境中定义了名为 Public 的主体,则无法将其用于基于主题的安全性。如果在 ACL 中指定该主体,则其等同于 PublicGroup,因此总是允许全局访问。

mqbrkrs 权限

WebSphere Message Broker 将特殊的发布/预订访问控制权授予 mqbrkrs 组的成员,以及相应的 Domain mqbrkrs 全局组(如果合适)。

代理需要特权以在有访问控制的网络中执行内部发布和预订操作。当您在这种网络中创建代理时,必须将属于组 mqbrkrs 的用户标识指定为该代理的服务用户标识。mqbrkrs 组被赋予隐式特权,其成员可以发布和预订主题根(“”)上的消息以及对这些消息请求持久传递。所有其他主题都继承这些许可权。如果尝试使用工作台mqbrkrs 组配置 ACL,则该 ACL 将被 WebSphere Message Broker 忽略。

ACL 和系统主题

用于内部发布和预订操作的消息使用以“$SYS”和“$ISYS”字符串开头的系统主题在整个代理域中进行发布。

除以下两种情况外,这些主题仅可从 mqbrkrs 组成员发布和预订到 mqbrkrs 组成员。
  1. 如果从 WebSphere MQ Publish/Subscribe迁移主题,则可以对以“$SYS/STREAM”字符串开头的主题配置 ACL。
  2. 客户机可以预订以“$SYS”字符串开头的主题,这表明提供管理功能的应用程序可以预订用于管理事件的代理。

不要对以“$ISYS”字符串开头的主题配置 ACL。不会禁止您这么做,但将忽略这些 ACL。

对主题设置访问控制

具有对象级别安全性 ACL(赋予根主题对象完全控制权)的任何用户可以定义和处理 ACL,这些 ACL 定义了哪些主体可以发布和预订哪些主题。ACL 还能限制持久消息的传递,并定义消息保护级别。

所有已定义的主体可以与任何主题关联;下表中显示了可以设置的许可:
选项 描述
发布 允许或拒绝主体就该主题发布消息。
预订 允许或拒绝主体就该主题预订消息。
持久 指定主体是否能持久地接收消息。如果不允许主体接收,所有消息将不会持久地发送。每个单独的预订都指出订户是否需要持久消息。
QoP 级别 指定实施的消息保护级别。 可以选择下列四个值之一:
  • 通道完整性
  • 消息完整性
  • 加密
缺省值是“无”。
持久访问控制行为不等同于发布和预订控制:
  • 被拒绝“发布”访问的客户机拒绝它们的发布消息。
  • 被拒绝“预订”访问的客户机不接收发布内容。
  • 持久访问控制不拒绝发送给订户的消息,但不进行持久发送,因此被拒绝的订户将总是收到消息(根据其预订访问控制),但无论原始消息是否为持久发送,发送给订户的消息总是非持久的。

安全策略的继承

通常,主题以层次结构树的形式进行组织。某些或所有不具有显式 ACL 的派生主题可以继承其父代主题的 ACL。 因此,不必让显式 ACL 与每个主题都关联。 每个主题都具有父代的 ACL 策略。 如果直到根主题为止的所有父代主题都不具有显式 ACL,该主题将继承根主题的 ACL。

例如,在下面显示的主题树中,主题根不显示,但假设其有一个 PublicGroup 的 ACL,该 PublicGroup 成员可以发布、预订以及持久地接收发布内容。(“¬”符号表示“无”。)

继承主题树中的 ACL


该图以以下结构显示了主题树。A 是顶层,B、K 和 P 在下一层。 K 层下的级别为 M 节点,然后再下面为 N 节点。对于树中的某些节点,ACL 是显示的。A 节点有包含 joe 的发布 ACL、包含 Public Group 的预订 ACL 以及包含 ¬Public Group 的持久 ACL。B 节点有包含 allen 的发布 ACL 和包含 HR 和 ¬Public Group 的预订 ACL。没有明确地定义持久 ACL。P 节点有包含 joe 的发布 ACL,没有明确地定义预订 ACL,以及包含 joe 的持久 ACL。N 节点有包含 mary 和 joe 的发布 ACL、包含 nat 的预订 ACL 以及包含 Public Group 和 ¬nat 的持久 ACL。K 和 M 节点没有明确地定义 ACL。
下表显示了上图中显示的主题树产生的 ACL 情况,在某些情况下,这些 ACL 是继承得来的。
主题 发布程序 订户 持久
A 仅 joe 所有人 没有人
A/P 仅 joe 所有人 仅 joe
A/K 仅 joe 所有人 没有人
A/K/M 仅 joe 所有人 没有人
A/K/M/N 仅 mary,joe 所有人 所有人,除了 nat
A/B allen,joe HR 没有人

动态创建的主题

那些不是由系统管理员显式创建,而是在客户机发布或预订消息时动态创建的主题,与那些由系统管理员创建但没有显式定义的 ACL 的主题以相同的方式处理。 即,动态创建的主题的 ACL 是从具有显式策略的主题树中的最近祖代继承的。 因此,如果叶主题不具有显式 ACL,则不必在树中定义叶主题。

ACL 和通配符主题

使用 WebSphere Message Broker,您无法将显式的安全性政策与通配符主题相关联。 例如,无法将 ACL 与“A/+” 主题关联,该主题表示两级层次结构并且包含了“A/B”、“A/K”和“A/P”。

但是,当客户机应用程序预订通配符主题时,WebSphere Message Broker 保证进行正确的访问干预。

例如,“A/+”主题不(且不能)具有与其明确关联的安全策略。因此,“A/+”从“A”继承其策略。任何用户都可以预订“A/+”,因为预订 ACL 包括所有人。

当消息发布于“A/P”或“A/K”时,代理将其传递到预订了“A/+”的用户。但是,当消息发布于“A/B”时,该消息仅传递到 HR 组中的订户。

如果系统管理员更改与“A/+”匹配的任何主题的预订 ACL,则在传递消息时,代理将正确地执行 ACL。预订通配符主题意味着传递与该通配符匹配的所有主题的消息,并且订户对其具有接收消息的权限。

ACL 和预订解决方案

代理通过要传递的消息主题来强制实施访问控制。 消息只传递给那些没有显式地或通过继承来拒绝到该主题的预订访问的客户机。 因为预订可以包含通配符,所以对主题名称空间,因而也是主题 ACL 的实际匹配不能在接收预订时完成。只有消息代理在处理了主题的特定消息后,才能决定是否将消息传递给订户。

激活主题 ACL 更新

WebSphere Message Broker 工作台在代理域中已部署和激活主题 ACL 后,对主题 ACL 的更新才有效。

您必须具有授予根主题对象完全控制访问权的对象级别安全性的 ACL。

声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
aq01203_