负载平衡应用程序的 IIS 与 SQL Server 之间的身份验证

负载平衡应用程序的 IIS 与 SQL Server 之间的身份验证

我正在寻找使用这个连接字符串,但我不确定如何设置它:

Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;

以前我们的 SQLNCLI10 连接字符串使用 Uid 和 Pwd。现在我们已经移动了服务器并设置了 Active Directory,希望寻求有关如何在 IIS 和 MSSQL 之间配置安全性的帮助。

在 IIS 7.5 中,有一个选项可以在网站的基本设置中指定用户帐户,或者仅使用传递身份验证。我假设如果设置了传递,它会使用为应用程序池设置的帐户吗?

默认情况下,应用程序池作为 ApplicationPoolIdentity 运行。只有此应用池中的网站才有权访问此数据库。此外,还有多个使用共享配置的 Web 服务器,每个服务器都连接到同一个数据库服务器(或使用 MSSQL 数据库镜像进行镜像的服务器)

目前,当运行脚本时,这是错误消息(MSSQL 位于同一域中的不同服务器上):Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

我应该以什么身份创建应用程序池,以及如何在 MSSQL 中设置该帐户?

我希望一切都有意义,再次感谢!

我觉得这个页面是相关的,尽管我不太理解它:http://learn.iis.net/page.aspx/624/application-pool-identities/

答案1

创建一个供 SQL 使用的帐户(Windows 或 SQL 帐户),并在连接字符串中指定该帐户。出于安全考虑,执行此操作后,您还应使用以下命令加密 web.config:

%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -prov "RsaProtectedConfigurationProvider" -pef connectionStrings "[PathToWeb.Config]"  

该帐户应具有数据库所需的权限,例如 db_DataReader 和 db_DataWriter。

答案2

解决方案是创建一个具有有限访问权限的新域用户。将此新用户添加为 MSSQL 的登录名,仅针对特定数据库,仅提供您需要的权限(例如,只读和只写)。

然后配置 IIS 网站以在此新域用户下进行连接。您可能会认为将其设置为应用程序池标识会起作用,但事实并非如此!要使其工作,您还必须在 AD 中为计算机分配委派权限(信任此用户委派任何服务(仅限 Kerberos))。

相反,您可以直接打开网站的基本设置,单击该Connect As...选项并在此处输入登录详细信息。

此方法根本不需要您在连接字符串中指定用户名和密码,一切都在 IIS 中管理。

相关内容