【发布时间】:2021-01-18 05:49:48
【问题描述】:
我正在运行 Windows 2016 服务器,我们在其上运行 IIs 10,我需要能够在部署网站之前断言是否有 AppPool 设置。如果它不存在,我需要使用特定用户和密码设置 AppPool。
所有这些都是通过 Azure Devops 使用发布代理完成的。
代理以非管理员身份运行,并且所有涉及的帐户都以非管理员身份运行。我根本无意运行任何管理员帐户,出于安全原因,我想为所有相关帐户提供最少的特权。
当我尝试使用 appcmd.exe 设置 AppPool 时,我收到错误消息:
KeySet does not exist.
当以管理员身份运行所有内容时,它可以工作(我绝对无意以管理员身份运行任何内容)。
我尝试过的:
我已将非管理员帐户添加到IIS_IUSRS 组。
确保用户对文件具有读取权限:76944fb33636aeddb9590521c2e8815a_GUID 位于 %ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys 文件夹中。
我在这里尝试了所有方法:Error when you change the identity of an application pool by using IIS Manager from a remote computer
有谁知道这个问题的原因?
更新:
Microsoft clearly recommends 代理应该使用服务帐户运行,我正在这样做,并且我没有兴趣为构建代理授予 1000 台服务器的管理权限,而他们显然实际上并不需要这种权力。我想限制他们的权力,只允许他们做他们需要做的事情。我不敢相信将一切都交给管理员显然是常态。
【问题讨论】:
-
这里的经验法则是所有 IIS 配置 API 都假定您使用管理员帐户。你无法对抗你无法控制的事情。
-
从安全角度来看太可怕了。我完全没有兴趣赋予构建代理管理权。甚至微软自己也建议不要运行具有管理员权限的部署代理。那么微软怎么能明确推荐一个当时不可能坚持的行为呢?如果微软建议不要使用我完全同意的管理帐户,应该如何自动化整个过程。
标签: windows powershell iis iis-10 appcmd