为什么内置的IIS AppPool账户不需要批量登录权限即可运行?

为什么内置的IIS AppPool账户不需要批量登录权限即可运行?

我似乎无法理解这一点。IIS 文档(以及无数的论坛帖子)非常清楚地说明了运行 IIS 应用程序池所需的权限,其中包括批处理登录权限(作为批处理作业登录)。我在以域帐户运行应用程序池时确认了这一点,如果域帐户没有此权限,则工作进程将无法启动。

但是,当我使用内置的“应用程序池标识”(IIS AppPool\[应用​​程序池名称]) 运行应用程序池时,即使此标识没有批量登录权限,池也能正常运行(它会启动、处理请求等,没有任何问题)。此特定权限通过域 GPO 锁定,并且此标识和 IIS_IUSRS 本地组(据我了解,内置应用程序池帐户在运行时动态授予其成员资格)都没有此权限。

现在,IIS 确实自动向应用程序池标识授予了某些其他权限(每次创建新应用程序池时都会这样做),例如“生成安全审核”、“以服务身份登录”等。但这些显然不能替代缺少“以批处理作业身份登录”的事实。从 SysinternalsSuite 运行“accesschk”工具可确认这些帐户没有此权限。

此链接描述了 IIS v7+ 中的默认权限,并指出应用程序池标识被授予某些权限,并且 IIS_IUSRS 本地组默认被授予“作为批处理作业登录”(这解释了为什么应用程序池标识开箱即用):

https://support.microsoft.com/en-us/help/981949/description-of-default-permissions-and-user-rights-for-iis-7-0-and-lat

但是,我仍然不明白它们如何在通过域 GPO 锁定批量登录权限并且 IIS_IUSRS 组和应用程序池标识均未包含在策略中的环境中正常工作。

这是在 Server 2012R2(IIS v8.5)上观察到的,有趣的是,当我稍微挖掘一下时,我还看到了与在 Server 2016(IIS v10)中作为 NetworkService 运行的应用程序池相同的行为(相同环境 - 批量登录权限通过域 GPO 锁定,并且 NetworkService 不包含在该策略中)。

因此,似乎出于某种原因,本地帐户不需要批量登录权限来运行应用程序池。当然,如果我们尝试在没有这些权限的情况下在域帐户下运行该池,它绝对会失败。我起初以为这只是应用程序池“虚拟帐户”,但这无法解释 NetworkService 的相同行为 - 所以也许只有内置的本地帐户?我不知道。

有人可以解释一下这个问题吗?

相关内容