- ApplicationPoolIdentity 默认情况下,选择“应用程序池标识”帐户。启动应用程序池时动态创建“应用程序池标识”帐户,因此,此帐户对于您的应用程序来说是最安全的。
- LocalService “本地服务”帐户是用户组的成员之一,它拥有与“网络服务”帐户相同的用户权限,但仅限于在本地计算机上使用。当应用程序池中的工作进程不需要访问它所运行在的 Web 服务器以外的内容时,可以使用此帐户。
- LocalSystem “本地系统”帐户拥有所有用户权限,它是 Web 服务器上的管理员组的成员之一。应尽可能避免使用“本地系统”帐户,因为它会给 Web 服务器带来更严重的安全风险。
- NetworkService “网络服务” 帐户是 Users 组的成员之一,并拥有运行应用程序所需的用户权限。通过使用计算机帐户的凭据,它可以在整个基于 Active Directory 的网络上进行交互。
IS6网站权限,通常配置IUSR_计算机名和NETWORK SERVICE两个用户权限即可:
其中IUSR_计算机名是网站匿名访问帐户,NETWORK SERVICE是网站应用程序池安全帐户:
然而,同样的权限配置,测试发现IIS7.5网站动态页面打开会出错。比较发现IIS7.5应用程序池安全帐户除了本地系统、网络服务和本地服务外,比IIS6多了一个ApplicationPoolIdentity,并且它是默认安全帐户:
如果应用程序池选择的是 ApplicationPoolIdentity , 这个账户的权限很低, 只属于 IIS_IUSRS 用户组, 甚至不属于 Users 用户组, 而应用程序又需要访问本地文件系统 (比如日志输出) , 就需要为 ApplicationPoolIdentity 账户设置 NTFS 权限, 这个账户在安全对话框是找不到的, 只能手工输入 IIS APPPOOL\{app pool name} 进行设置。
通过查看 IIS_IUSRS 用户组的属性可以看到全部的“应用程序池标识”账户, 如下图:
看下任务管理器中的变化:
这样相当于是有了多个NETWORK SERVICE用户,能大大降低网站被旁注的风险。当然了,也可以将IIS7.5应用程序池安全帐户设置为网络服务,这样和IIS6.0一样配置即可,但不推荐这么做。此外,若想简单配置,只赋于网站Authenticated Users组权限也是可以的(代替匿名帐户+安全帐户,但比Everyone安全)。