访问 WMI 命名空间

WMI 使用标准 Windows 安全描述符来控制对 WMI 命名空间的访问。 通过 WMI“winmgmts”名字对象或调用 IWbemLocator::ConnectServerSWbemLocator.ConnectServer 连接到 WMI 时,将连接到特定的命名空间。

本主题讨论以下信息:

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。

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

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

如果在管理员组中的帐户下运行,则可以在“事件查看器”用户界面中查看命名空间审核事件。

命名空间事件的类型

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

  • 审核成功

    操作必须成功完成两个步骤才能视为审核成功。 第一步,WMI 根据客户端 SID 和命名空间 DACL 授予对客户端应用程序或脚本的访问权限。 第二步,请求的操作与该用户或组的命名空间 SACL 中的访问权限匹配。

  • 审核失败

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

命名空间访问设置

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

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

执行方法

允许用户执行在 WMI 类上定义的方法。 对应于 WBEM_METHOD_EXECUTE 访问权限常量。

完全写入

允许对 WMI 类和类实例(静态和动态)进行完全读取、写入和删除访问权限。 对应于 WBEM_FULL_WRITE_REP 访问权限常量。

部分写入

允许对静态 WMI 类实例进行写入访问。 对应于 WBEM_PARTIAL_WRITE_REP 访问权限常量。

提供程序写入

允许对动态 WMI 类实例进行写入访问。 对应于 WBEM_WRITE_PROVIDER 访问权限常量。

启用帐户

允许对 WMI 类实例进行读取访问。 对应于 WBEM_ENABLE 访问权限常量。

远程启用

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

读取安全

允许对 DACL 设置进行只读访问。 对应于 READ_CONTROL 访问权限常量。

编辑安全

允许对 DACL 设置进行写入访问。 对应于 WRITE_DAC 访问权限常量。

WMI 命名空间的默认权限

默认安全组包括:

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

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

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

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

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

关于 WMI