“应用池标识”对应用池起到什么作用?

smw*_*dia 16 iis iis-7.5

在谈论 IIS 7.5 安全性时,AFAIK:

App Pool Identity决定我的 Web 应用程序以谁的身份运行。

验证方法决定的客户端认证为。

我有一个这样配置的虚拟文件夹:

  • 我使用匿名身份验证,期望所有客户端都应通过身份验证为IUSR
  • 我让 IUSR 完全控制该文件夹。
  • 我的应用程序池标识设置为 XXX 帐户,该帐户对该文件夹没有任何权限。(我特意设置了这个)

但事实证明我无法浏览该文件夹中的文件。一旦我授予 XXX 帐户访问该文件夹的权限,事情就会顺利进行。

那么App Pool Identity在匿名认证中扮演什么角色呢?我必须授予 App Pool Identity 帐户访问文件夹的权限,这完全出乎意料。我认为匿名身份验证就足够了?

谢谢。

Tri*_*anK 18

这里有很多重载的术语,以及 IIS 7 和 7.5 之间的变化。

应用程序池身份与应用程序池帐户

让我们从应用程序池标识(小写 I,又名应用程序池帐户)开始:

我告诉它的方式是,应用程序池帐户是用于启动应用程序池的帐户,以及应用程序池在不冒充其他人时所采用的身份。

因此,无论您为 App Pool 提供什么身份,它都需要能够读取内容文件夹中的文件:特别是{但不限于}任何web.config 文件(构成 IIS 配置的一部分,并控制App Pool 将要做)。

如果它不能访问一个文件夹,它会假设那里可能有一个重要的(改变游戏规则的)web.config 文件,并显示一个错误。因此,应用程序池帐户需要对所有内容文件夹的读取权限。

应用程序池标识

为什么要区分App Pool Account(应用池的身份)和App Pool Identity?因为使用特殊大写的ApplicationPoolIdentity是一种新帐户类型- 托管服务帐户 - 在 IIS 7.5 / Windows 2008 R2 中引入并设为默认值,并且也可从 Windows 2008 SP2 中使用(但不是默认值)。

请参阅IIS.Net 上的应用程序池标识

当您使用 GUI 在 R2 下创建网站时:

  • 将创建一个应用程序池来托管该网站,并且
  • 帐户类型将是 ApplicationPoolIdentity,而不是网络服务(2008 年的默认值)、本地服务或本地系统。

在 2008 RTM 中,默认的应用程序池帐户是网络服务加上唯一的应用程序池标识/唯一标识符;新的 R2/SP2 AppPoolIdentity帐户类型是一种类似网络服务的帐户(即连接离线时的计算机),但防止在同一个框中模拟另一个应用程序池。

回到最初的问题:

  • 应用程序池帐户定义您的应用程序运行的时候它不是模仿别人

  • 身份验证方法描述您将如何对客户端进行身份验证(以模拟它们)

  • 匿名用户帐户定义你要冒充为未通过身份验证请求的用户在作为运行谁- IUSR是这样的用户。

顺便提一下,在 IIS 7.5 中,您可以将匿名用户帐户设置为应用程序池标识(匿名身份验证方法的属性),这可能会更直接地隔离和保护给定网站的内容。

使用 IIS AppPool\YourSiteName 为名称格式设置权限。(另见这篇文章