实现隐藏

隐藏是模拟的扩展,可更好地控制 COM 如何通过代理模拟客户端。 与许多形式的 WMI 安全性一样,可以通过 CoSetProxyBlanketCoInitializeSecurity 接口设置隐藏。

COM 提供以下形式的遮盖:

  • 静态

    COM 在第一次调用代理时由线程或进程令牌建立令牌标识。 如果将静态遮盖与 CoSetProxyBlanket 配合使用,则为代理的生存期设置代理的标识。

  • 动态

    COM 在每次调用代理时,都会从线程或进程令牌重新建立令牌标识。 由于 COM 检查每个调用中的标识,因此动态遮盖允许对客户端标识进行精细控制。 但是,动态遮盖的效率低于静态遮盖。

将隐藏与模拟委派级别结合使用时,即使服务器是远程服务器,服务器也可以跨服务器传播客户端的标识。 如果未启用遮盖,COM 会将本地服务器的任何调用发送到实际服务器进程的上下文中的远程服务器。

通过“隐藏”,WMI 模拟客户端跨多个计算机边界访问本地和远程网络资源。 WMI 可以将客户端的标识传递给本地服务器和远程服务器,例如 WMI 的其他远程实例。 然后,这些远程服务器可以在初始客户端上下文下执行操作。

以下过程介绍如何结合使用遮盖和委派。

结合使用遮盖和委派

  1. 将身份验证服务设置为 Kerberos。

    Kerberos 是唯一支持远程遮盖和委派的身份验证服务。 这意味着只能在远程服务器上使用遮盖和委派。

  2. 将服务器登录帐户标记为 Active Directory 服务中的“委派受信任”。

  3. 在 Active Directory 服务中,将客户端登录帐户标记为“帐户敏感且无法委派”。

例如,对视图提供程序的调用可能会从多台计算机上的多个 WMI 实例返回对象,可以从委派和遮盖中受益。