应用程序池(w3wp.exe 工作进程)是以我们指定的用户身份运行的,IIS 需要使用这个用户身份访问各种系统资源和网络资源,如访问磁盘资源、执行某些系统功能、访问寄存器,以及访问网络资源等。IIS 默认的用户身份是 Network Service 账号,这个账号对 Web 服务器和网络只有有限的访问权限,但是在运行标准 Web 网站时具有完全的权限。 IIS 7.0 为用户提供了 3 种内置的账户。
内置的账户包括:Network Service、Local Service、Local System
Network Service 账号
应用程序池默认的用户是内置的 Network Service 账号。 Network Service 账号对本地计算机和网络资源只拥有最小访问权限。当访问同一个域中(或同一个信任域中)的另一个设备中的某个资源时,服务器可以使用 Network Service 账号的网络证书进行身份验证。这个设备可以是一个数据库,也可以是一个 UNC 共享,还可以是任何能够通过网络访问的资源。Network Service 账号的证书形式为 DomainName\ServerName$。例如,在 DomainA 域中,如果一个名为 WebServer1 的服务器使用 Network Service 账号运行一个网站的过程中,同时还运行了一个名为 SQLServer1 的数据库,那么为了正常运行名为 SQLServer1 的数据库,我们必须为 DomainA\WebServer1$ 账号授予必要的 SQL 访问权限。
下面的权限将被显式地指派给 Network Service 账号。
1、为一个进程调整内存配额
2、绕过漫游检查
3、创建全局对象
4、生成安全审计
5、身份验证过程结束之后模拟一个客户
6、替换一个进程级令牌
作为 Everyone 组的成员,Network Service 账号还继承了以下权限:
7、从网络访问计算机
最后,作为 IIS_IUSRS 组的成员,Network Service 账号还继承了以下权限:
8、作为一个批处理作业登录
Local Service 账号
内置的 Local Service 账号无法像 Network Service 账号那样访问网络资源,但是具有与 Network Service 账号类似的本地资源访问权限。在 Windows Vista 和 Windows Server 2008 中,Local Service 账号拥有以下本地资源访问权限,而这些权限是 Network Service 账号所不具备的:
1、修改系统时间
2、修改系统时区
如果不需要访问网络资源,那么就可以使用 Local Service 账号。
Local System 账号
内置的 Local System 账号具有对本地系统的完全访问权限。但是当我们使用 Local System 账号时,务必加以小心,尽可能地避免使用这个账号。当一个未授权的用户浏览服务器中的某个网站时,或者当这个未授权的用户上传自己的内容时,如果应用程序池以 Local System 账号身份运行,那么这个用户可以在 Web 服务器中执行任何操作。
尽管 Local System 账号可能会带来大量的安全风险,但是 Local System 账号仍然具有实际用途。如果需要对 Web 网站中的错误进行定位,同时,将应用程序池标识设置为 Local System 账号标识,并在此基础上进行测试,且假设网站的错误是由应用程序池身份标识的权限问题所引发的,那么我们就可以迅速发现问题的根源。当然,这种错误定位方式还需要考虑其他因素。成功定位错误之后,我们必须将应用程序池身份标识设置为具有合理权限的用户身份。
自定义的用户账号
与 IIS 6.0 类似,IIS 7.0 同样允许我们创建一个自定义用户。这个用户既可以是一个本地 Windows 用户,也可以是一个域用户。至于创建哪一类用户,完全取决于 IIS 7.0 的应用环境以及我们的具体需要。如果创建的是一个域用户,那么便可以像使用 UNC 共享那样访问网络资源,或者像访问一个数据库那样访问网络资源。此时我们只需要令应用程序池用户具备访问网络资源的权限即可。之所以需要创建一个自定义用户,处于以下几个原因:
1、现有的内置账户无法满足我们的需求。例如,假如 Local Service 账号权限不足,而 Local System 账号权限又太高,那么就可以根据所需要的权限创建一个合适的账号。
2、为了保护网站,需要将网站进行分隔。在一个共享环境中,如果一个 Web 服务器中运行了多个网站,而这些网站彼此之间又互不信任,那么我们就可以使用自定义用户的方法解决问题。一个共享的 Web 主机环境是使用自定义用户的主要原因。即使在同一个机构中,将不同的 Web 网站彼此分隔也非常有意义,这是因为:在共享的 Web 主机环境中,如果一个 Web 网站受到了危害,那么,只要我们对系统进行了合理配置,其他 Web 网站、应用程序池中的应用程序都不会受到影响。
3、需要使用应用程序池身份访问一个网络资源。如果需要访问一个网络资源,那么可以创建一个自定义的域用户,并将应用程序池的用户标识指派为这个自定义用户。这样一来,如果以这个应用程序池的用户标识运行的程序需要访问一个网络资源,那么,程序将使用这个自定义用户身份访问网络资源。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。