在安装了ASP.NET 4.0的Windows Server 2008下,有一大堆相关的用户帐户,我不知道哪一个是哪一个,它们之间有什么区别,哪一个才是我的应用程序真正运行的帐户。以下是一份清单:
- IIS_IUSRS
- IUSR
- DefaultAppPool
- ASP.NET v4.0
- 网络服务
- 当地服务
什么是什么
这是一个非常好的问题,遗憾的是,在作为web开发人员和设置IIS的环境中,许多开发人员没有就IIS/ASP.NET安全性提出足够的问题。这就是
要涵盖列出的身份,请执行以下操作:
IIS\u IUSRS:
这与旧的IIS6IIS_WPG组类似。它是一个内置组,其安全性配置为该组的任何成员都可以充当应用程序池标识
IUSR:
该账户类似于旧的IUSR<;机器名称>本地帐户,该帐户是IIS5和IIS6网站的默认匿名用户(即通过网站属性的目录安全选项卡配置的帐户)
有关IIS\u IUSRS和IUSR的更多信息,请参阅:
了解IIS 7中内置的用户和组帐户
DefaultAppPool:
如果应用程序池配置为使用应用程序池标识功能运行,则会出现一个名为IIS AppPool\<;池名>将动态创建以用作池标识。在这种情况下,将为池的生命周期创建一个名为IIS AppPool\DefaultAppPool的综合帐户。如果删除池,则此帐户将不再存在。对文件和文件夹应用权限时,必须使用IIS AppPool\<;池名>。您也不会在计算机用户管理器中看到这些池帐户。有关更多信息,请参见以下内容:
应用程序池标识
ASP.NET v4.0:-
这将是ASP.NET v4.0应用程序池的应用程序池标识。请参见上面的DefaultAppPool
网络服务:-
网络服务帐户是Windows 2003上引入的内置标识网络服务是一个低特权帐户,您可以在该帐户下运行应用程序池和网站。在Windows 2003池中运行的网站仍然可以模拟该网站的匿名帐户(IUSR_u或任何您配置为匿名身份的帐户)
在Windows 2008之前的ASP.NET中,您可以让ASP.NET在应用程序池帐户下执行请求(通常是网络服务)。或者,您可以将ASP.NET配置为通过模拟站点的匿名帐户<;identity impersonate=“true”/></本地web.config文件中的code>设置(如果该设置被锁定,则需要由machine.config文件中的管理员执行)
设置<;identity impersonate=“true”>在使用共享应用程序池的共享托管环境中很常见(与部分信任设置结合使用,以防止解除模拟帐户)
在IIS7.x/ASP.NET中,模拟控制现在通过站点的身份验证配置功能进行配置。因此,您可以配置为作为池标识、IUSR或特定的自定义匿名帐户运行
本地服务:
本地服务帐户是服务控制管理器使用的内置帐户。它在本地计算机上具有一组最低权限。它的使用范围相当有限:
本地服务帐户
本地系统:
你没有问这个问题,但我补充说是为了完整性。这是一个本地内置帐户。它拥有相当广泛的特权和信任。您不应将网站或应用程序池配置为在此标识下运行
本地系统帐户
实践中:
实际上,保护网站安全的首选方法(如果网站拥有自己的应用程序池-这是IIS7 MMC中新网站的默认设置)是在应用程序池标识下运行。这意味着在其应用程序池的高级设置中将站点的标识设置为应用程序池标识:
然后,您应该在网站中配置身份验证功能:
右键单击并编辑匿名身份验证条目:
确保选择了“应用程序池标识”:
当您开始应用文件和文件夹权限时,您将授予应用程序池标识所需的任何权限。例如,如果要为ASP.NET v4.0池权限授予应用程序池标识,则可以通过资源管理器执行以下操作:
单击“检查名称”按钮:
也可以使用ICACLS.EXE实用程序执行此操作:
icacls c:\wwwroot\mysite/grant“IIS AppPool\ASP.NET v4.0”:(CI)(OI)(M)
…或…如果站点的应用程序池被称为BobsCatPicBlog,则:
icacls c:\wwwroot\mysite/grant“IIS应用池\BobsCatPicBlog”:(CI)(OI)(M)
我希望这有助于澄清问题
更新:
我刚刚偶然发现了这个来自2009年的优秀答案,其中包含了大量有用的信息,非常值得一读:
与#39;本地系统';账户和';网络服务';帐户