首页 文章

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

提问于
浏览
246

在安装了ASP.NET 4.0的Windows Server 2008下,有大量相关的用户帐户,我无法理解哪个是哪个,它们如何不同,哪个是我的应用程序运行的那个 . 这是一个清单:

  • IIS_IUSRS

  • IUSR

  • DefaultAppPool

  • ASP.NET v4.0

  • NETWORK_SERVICE

  • 本地服务 .

什么是什么?

1 回答

  • 388

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

    要涵盖列出的身份:

    IIS_IUSRS:

    这类似于旧的IIS6 IIS_WPG 组 . 它配置了's a built-in group with it' s安全性,以便该组的任何成员都可以充当应用程序池标识 .

    IUSR:

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

    有关 IIS_IUSRSIUSR 的详细信息,请参阅:

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

    DefaultAppPool:

    如果应用程序池配置为使用“应用程序池标识”功能运行,则将动态创建名为 IIS AppPool\<pool name> 的"synthesised"帐户以用作池标识 . 在这种情况下,将有一个名为 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 ) . 或者,您可以将ASP.NET配置为通过本地 web.config 文件中的 <identity impersonate="true" /> 设置模拟站点的匿名帐户(如果该设置已锁定,则需要由 machine.config 文件中的管理员完成) .

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

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

    LOCAL SERVICE:

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

    本地服务帐户

    LOCAL SYSTEM:

    你没有问过这个,但我补充说完整性 . 这是一个本地内置帐户 . 它拥有相当广泛的特权和信任 . 您永远不应将网站或应用程序池配置为以此身份运行 .

    LocalSystem帐户

    In Practice:

    在实践中,保护网站的首选方法(如果网站获得自己的应用程序池 - 这是IIS7的MMC中新网站的默认设置)将在 Application Pool Identity 下运行 . 这意味着将网站's Identity in its Application Pool'的高级设置设置为 Application Pool Identity

    enter image description here

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

    enter image description here

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

    enter image description here

    确保选中"Application pool identity":

    enter image description here

    当您开始应用文件和文件夹权限时,您将授予应用程序池标识所需的任何权限 . 例如,如果您为 ASP.NET v4.0 池权限授予应用程序池标识,则可以通过Explorer执行此操作:

    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)
    

    我希望这有助于澄清事情 .

    Update:

    我刚刚在2009年提出了这个优秀的答案,其中包含了大量有用的信息,非常值得一读:

    “本地系统”帐户与“网络服务”帐户之间的区别?

相关问题