【问题标题】:Configuring Integrated Security using IIS Application Pool Identity accounts for SQL Server 2008使用 IIS 应用程序池标识帐户为 SQL Server 2008 配置集成安全性
【发布时间】:2012-10-25 11:56:32
【问题描述】:

我的网站有以下配置:

  • 两个 Web 前端(例如机器名称:WFE1 和 WFE2)1 SQ
  • 一个 SQL Server 数据库集群(例如机器名称:DBCluster)

所有机器都在同一个域(例如 MyDomain)中,运行 Windows 2008 R2 Enterprise 和 SQL Server 2008 R2。

我正在部署一个使用应用程序池标识的 Web 应用程序。我已将池命名为 MyWebApp,它转换为名称 [IIS APPPOOL\MyWebApp]。当我尝试将此用户添加到 SQL Server 时,出现错误:

未找到 Windows NT 用户或组“IIS APPPOOL\MyWebApp”。再次检查名称。

我用来在 SQL Server 中创建帐户的脚本是:

创建登录 [IIS APPPOOL\MyWebApp] 从带有 DEFAULT_DATABASE=[MyDatabase]、DEFAULT_LANGUAGE=[us_english] 的 WINDOWS 去吧

我想问题正在发生,因为 IIS 帐户是 SQL Server 框不可见的本地帐户。

有人能解释一下如何解决这个问题吗?使用域帐户是我唯一的选择,还是我仍然可以让应用程序池帐户工作?

【问题讨论】:

    标签: iis sql-server-2008-r2 integrated-security


    【解决方案1】:

    我想问题正在发生,因为 IIS 帐户是 SQL Server 框不可见的本地帐户。

    这正是问题所在。 IIS AppPool 帐户仅存在于 Web 服务器上。如果您能够将此帐户添加到 SQL Server,则您将授权一个与 SQL Server在同一台计算机上运行的 IIS AppPool。 (我怀疑它可能仍然会失败。)

    最安全的解决方案可能是按照您所说的进行 - 在域上创建一个帐户,为该帐户授予对数据库的适当权限,然后使用该帐户的凭据运行 AppPool。

    但是,如果您仍然想这样做,您需要授权运行 AppPool 的计算机 - 即 DOMAINNAME\ComputerName$(注意末尾的 $) .

    查看at this article 了解更多信息(特别是标题为访问网络的部分)。

    我认为这是一个坏主意,但是,因为它授权任何作为 NetworkService 运行的程序 访问数据库,而不仅仅是您的 Web 应用程序。

    【讨论】:

    • 严格来说这不是真的。您应该能够设置帐户以通过网络服务使用来自应用程序池身份的约束委派。 SID 在具有相同 AppPoolIdentity 的两台不同机器上是相同的,因为 SID 是名称的哈希(尽管我认为您需要一个通用的机器密钥来确保生成相同的哈希)。
    • @ErikFunkenbusch - 你怎么能做到这一点?任何细节将不胜感激!谢谢。
    猜你喜欢
    • 2010-11-27
    • 2012-07-03
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多