IIS 7.5 下应用程序池的预定义账户


预定义账户

IIS 7.5 下的应用程序池标识的预定义账户有下面几个可选项:

  • ApplicationPoolIdentity 默认情况下,选择“应用程序池标识”帐户。启动应用程序池时动态创建“应用程序池标识”帐户,因此,此帐户对于您的应用程序来说是最安全的。
  • LocalService “本地服务”帐户是用户组的成员之一,它拥有与“网络服务”帐户相同的用户权限,但仅限于在本地计算机上使用。当应用程序池中的工作进程不需要访问它所运行在的 Web 服务器以外的内容时,可以使用此帐户。
  • LocalSystem “本地系统”帐户拥有所有用户权限,它是 Web 服务器上的管理员组的成员之一。应尽可能避免使用“本地系统”帐户,因为它会给 Web 服务器带来更严重的安全风险。
  • NetworkService “网络服务” 帐户是 Users 组的成员之一,并拥有运行应用程序所需的用户权限。通过使用计算机帐户的凭据,它可以在整个基于 Active Directory 的网络上进行交互。

如果应用程序池选择的是 ApplicationPoolIdentity , 这个账户的权限很低, 只属于 IIS_IUSRS 用户组, 甚至不属于 Users 用户组, 而应用程序又需要访问本地文件系统 (比如日志输出) , 就需要为 ApplicationPoolIdentity 账户设置 NTFS 权限, 这个账户在安全对话框是找不到的, 只能手工输入 IIS APPPOOL{app pool name} 进行设置。

预定义账户使用方法

Local System标识

这个标识是内置的这几个账户里面的级别最高的一个,那么说也就是风险最高的一个,并且也是配置起来最简单的一个了。

只需要将程序池中的标识符更改为LocalSystem,并且给文件夹权限分配一个Everyone用户权限就可以了。

Network Service 或 Local Service标识

首先配置IIS

右键打开应用程序池中该项目的高级设置,将设置中的标识选项打开,选择账户为NETWORK SERVICE,点击确定,这样iis设置就完成了

接着我们配置SQL企业管理器。

1)打开SQL管理器à选择数据库实例à【安全性】à【登录名】,查看是否存在NETWORK SERVICE,若不存在,则添加之

2)添加账户方法:右键【登录名】à选择【新建登录名】,在弹出的对话框中的右边有登录名输入框,点击右侧的【搜索】,在弹出的【选择用户或组】中点击【高级】,再点击【立即查找】,找到NETWORK SERVICE用户名,点击确定。

配置其他属性

  • 左边导航à服务器角色勾选sysadmin

  • 左边导航à用户映射à勾选要连接的数据库或者所有数据库

这样你会发现登录名中就有了NTAUTHORITY\NETWORK SERVICE这个用户,那么恭喜你,你的SQL企业管理器就业配置好了。那么就开始运行你的网站吧!

ApplicationPoolIdentify 标识

ApplicationPoolIdentify标识对于您的应用程序来说是最安全的。下面我们开始配置ApplicationPoolIdentify吧!

在配置中,我们要给网站文件夹分配一个ApplicationPoolIdentify账号,首先我们知道ApplicationPoolIdentify是一个虚拟账户我们是找不到的,那么我们怎样给他分配账号呢,如果直接添加一个NewsTest(NewsTest为我们配置的应用程序池的名称)用户的话,就会报错。“找不到名称”。

他们会提醒我们找不到名称,那么怎么办呐?那我们就需要手动配置了,手动输入 IISAppPool\NewsTest(即IIS AppPool\应用程序池名),再确定。是的通过了。

ApplicationPoolIdentity

从IIS 7.5开始,Application Pool Identity的Built-in Account除了LocalService,LocalSystem,NetWorkService又多了一个ApplicationPoolIdentity。

ApplicationPoolIdentity是IIS默认选择的Application Pool Identity。在启动应用池时会动态创建和应用池同名的虚拟帐号。说它是“虚拟”的,是因为在用户管理中看不到该用户或用户组,但该帐号又是确实存在的,比如上图中的应用池名字是WCFDemo,在任务管理器中可以看到w3wp.exe进程(即IIS进程)运行在WCFDemo帐号下。

一个ASP.NET web application可能需要对certificates store中的一个certificate的private key有读权限,下面演示如何对application pool identity赋予读权限。

点击Add

添加 IIS AppPool\AppPoolName帐号,替换AppPoolName为应用池的名称,这里为WCFDemo。

总结

ApplicationPoolIdentity是从IIS 7.5之后新添加的Built-in account,是IIS创建新application pool时默认选择的运行帐号。该帐号在启动Application Pool是启动一个虚拟帐号,虚拟帐号名与Application Pool同名,在用户管理中找不到虚拟帐号,但在Task Manager中可以看到w3wp.exe运行在该虚拟帐号下。最后如果想给该虚拟帐号赋予权限,需要赋给IIS AppPool\AppPoolName,取代AppPoolName为Application Pool名称。

知识共享许可协议
《IIS 7.5 下应用程序池的预定义账户》 常伟华 创作。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 | 3.0 中国大陆许可协议进行许可。

站内公告

A PHP Error was encountered

Severity: Core Warning

Message: PHP Startup: zip: Unable to initialize module Module compiled with module API=20060613 PHP compiled with module API=20090626 These options need to match

Filename: Unknown

Line Number: 0

Backtrace: