【问题标题】:Remote and automated IIS 7 management from build server - permissions issue来自构建服务器的远程和自动化 IIS 7 管理 - 权限问题
【发布时间】:2009-11-04 09:57:39
【问题描述】:

这是场景:

  • Win2003 构建服务器 (CCNET)
  • IIS7 目标部署服务器

用于执行此操作的各种 MSBuild 任务(Sdc.Tasks、MSBuild 社区、MSBuild 扩展包)(创建 VDirs、设置 AppPool 属性)不适合至少一个或多个以下原因:

  • 不支持 IIS 7。
  • 不可能通过域用户名/密码来执行操作。
  • Microsoft.Web.Management.dll 在构建服务器上不可用。
  • “拒绝访问”错误。

在 IIS 6 上创建 Vdir 没有问题 - 尽管我们实际上是在使用 iisvdir.vbs,因为使用上述任何 MSBuild 任务似乎在执行操作时不支持域用户名/密码身份验证,或者将简单地抛出一个基本的“拒绝访问”消息(尽管在 IIS 6 元数据库上具有适当的权限)。

另外 - 请记住,只要当前身份验证上下文具有正确的权限,如果不指定特定的域用户/密码,各种方法在 IIS 7 上都能完美运行,但出于显而易见的原因,我们不希望我们的所有CCNET 构建在该上下文中运行。

我什至使用 psexec.exe 在盒子上远程运行 appcmd.exe,如果当前的安全上下文具有适当的权限,它也可以正常工作,但是一旦您在 psexec 上指定用户名/密码,就会出现错误消息说“由于权限不足,无法读取配置文件。”指定的用户是域帐户,并且是 2008 服务器上本地管理员组的一部分。

另外 - 我最终推出了自己的 RunAs MSBuild 任务,继承自 Exec 任务并使用编程模拟。然后,我使用它来调用 psexec,而无需在 psexec 中指定用户名和密码,而是通过在对 psexec 进行炮击时进行模拟,但我只是得到一个退出代码 1 - 没有更多详细信息。

如你所见,我已经用尽了所有选项,或者我认为是这样。

如果您有其他想法,或者已经通过非 IIS7 机器上的自动化进程(使用特定的非本地管理员用户)远程管理 IIS7,请告诉我。

【问题讨论】:

    标签: .net security iis-7 msbuild psexec


    【解决方案1】:

    没错。经过一番折腾之后,Windows 2008 用户帐户控制 (UAC) 似乎正在成为阻碍。如果您使用的是内置管理员以外的任何其他管理员帐户,则 UAC 的管理员批准模式将启动。

    显然,在自动脚本(非交互模式)中,您将被拒绝访问,因为您没有在 UAC 对话框中点击“继续”的选项。

    唯一的选择是在组策略 (gpedit.msc) 中编辑本地计算机的安全选项,并将“在管理员批准模式下运行管理员”从启用设置为禁用。

    重启,你就没事了。

    如果您可以在特定管理员帐户上为管理员批准模式设置 UAC 例外,实际上会更好、更安全。如果你正在阅读,MS - 把它放在功能列表中!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2015-06-13
      • 2012-11-14
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多