【问题标题】:IIS 7 permissions issue when trying to isolate my web application尝试隔离我的 Web 应用程序时出现 IIS 7 权限问题
【发布时间】:2013-10-23 20:27:38
【问题描述】:

我正在尝试为在 IIS 7 上运行的 Web 应用程序设置权限,以便其他 Web 应用程序无法访问它。

我首先将它设置为在我自己命名为 MyAppsPoolName2 的应用程序池下运行,命名为 ApplicationPoolIdentity

启用匿名身份验证并设置为使用应用程序池身份:

之后我这样配置 ACL 权限:

我的 Web 应用程序的根文件夹:“C:\inetpub\www_test1”设置了以下权限:

  • 允许 FILE_GENERIC_READ 到 IIS AppPool\MyAppsPoolName2
  • 拒绝 FILE_ALL_ACCESS 到 IUSR
  • 拒绝 FILE_ALL_ACCESS 到 IIS_IUSRS

所以在 IIS 中安装并启动我的网站后,我收到以下错误:

HTTP 错误 500.19 - 内部服务器错误 无法访问请求的页面 访问,因为该页面的相关配置数据是 无效。

知道如何解决这个问题吗?

【问题讨论】:

  • 错误信息中的web.config文件是否有你列出的权限?您能否显示 ACL 的 PowerShell 输出,例如:PS > Get-Acl C:\Inetpub\www_test1 | fl 另外,如果您删除 DENY 权限,它会起作用吗? (我相信 AppPoolIdentities 是 IIS_IUSRS 组的一部分,并且 DENY 优先于 ALLOW)
  • @dirt:我不认为 web.config 与它有任何关系。如屏幕截图所示,它甚至无法读取。所以我不知道你会如何在 web.config 中列出这些权限?至于 powershell 输出然后我得到一个错误,Get-Process : Cannot find a process with the name "C:\Inetpub\www_test1". Verify the process name and call the cmdlet again.
  • @dirt:是的,如果我同时删除 deny 权限,它工作得很好——但这违背了我想要实现的目的......
  • 你的问题;由于组拒绝条目按预期工作,appPool 无权读取您的文件(它开始通过读取您的 web.config 文件,因此该文件列在您提供的错误屏幕截图中)。您可能需要重新考虑您要完成的工作。

标签: asp.net security iis iis-7 permissions


【解决方案1】:

我没有专门测试过这个,但我相信它会起作用。

将您的应用程序池配置为使用 AppPool 标识。更改您的匿名用户身份以使用您创建的帐户。将 web.config 的读取权限授予 AppPool 身份并拒绝访问匿名用户身份。

这应该会为您提供工作进程的进程令牌的 AppPool 身份,我相信这将在读取 web.config 文件时生效。在请求期间,匿名用户将用作拒绝访问 web.config 文件的线程令牌。

您也可以依赖 IIS 默认不会提供 web.config 文件这一事实。

【讨论】:

  • 嗯,这就是我的想法……但正如您在上面看到的那样,它不起作用。这几乎就像一些内部进程仍在 IIS_IUSRS 组下运行。
猜你喜欢
  • 2014-08-11
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2011-05-04
相关资源
最近更新 更多