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

问题描述 投票:0回答:1

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

  • IIS_IUSRS
  • IUSR
  • 默认应用程序池
  • ASP.NET v4.0
  • 网络_服务
  • 本地服务。

什么是什么?

asp.net security iis user-accounts
1个回答
480
投票

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

涵盖列出的身份:

IIS_IUSRS:

这类似于旧的 IIS6

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

IUSR:

此帐户类似于旧的

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

有关

IIS_IUSRS
IUSR
的更多信息,请参阅:

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

DefaultAppPool:

如果应用程序池配置为使用应用程序池标识功能运行,则将动态创建一个名为

IIS AppPool\<pool name>
的“综合”帐户,以用作池标识。在这种情况下,将在池的生命周期内创建一个名为
IIS AppPool\DefaultAppPool
的综合帐户。如果您删除池,则该帐户将不再存在。将权限应用于文件和文件夹时,必须使用
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" />
文件中的
web.config
设置将 ASP.NET 配置为模拟站点的匿名帐户(如果该设置已锁定,则需要由管理员在
machine.config
文件中完成)。

设置

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

在 IIS7.x/ASP.NET 中,模拟控制现在通过站点的身份验证配置功能进行配置。因此,您可以配置为以池身份运行,

IUSR
或特定的自定义匿名帐户。

LOCAL SERVICE:

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

本地服务帐户

LOCAL SYSTEM:

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

本地系统帐户

实践中:

实际上,保护网站安全的首选方法(如果该网站拥有自己的应用程序池 - 这是 IIS7 的 MMC 中新网站的默认设置)是在

Application Pool Identity
下运行。这意味着将其应用程序池的高级设置中的站点身份设置为
Application Pool Identity
:

enter image description here

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

enter image description here

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

enter image description here

确保选择“应用程序池身份”

enter image description here

当您应用文件和文件夹权限时,您向应用程序池身份授予所需的任何权限。例如,如果您要为

ASP.NET v4.0
池权限授予应用程序池身份,那么您可以通过资源管理器执行此操作:

enter image description here

单击“检查名称”按钮:

enter image description here

或者您可以使用

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)

更新:

我刚刚遇到 这个 2009 年的优秀答案,其中包含一堆有用的信息,非常值得一读:

© www.soinside.com 2019 - 2024. All rights reserved.