Windows Server 2008为我们提供了一种全新的特性,这种新的特性允许内置Windows用户将辅助性的独特信息注入到工作进程和Windows安全令牌中,从而使各个工作进程的资源彼此之间相互隔离。

当使用先前版本的 IIS 时,有时候很难将不同的 Web 应用程序池彼此隔离开来。如果多个 Web 应用程序池需要以同一个身份标识运行(例如:Network Service),那么运行在一个 Web 应用程序池中的代码就可以使用 File System 对象来访问属于其他 Web 应用程序池的配置文件、Web 页面等资源。这是因为当多个进程以 Network Service 身份运行时,我们无法既允许其中的某一个进程访问某个文件,同时又禁止其他进程访问同一个文件。
然而,IIS 7.0 为我们提供了隔离机制。在 IIS 7.0 中,每个 web 应用程序池都拥有一个 web 应用程序池配置文件,这个配置文件是在启动应用程序池的过程中根据启动情况自动生成的。默认情况下,这些随机生成的配置文件将保存在 C:\inetpub\temp\appPools 文件夹中。每个 web 应用程序池都生成了一个附加的 SID(Security Identifier,安全标识),并且将这个 SID 注入到 w3wp.exe 进程中。应用程序池的配置文件是使用访问列表进行访问控制的,只允许使用了相关 SID 的那些进程访问。因为每个 w3wp.exe 进程都拥有自己的 SID,所以每个应用程序池的配置文件都只能由一个拥有相同 SID 的进程访问。

配置应用程序池沙箱_第1张图片