访问 WMI 命名空间

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

本主题讨论了以下信息:

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 审核以下列表中列出的所有访问权限更改,但远程启用权限除外。 这些更改记录为与“编辑安全”权限对应的审核成功或失败。

Execute 方法

允许用户执行在 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 命名空间的默认权限

默认安全组为:

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

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

  • Execute 方法
  • 完整写入
  • 启用帐户

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

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

关于 WMI