小编典典

IIS/ASP.NET 的所有用户帐户是什么?它们有何不同?

all

在安装了 ASP.NET 4.0 的 Windows Server 2008
下,有一大堆相关的用户帐户,我不明白哪个是哪个,它们有何不同,以及哪个是我的应用程序运行的真正的用户帐户。这是一个列表:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • LOCAL SERVICE.

什么是什么?


阅读 78

收藏
2022-04-18

共1个答案

小编典典

这是一个非常好的问题,但遗憾的是,在作为 Web 开发人员和设置 IIS 的背景下,许多开发人员没有就 IIS/ASP.NET
安全提出足够的问题。所以这里......

涵盖列出的身份:

IIS_IUSRS:

这类似于旧的 IIS6IIS_WPG组。它是一个内置组,其安全配置使得该组的任何成员都可以充当应用程序池身份。

IUSR:

此帐户类似于旧的IUSR_<MACHINE_NAME>本地帐户,它是 IIS5 和 IIS6
网站的默认匿名用户(即通过站点属性的目录安全选项卡配置的帐户)。

有关更多信息IIS_IUSRSIUSR请参阅:

了解 IIS 7 中的内置用户和组帐户

DefaultAppPool:

如果应用程序池配置为使用应用程序池标识功能运行,IIS AppPool\<pool name>则将动态创建一个称为“综合”帐户以用作池标识。在这种情况下,将IIS AppPool\DefaultAppPool在池的生命周期内创建一个名为 created
的合成帐户。如果您删除池,则此帐户将不再存在。对文件和文件夹应用权限时,必须使用IIS AppPool\<pool name>.
您也不会在您的计算机用户管理器中看到这些池帐户。有关详细信息,请参阅以下内容:

应用程序池标识

ASP.NET v4.0: -

这将是 ASP.NET v4.0 应用程序池的应用程序池标识。见DefaultAppPool上文。

NETWORK SERVICE: -

NETWORK SERVICE帐户是在 Windows 2003 上引入的内置身份。NETWORK SERVICE是一个低特权帐户,您可以在该帐户下运行应用程序池和网站。在 Windows 2003 池中运行的网站仍然可以模拟该网站的匿名帐户(IUSR_
或您配置为匿名身份的任何内容)。

在 Windows 2008 之前的 ASP.NET 中,您可以让 ASP.NET 在应用程序池帐户(通常是NETWORK SERVICE)下执行请求。<identity impersonate="true" />或者,您可以将 ASP.NET
配置为通过本地文件中的设置来模拟站点的匿名帐户web.config(如果该设置被锁定,则需要由machine.config文件中的管理员完成)。

设置<identity impersonate="true">在使用共享应用程序池的共享托管环境中很常见(结合部分信任设置以防止模拟帐户的解除)。

在 IIS7.x/ASP.NET 中,模拟控制现在通过站点的身份验证配置功能进行配置。因此,您可以配置为以池身份IUSR或特定的自定义匿名帐户身份运行。

LOCAL SERVICE:

LOCAL SERVICE帐户是服务控制管理器使用的内置帐户。它在本地计算机上具有最低权限集。它的使用范围相当有限:

本地服务帐户

LOCAL SYSTEM:

你没有问这个问题,但我为了完整性而添加。这是一个本地内置帐户。它拥有相当广泛的特权和信任。您永远不应将网站或应用程序池配置为在此身份下运行。

本地系统帐户

在实践中:

在实践中,保护网站的首选方法(如果网站有自己的应用程序池 - 这是 IIS7 的 MMC 中新网站的默认设置)是在Application Pool Identity. 这意味着在其应用程序池的高级设置中将站点的身份设置为Application Pool Identity

在此处输入图像描述

然后,您应该在网站中配置身份验证功能:

在此处输入图像描述

右键单击并编辑匿名身份验证条目:

在此处输入图像描述

确保选择了 “应用程序池标识”

在此处输入图像描述

当您应用文件和文件夹权限时,您授予应用程序池身份所需的任何权限。例如,如果您为ASP.NET v4.0池权限授予应用程序池身份,那么您可以通过
Explorer 执行此操作:

在此处输入图像描述

单击“检查名称”按钮:

在此处输入图像描述

或者您可以使用该ICACLS.EXE实用程序执行此操作:

icacls c:\wwwroot\mysite /grant "IIS AppPool\ASP.NET v4.0":(CI)(OI)(M)

…或者…如果您的站点的应用程序池被调用BobsCatPicBlog,那么:

icacls c:\wwwroot\mysite /grant "IIS AppPool\BobsCatPicBlog":(CI)(OI)(M)

我希望这有助于澄清问题。

2022-04-18