访问 WMI 命名空间

WMI 使用标准的 Windows 安全描述符 来控制对 WMI 命名空间的访问。 连接到 WMI 时,无论是通过 WMI "winmgmts" 名字对象还是对 IWbemLocator:: ConnectServerSWbemLocator的调用,你都可以连接到特定的命名空间。

本主题中讨论了以下信息:

WMI 命名空间安全性

WMI 通过比较连接到命名空间的用户的 访问令牌 和命名空间的 安全描述符 来维护命名空间安全性。 有关 Windows 安全性的详细信息,请参阅 对 WMI 安全对象的访问权限

请注意,从 Windows Vista 开始, 用户帐户控制 (UAC) 会影响对 wmi 数据的访问,以及可以使用 wmi 控件配置哪些内容。 有关详细信息,请参阅 WMI 命名空间和用户帐户控制和 WMI的默认权限

当从远程计算机进行连接时,对 WMI 命名空间的访问权限也会受到影响。 有关详细信息,请参阅 连接到远程计算机上的 wmi保护远程 WMI 连接以及 通过 Windows 防火墙连接

提供程序必须依赖于连接的模拟设置来确定客户端脚本或应用程序是否应接收数据。 有关脚本和客户端应用程序的详细信息,请参阅 设置客户端应用程序进程安全性。 有关 提供程序 模拟的详细信息,请参阅 开发 WMI 提供程序

WMI 命名空间审核

WMI 使用命名空间 系统访问控制列表 (SACL) 审核命名空间活动。 若要启用 WMI 命名空间的审核,请使用 Wmi 控件上的 "安全" 选项卡更改命名空间的审核设置。

在操作系统的安装过程中不启用审核。 若要启用审核,请在 "标准 安全" 窗口中单击 "审核" 选项卡。 然后,可以添加审核条目。

本地计算机的组策略必须设置为允许审核。 可以通过运行 gpedit.msc mmc 管理单元并在 "计算机配置" "Windows 设置" "安全设置" "本地策略" " > > > > 审核策略" 下设置 "审核对象访问" 来启用审核。

审核项编辑命名空间的 SACL。 添加审核条目时,该项目是用户、组、计算机或内置安全主体。 添加项后,可以设置导致安全日志事件的访问操作。 例如,对于已进行身份验证的组用户,可以单击 "执行方法"。 当经过身份验证的用户组的成员执行该命名空间中的方法时,此设置会导致安全日志事件。 WMI 事件的事件 ID 为4662。

你的帐户必须位于 Administrators 组中,并以提升的权限运行才能更改审核设置。 内置管理员帐户还可以更改命名空间的安全或审核。 有关在提升模式下运行的详细信息,请参阅 用户帐户控制和 WMI

WMI 审核为尝试访问 WMI 命名空间生成成功或失败事件。 服务不审核提供程序操作是成功还是失败。 例如,当脚本连接到 WMI 和命名空间时,它可能会失败,因为运行脚本的帐户无权访问该命名空间或可能尝试执行不被授予的操作(如编辑 DACL)。

如果你正在 Administrators 组中的某个帐户下运行,则可以在 事件查看器 用户界面中查看命名空间审核事件。

命名空间事件的类型

WMI 跟踪安全事件日志中的以下类型的事件:

  • 审核成功

    操作必须成功完成两个步骤才能成功完成审核。 首先,WMI 将基于客户端 SID 和命名空间 DACL 授予对客户端应用程序或脚本的访问权限。 其次,请求的操作匹配该用户或组的命名空间 SACL 中的访问权限。

  • 审核失败

    WMI 拒绝对命名空间的访问,但请求的操作会匹配该用户或组的命名空间 SACL 中的访问权限。

命名空间访问设置

可以在 WMI 控件上查看不同帐户的命名空间访问权限。 命名空间访问权限常量中介绍了这些常量。 您可以使用 WMI 控件或以编程方式更改对 WMI 命名空间的访问权限。 有关详细信息,请参阅 更改安全对象上的访问安全性

WMI 审核以下列表中列出的所有访问权限的更改("远程启用" 权限除外)。 更改将记录为与 "编辑" 安全权限相对应的 "审核成功" 或 "失败"。

Execute 方法

允许用户执行 WMI 类上定义的方法。 对应于 WBEM _ 方法 _ 执行 访问权限常数。

完全写入

允许对 WMI 类和类实例(静态和动态)拥有完全读取、写入和删除访问权限。 对应于 WBEM _ 完整 _ 写入 _ 表示访问权限常数。

部分写入

允许对静态 WMI 类实例进行写访问。 对应于 WBEM _ 部分 _ 写入 _ 表示 "访问权限" 常数。

提供程序写入

允许对动态 WMI 类实例进行写入访问。 对应于 WBEM _ 写入 _ 提供程序 访问权限常数。

启用帐户

允许对 WMI 类实例进行读取访问。 对应于 WBEM " _ 启用 访问权限" 常数。

远程启用

允许远程计算机访问命名空间。 对应于 WBEM _ 远程 _ 访问 权限常数。

读取安全性

允许对 DACL 设置进行只读访问。 对应于 读取 _ 控制 访问权限常数。

编辑安全性

允许对 DACL 设置进行写访问。 对应于 写入 _ DAC 访问权限常数。

WMI 命名空间的默认权限

默认安全组为:

  • 经过身份验证的用户
  • LOCAL SERVICE
  • 网络服务
  • 本地计算机上的管理员 ()

经过身份验证的用户、本地服务和网络服务的默认访问权限为:

  • 执行方法
  • 完全写入
  • 启用帐户

Administrators 组中的帐户拥有所有权限,包括编辑安全描述符。 但是,由于用户帐户控制 (UAC) ,因此必须以提升的安全性运行 WMI 控件或脚本。 有关详细信息,请参阅 用户帐户控制和 WMI

有时,脚本或应用程序必须启用管理员权限(如 SeSecurityPrivilege)才能执行操作。 例如,脚本可以在没有 SeSecurityPrivilege 的情况下执行 Win32 _ Printer类的 GetSecurityDescriptor方法,并在打印机对象 安全描述符 (DACL) 的自由访问控制列表中获取安全信息。 但是,除非已为该帐户启用了 SeSecurityPrivilege 特权,否则不会将这些 SACL 信息返回到脚本。 如果帐户没有可用的权限,则无法启用该帐户。 有关详细信息,请参阅 执行特权操作

关于 WMI