托pipe共享完全信任的asp.net网站,同时限制他们访问registry和文件系统

我打算主持一些需要完全信任的asp.net应用程序。 这些网站将在不同的域名下,我是服务器的pipe理员。 他们将被托pipe在Windows 2008 R2(IIS 7.5)中。 我不希望用户有能力访问registry,事件日志,其站点文件夹之外的文件夹等。

什么是“沙箱”这些网站的步骤,使他们完全信任的工作,但不能对服务器造成任何损害,即使网站所有者试图?

如果您打算每个站点都有单独的应用程序池,那么使用应用程序池标识可以非常简单地进行locking。

  1. 为站点创build应用程序池时,将工作进程标识(高级设置 – >进程模型)设置为ApplicationIdentity

  2. 创build您的网站并指定其专用应用程序池。

  3. 导航到该站点的“function视图”并打开“身份validation”小程序。 确保匿名身份validation已启用,然后select并编辑此属性(或右键单击匿名身份validation)。 将匿名用户标识更改为“应用程序池标识”。

  4. 在资源pipe理器浏览到该网站的networking文件夹,并打开文件夹属性的安全选项卡。 通过指定IIS AppPool\[ApplicationPoolName]例如IIS AppPool\BobsBlogSite来添加应用程序池标识。 设置你想授予该网站的权限,即读/写/执行等

有一点需要注意的是,无论你在哪里find每个网站的网站文件夹,例如C:\Websites ,你可能有C:\Websites\site1C:\Websites\site2等,记得打破任何ACLinheritance,所以你不小心如果已将UsersIIS_IUSRS添加到C:\则通过组成员身份泄漏访问权限。

我们通常删除C:\Websites文件夹中的所有权限, SYSTEMAdministrators除外。

有关进一步阅读,请参阅以下文章:

应用程序池标识(IIS.NET)
IIS 7中的新增function – 应用程序池隔离