使用 IIS6 兼容模式在 IIS7 中读取 root\MicrosoftIISv2 所需的 WMI 权限

Joe*_*lly 6 windows-server-2008 iis-7 wmi

我需要使用 WMI IIS6 API 远程管理我的 IIS7 (Windows Server 2008)。所以我添加了IIS6 WMI CompatibilityIIS6 Metabase Compatibility角色来访问root\MicrosoftIIsv2命名空间。

我有一个域帐户,它不是远程计算机上的管理员;有了这个权利,一切都好了。

我为我的域帐户配置了这些权限以root\MicrosoftIIsv2远程访问WMI 命名空间;请注意,这些权限在 IIS6 和 Windows Server 2003 上完美运行

DCOM :

  • 分布式 COM 用户中的帐户> 对 DCOM 的远程和本地访问

WMI :

  • Root\CIMV2(我也需要在这里访问)> 执行方法、启用帐户、远程启用
  • Root\Default(我也需要在这里访问)> 执行方法、启用帐户、远程启用
  • Root\MicrosoftIISv2 > 执行方法、启用帐户、提供程序写入、远程启用

IIS 元数据库(元数据库资源管理器):

  • LM > 完全控制(W3SVC继承了这些权限)

我也尝试在 C:\Windows\System32\inetsrv 上提供一些访问权限;不知道是否需要。

我的问题是:

我无法列出 IIS 网站 (\root\MicrosoftIISv2:IIsWebServerSetting.Name="W3SVC/*")。我没有收到“拒绝访问”,但没有返回任何内容。

  • 我的 API 和 powershell 测试可以在root\MicrosoftIISv2命名空间中连接和执行查询
  • 我可以阅读 IIsComputer 类
    • 前任: Get-WmiObject IIsComputer -namespace "ROOT\MicrosoftIISv2" -authentication PacketPrivacy | SELECT *
  • 我无法读取 IIsWebServerSetting, IIsWebServer ... 来列出网站:查询返回一个空集合
    • 前任: Get-WmiObject IIsWebServerSetting -namespace "ROOT\MicrosoftIISv2" -authentication PacketPrivacy | SELECT ServerComment
  • 如果帐户是管理员则所有查询都可以正常工作
  • 我正在使用PacketPrivacy身份验证

FI:无论管理员权限与否,我都收到了警告事件 5605,这似乎没有影响:

root\MicrosoftIISv2 命名空间标有 RequiresEncryption 标志。如果脚本或应用程序没有适当的身份验证级别,则可能会拒绝访问此命名空间。将身份验证级别更改为 Pkt_Privacy 并再次运行脚本或应用程序


好的,我有更多信息,当我通过管理员帐户使用IIS 6 Metabase Explorer 时,我可以看到我的非管理员帐户正确继承了权限。

但是,当我尝试使用我的非管理员帐户进行连接时,我可以列出LM节点,但是当我尝试浏览子节点时会收到“访问被拒绝,无法获取密钥数据”的消息

我会进一步检查。


我试图跟踪 WMI 活动,一切似乎都正常;这往往会证实问题出在 IIS 权限上。

Joe*_*lly 1

解决。

WMI 和 IIS Metabase 权限必须像在 IIS 6 上一样进行设置。所以它们对我来说是正确的。

具体取决于 IIS 元数据库。首先,在 IIS 7 中,W3SVC权限完全从根继承,而W3SVC/AppPools如果要处理应用程序池,则必须在 IIS 6 上设置权限。

由于存在“兼容性”,因此主要区别在于 IIS 7 元数据库文件系统。在 IIS 6 上,对 inetsrv 文件夹(这是 的默认设置Users)和元数据库 ACL 的读取权限就足够了。

在 IIS 7 上,必须在 IIS 元数据库和 IIS 7 配置文件夹上设置权限:(然后%SYSTEMROOT%/system32/inetsrv/config.config文件)。默认情况下,只有Administrators(这就是为什么它可以与管理员权限完美配合)和其他一些保留组可以访问此文件夹。

还有一点,如果您需要Stop在应用程序池上执行诸如 a 之类的方法,则此功能需要配置文件夹的写入权限。