应用程序池用户

  

应用程序池(w3wp。exe工作进程)是以我们指定的用户身份运行的,IIS需要使用这个用户身份访问各种系统资源和网络资源,如访问磁盘资源,执行某些系统功能,访问寄存器,以及访问网络资源等.IIS默认的用户身份是网络服务账号,这个账号对Web服务器和网络只有有限的访问权限,但是在运行标准Web网站时具有完全的权限。IIS 7.0为用户提供了3种内置的账户。
内置的账户包括:网络服务,本地服务,本地系统

  

网络服务账号
应用程序池默认的用户是内置的网络服务账号。网络服务账号对本地计算机和网络资源只拥有最小访问权限。当访问同一个域中(或同一个信任域中)的另一个设备中的某个资源时,服务器可以使用网络服务账号的网络证书进行身份验证。这个设备可以是一个数据库,也可以是一个UNC共享,还可以是任何能够通过网络访问的资源.Network服务账号的证书形式为域名\ ServerName美元。例如,在DomainA域中,如果一个名为WebServer1的服务器使用网络服务账号运行一个网站的过程中,同时还运行了一个名为SQLServer1的数据库,那么为了正常运行名为SQLServer1的数据库,我们必须为DomainA \ WebServer1美元账号授予必要的SQL访问权限。
下面的权限将被显式地指派给网络服务账号。
1,为一个进程调整内存配额
2,绕过漫游检查
3,创建全局对象
4,生成安全审计
5,身份验证过程结束之后模拟一个客户
6,替换一个进程级令牌
作为每个组的成员,网络服务账号还继承了以下权限:
7,从网络访问计算机
最后,作为IIS_IUSRS组的成员,网络服务账号还继承了以下权限:
8,作为一个批处理作业登录

  

本地服务账号
内置的本地服务账号无法像网络服务账号那样访问网络资源,但是具有与网络服务账号类似的本地资源访问权限。在Windows Vista和Windows Server 2008中,本地服务账号拥有以下本地资源访问权限,而这些权限是网络服务账号所不具备的:
1,修改系统时间
2,修改系统时区
如果不需要访问网络资源,那么就可以使用本地服务账号。

  

本地系统账号
内置的本地系统账号具有对本地系统的完全访问权限。但是当我们使用本地系统账号时,务必加以小心,尽可能地避免使用这个账号。当一个未授权的用户浏览服务器中的某个网站时,或者当这个未授权的用户上传自己的内容时,如果应用程序池以本地系统账号身份运行,那么这个用户可以在Web服务器中执行任何操作。
尽管本地系统账号可能会带来大量的安全风险,但是本地系统账号仍然具有实际用途。如果需要对Web网站中的错误进行定位,同时,将应用程序池标识设置为本地系统账号标识,并在此基础上进行测试,且假设网站的错误是由应用程序池身份标识的权限问题所引发的,那么我们就可以迅速发现问题的根源。当然,这种错误定位方式还需要考虑其他因素。成功定位错误之后,我们必须将应用程序池身份标识设置为具有合理权限的用户身份。

  

自定义的用户账号
与IIS 6.0类似,IIS 7.0同样允许我们创建一个自定义用户。这个用户既可以是一个本地窗户用户,也可以是一个域用户。至于创建哪一类用户,完全取决于IIS 7.0的应用环境以及我们的具体需要。如果创建的是一个域用户,那么便可以像使用UNC共享那样访问网络资源,或者像访问一个数据库那样访问网络资源。此时我们只需要令应用程序池用户具备访问网络资源的权限即可。之所以需要创建一个自定义用户,处于以下几个原因:
1,现有的内置账户无法满足我们的需求,例如,假如本地服务账号权限不足,而本地系统账号权限又太高,那么就可以根据所需要的权限创建一个合适的账号。
2,为了保护网站,需要将网站进行分隔。在一个共享环境中,如果一个Web服务器中运行了多个网站,而这些网站彼此之间又互不信,任那么我们就可以使用自定义用户的方法解决问题。一个共享的网络主机环境是使用自定义用户的主要原因。即使在同一个机构中,将不同的Web网站彼此分隔也非常有意义,这是因为:在共享的网络主机环境中,如果一个Web网站受到了危害,那么,只要我们对系统进行了合理配置,其他Web网站,应用程序池中的应用程序都不会受到影响。
3,需要使用应用程序池身份访问一个网络资源。如果需要访问一个网络资源,那么可以创建一个自定义的域用户,并将应用程序池的用户标识指派为这个自定义用户。这样一来,如果以这个应用程序池的用户标识运行的程序需要访问一个网络资源,那么,程序将使用这个自定义用户身份访问网络资源。

应用程序池用户