【问题标题】:How to establish trust between IIS and SQL Server on different machines?如何在不同机器上的 IIS 和 SQL Server 之间建立信任?
【发布时间】:2010-11-12 13:42:07
【问题描述】:

我在 IIS6 中托管了一个 .net Web 应用程序,并禁用了 Windows 身份验证和匿名访问。 Web 应用正在连接到同一域中但在不同计算机上的 SQL Server。

我想让 IIS 工作进程帐户 I_USR_... 被授予访问 SQL Server 的权限。

这行得通吗?

(是否存在一对一的信任?或者我应该付出额外的努力来使信任发挥作用吗?)

(编辑) 在这个page我读到:

IUSR_ 必须在域中,并具有对 SQL Server 的适当访问权限;或者,您必须禁用站点/应用程序上的匿名访问 - 这将允许 IIS 将用户的凭据传递给 SQL Server。不做这两件事都会导致错误。

【问题讨论】:

  • 您是否收到特定的错误消息?
  • 尚未测试。该应用程序当前位于一台服务器上(Web 应用程序 + SQL Server)。该应用程序将被移动到一个新的数据中心,我们希望将 Web 和数据库部分拆分为 2 个服务器。

标签: asp.net sql-server iis


【解决方案1】:

如果您提供对应用程序池标识的 SQL 访问权限,这将起作用。

即使使用模拟,您也无法将用户的凭据传递给 SQL。

【讨论】:

  • 事实上就是这样。我创建了一个应用程序池并创建了一个对 AD 具有最低权限的服务帐户。服务帐户是 I_WPG 组的成员,并且该帐户具有对 SQL 实例的登录访问权限。对于 SQL 数据库,我通过 SQL 角色授予了对该帐户的 SP 权限和对表的 CRUD,并且一切正常!
  • 很高兴它有帮助。如果您使用 Windows 身份验证并且 SQL Server 在同一个框上,那么如果您使用模拟并且用户有权访问数据库,则不需要执行上述操作。但是 100 个中有 99 个,sql 在另一个盒子上。
  • 如何“提供对应用程序池身份的 SQL 访问”?无需创建新的 AD 用户。
【解决方案2】:

您应该可以通过允许该域帐户访问 SQL Server 框或创建一个 SQL Server 帐户并使用它来查询数据库。

有关连接字符串和可信连接的更多信息,请点击此处:http://www.connectionstrings.com/sql-server-2008

【讨论】:

  • 虚拟-1。授予用户访问权限是行不通的,我之前已经调查过了。即使是模仿也行不通。
  • 你不会给IUSR_ SQL Server访问权限,那只是为了访问网站。与 sql 的连接应该是另一个帐户或应用程序池正在运行的身份。
【解决方案3】:

最好为您的连接设置一个 sql 用户帐户或域帐户。 拥有相同的帐户有助于连接池: http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

【讨论】:

    【解决方案4】:

    要使其正常工作,您必须配置 Active Directory 以在您的 Web 服务器和数据库服务器之间建立信任。这称为委托。这是您必须为每台服务器主动配置的内容,因为允许进程获取某人的凭据并在整个网络上使用它本质上是不安全的。

    更多信息在这里:

    http://msdn.microsoft.com/en-us/library/ff647404.aspx

    一个更易读的版本:

    http://www.databasejournal.com/features/mssql/article.php/3696506/Setting-Up-Delegation-for-Linked-Servers.htm

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      相关资源
      最近更新 更多