排队组件安全性

当客户端对排队的对象进行方法调用时,实际上会对记录器进行调用,记录器会将其作为消息的一部分打包到服务器。 侦听器从队列中读取消息,并将其传递给播放器。 播放器调用实际的服务器组件,并进行相同的方法调用。 当播放器进行方法调用时,服务器组件必须观察客户端的安全调用上下文(而不是播放器的安全调用上下文)。 记录器将客户端的安全调用上下文封送至消息中,播放器在进行方法调用之前在服务器上对其进行拆收。 就服务器对象而言,来自客户端的直接调用和来自播放器的间接调用在安全上下文中没有区别。 特别是,调用的方法使用发送方的特权执行。

COM+ 排队组件支持基于角色的安全语义,就像为与 COM+ 应用程序一起使用而构建的其他组件一样。 因此,排队应用程序的组件可以使用编程接口来发现其调用方 (ISecurityCallContext::IsCallerInRole) 或特定用户 (ISecurityCallContext::IsUserInRole) 的角色成员身份。 建议任何具有潜在安全影响的排队组件使用这些接口来显式检查发送方的凭据。

调用方标识是与方法调用关联的标识。 调用方标识由基于角色的安全性使用,并出现在安全调用上下文中。 在排队组件中,调用方标识表示为消息队列消息中的数据。 消息队列对消息发送方标识进行身份验证。 当调用方标识和消息发送方标识相同时,消息队列将对消息和调用方进行身份验证。 这是通常的情况。

注意

COM+ 排队组件不支持模拟式安全性,后者允许服务器获取与客户端标识对应的访问令牌,并使用它执行访问控制检查或在客户端安全上下文下执行操作。

 

当排队组件的调用方通过进程外记录器与组件交互时,调用方和消息发送方(记录器)的标识可能有所不同。 在这种情况下,COM+ 排队组件会验证消息发送方是否是服务器上 QC 受信任用户角色的成员。 此外,进程外记录器需要身份验证证书,因为它正在由消息队列进行身份验证。

允许 QC 受信任的用户角色的成员指定任意标识,这意味着恶意成员可以使用提升的权限执行排队组件调用。 因此,建议将这类用户的数量保持在绝对最低限度。

由于在网络上传播身份的任何机制都存在复杂攻击的风险,以及通过向队列发送大量不可执行请求而导致的简单拒绝服务攻击的风险,因此建议仅在受信任的主机网络上部署 COM+ 排队组件服务,例如,在专用网络或虚拟专用网络上,或在适当配置的防火墙后面。

COM+ 排队组件在 DCOM 上运行,因此可以通过在排队应用程序的属性工作表的安全选项卡上选择数据包保密性作为调用的身份验证级别设置,帮助保护排队方法调用的完整性和保密性。

COM+ 安全性

工作组模式下的安全性限制

指定身份验证协议