我打算主持一些需要完全信任的asp.net应用程序。 这些网站将在不同的域名下,我是服务器的pipe理员。 他们将被托pipe在Windows 2008 R2(IIS 7.5)中。 我不希望用户有能力访问registry,事件日志,其站点文件夹之外的文件夹等。
什么是“沙箱”这些网站的步骤,使他们完全信任的工作,但不能对服务器造成任何损害,即使网站所有者试图?
如果您打算每个站点都有单独的应用程序池,那么使用应用程序池标识可以非常简单地进行locking。
为站点创build应用程序池时,将工作进程标识(高级设置 – >进程模型)设置为ApplicationIdentity 。
创build您的网站并指定其专用应用程序池。
导航到该站点的“function视图”并打开“身份validation”小程序。 确保匿名身份validation已启用,然后select并编辑此属性(或右键单击匿名身份validation)。 将匿名用户标识更改为“应用程序池标识”。
在资源pipe理器浏览到该网站的networking文件夹,并打开文件夹属性的安全选项卡。 通过指定IIS AppPool\[ApplicationPoolName]例如IIS AppPool\BobsBlogSite来添加应用程序池标识。 设置你想授予该网站的权限,即读/写/执行等
有一点需要注意的是,无论你在哪里find每个网站的网站文件夹,例如C:\Websites ,你可能有C:\Websites\site1 , C:\Websites\site2等,记得打破任何ACLinheritance,所以你不小心如果已将Users或IIS_IUSRS添加到C:\则通过组成员身份泄漏访问权限。
我们通常删除C:\Websites文件夹中的所有权限, SYSTEM和Administrators除外。
有关进一步阅读,请参阅以下文章:
应用程序池标识(IIS.NET)
IIS 7中的新增function – 应用程序池隔离