维护 WMI 安全性

WMI 安全性侧重于保护对命名空间数据的访问。 WMI 首先向 WMI 控件和 DCOM 设置指定的用户组授予访问权限,然后提供程序确定用户是否应该有权访问命名空间数据。

本主题包括以下部分:

命名空间安全性

命名空间安全性取决于标准 Windows 用户安全标识符 (SID) 和 WMI 命名空间的安全描述符

可以通过执行以下操作来设置命名空间安全性:

分布式组件对象模型 (DCOM) 安全设置。

DCOM 安全性要求指定身份验证设置和模拟设置。 身份验证是指一个进程向另一个进程证明自己的身份。 模拟用于识别客户端是否有权向服务器授予调用不同进程的权限。 在安全检查期间,服务器将模拟客户端。 有关详细信息,请参阅保护 C++ 客户端和提供程序保护脚本客户端

脚本和 C/C++/C# 应用程序要么在连接到 WMI 命名空间时建立身份验证和模拟级别,要么使用默认设置。 与远程计算机建立连接所需的设置与本地计算机上的 WMI 命名空间设置不同。 有关详细信息,请参阅连接到远程计算机上的 WMI

WMI、共享服务主机和身份验证

WMI 驻留在共享服务主机中,该主机中的其他几个服务在 NetworkService 帐户下运行。 在 Svchost 进程中,WMI 与主机中的其他进程共享相同的身份验证。

提供程序 DLL 从 WMI 加载到单独的服务主机进程中。 代表提供程序的 __Win32Provider 系统类中的 HostingModel 属性指定了运行提供程序的系统帐户。 设置此属性会使提供程序加载到具有指定权限级别的共享主机进程中。 有关详细信息,请参阅提供程序托管和安全性

WMI 客户端脚本和应用程序的安全性

脚本和应用程序必须建立正确的安全性才能连接到本地和远程计算机上的 WMI 命名空间。 有关详细信息,请参阅保护 C++ 客户端和提供程序保护脚本客户端保护 WMI 事件

下表列出了有关维护 WMI 安全性的主题。

主题 说明
保护 WMI 命名空间 可以通过 WMI 控件来仅限已获授权的用户访问命名空间数据。
保护提供程序 有关编写安全提供程序的信息。
保护 C++ 客户端和提供程序 C++ 提供程序和客户端应用程序必须执行许多相同的操作来维护 WMI 安全性。
保护脚本客户端 脚本和 Visual Basic 应用程序(自动化客户端)必须设置适当的安全性才能访问 WMI 数据和事件。
保护 WMI 事件 WMI 事件由事件提供程序传递给临时或永久使用者。 事件以事件类实例的形式传递。
更改安全对象的访问安全性 使用适当的权限,可以对代表安全对象的 WMI 对象调用方法,这些方法可以读取或更改安全对象上的安全描述符。

 

使用 WMI