在
WebSphere MQ Publish/Subscribe中,所有发布和预订权限检查都是依据流队列执行的:
- 发布应用程序需要可将消息放入流队列的权限。
- WebSphere MQ Publish/Subscribe代理检查要浏览流队列的预订应用程序的权限。
- 预订应用程序需要可将消息放入推荐接收发布内容的队列的权限。
WebSphere Message Broker 代理进行同样的检查,但不再检查预订权限(浏览)。
相反,WebSphere Message Broker 允许以分层方式(在个别主题级别下)定义发布和预订访问权。要这样操作,请使用工作台创建访问控制表(ACL)。
将
WebSphere MQ Publish/Subscribe 代理迁移到替换的
WebSphere Message Broker 代理前,或将
WebSphere MQ Publish/Subscribe 应用程序迁移到
WebSphere Message Broker 上运行前,必须考虑隐含的安全性问题:
下图显示了所需的流权限。
该示例假设发布、预订和持久传递都设置为
拒绝,并且您已经使用该设置的权限更新 PublicGroup 主体上主题根的缺省 ACL。
使用该示例,假设定义了下列组:
- PDefault:授权在缺省流上进行发布的用户组
- SDefault:授权预订缺省流的用户组
- PStreamX:授权在 StreamX 上进行发布的用户组
- SStreamX:授权预订 StreamX 的用户组
- PStreamY:授权在 StreamY 上进行发布的用户组
- SStreamY:授权预订 StreamY 的用户组
必须通过设置 ACL 来授予和拒绝权限,具体操作如下所示:
- 必须授予 PDefault 在根上的发布权限;必须授予 SDefault 在根上的预订权限。
- 必须拒绝 PDefault 在 $SYS/STREAM/ 上的发布权限;必须拒绝 SDefault 在 $SYS/STREAM/ 上的预订权限。
这些设置确保缺省流上的发布程序和订户无法在其他流上自动发布或预订;必须定义明确覆盖该设置的 ACL。
- 必须授予 PStreamX 在 $SYS/STREAM/StreamX/ 上的发布权限,必须授予 SStreamX 在 $SYS/STREAM/StreamX/ 上的预订权限。
这些设置覆盖父代主题上的所有设置,并将发布和预订活动限于这些特定组内部的用户。
- 必须授予 PStreamY 在 $SYS/STREAM/StreamY/ 上的发布权限,必须授予 SStreamY 在 $SYS/STREAM/StreamY/ 上的预订权限。
这些设置覆盖父代主题上的所有设置,并将发布和预订活动限于这些特定组内部的用户。
如果要设置例外情况,需要在适当点引入 ACL。例如,如果要授予缺省流(PDefault)发布程序在 StreamX 上的发布权限,
必须在点(3)上创建一个显式 ACL 来授予该权限,从而覆盖点(2)上的拒绝权。在这种情况下,PDefault 中的用户仍不能在 StreamY 进行发布。