为什么为 IIS_IUSRS 分配读取和执行权限会授予对 NETWORK SERVICE 的访问权限?

为什么为 IIS_IUSRS 分配读取和执行权限会授予对 NETWORK SERVICE 的访问权限?

我有一个经典 ASP 网站,正在尝试使用匿名身份验证进行设置。以下是我当前的设置:

  • 应用程序池标识:NetworkService
  • 匿名身份验证用户:IUSR

IUSR为帐户和NETWORK SERVICE站点目录上的帐户分配读取和执行权限允许匿名访问。但是,出于某种原因NETWORK SERVICE,可以分配权限IIS_IUSRS并实现相同的效果。考虑到应用程序池是在选择的 NetworkService 标识而不是 ApplicationPoolIdentity 标识下运行的,这对我来说似乎很奇怪。使用net localgroup IIS_IUSRS表明它不是计算机上组NETWORK SERVICE的成员。IIS_IUSRS

那么为什么要分配权限来IIS_IUSRS访问该NETWORK SERVICE帐户呢?

我认为可能存在一些奇怪的后备逻辑,如果无法通过 进行身份验证NETWORK SERVICE,它会尝试使用应用程序池的虚拟帐户,但运行 Process Monitor 发现 w3wp.exe 进程已成功通过 身份验证NT Authority\NETWORK SERVICE。有什么想法吗?

如果有帮助的话,以下是一些服务器信息:

  • 操作系统:Windows Server 2008 R2 标准版 Service Pack 1
  • IIS:7.5.7600.16385
  • 应用程序池:.NET Framework v2.0、经典托管管道、网络服务标识

答案1

任何运行 IIS 应用程序池的帐户都会IIS_IUSRS在运行时自动添加到该组中。

或者更正确地说,该组的安全令牌IIS_IUSRS被添加到运行任何应用程序池的进程的安全令牌中。

查看该 IIS_IUSRS组的静态成员资格会让您对正在发生的事情产生错误的认识。

如果您查看进程资源管理器中的“安全”选项卡,您应该会看到BUILTIN\IIS_IUSRS该进程的其中一个组w3wp.exe

相关内容