IIS7、SQL Server 2008 和连接字符串/身份验证

IIS7、SQL Server 2008 和连接字符串/身份验证

好了,大家,

我的公司托管了不少网站。这些网站都需要连接到 SQL Server 2008。

当我们将网站部署到新服务器时,我们必须不断修改 web.config 以包含具有适当用户名和密码的连接字符串。这要求部署人员为该数据库设置具有所有适当权限的用户,然后修改配置文件。

我想做的是,不是为每个数据库创建一个用户,而是创建一个对每个数据库都具有权限的用户,并且不在配置中指定用户名和密码。这将节省大量时间,并且我相信这会使其更安全(客户端可以通过 ftp 访问 web.config,但很多时候我们不希望它们位于数据库中)。

此外,这必须在 SQL Server 存在于当前域之外的情况下才能工作。听起来这可能会阻碍使用 Windows 集成安全性...

除了指定用户名和密码(映射 Windows 域用户访问)之外,我从未使用过任何设置。听起来我需要使用 Windows 集成安全性,但我在 MSDN 上找不到任何有关 IIS 7 的信息。

任何人关于安全和设置的想法都会受到赞赏。

答案1

集成身份验证正是您所寻找的,但是当不在域中时,这会变得很棘手。 尤其是在使用 Windows 2008 时。 它不喜欢不在域中的机器之间的 Windows 身份验证。

假设您坚持使用集成身份验证,您可以设置每个站点在其自己的应用程序池中运行,并设置每个应用程序池在其自己的帐户下运行,以便帐户没有对其他数据库的权限。

如果客户有权通过 FTP 访问网络服务器,他们就可以上传文件,从而查看其他客户的数据,这是大忌。

从安全角度来看,将所有东西都设为单个帐户不是一个好主意。每个客户一个帐户(Windows 或 SQL)是一个更好的计划。

答案2

您走在正确的道路上。您正在寻找的是集成身份验证。从这里获取集成身份验证的连接字符串:http://www.connectionstrings.com/sql-server-2008

在 IIS7 中,为您的网站在其下运行的应用程序池创建自定义域用户。为了获得最佳安全性,请确保每个网站都有自己的应用程序池和自定义用户。确保授予该用户对磁盘的访问权限,以便网站正常运行。然后,也授予该自定义用户对数据库的访问权限(使用 Windows 身份验证)。使用域用户会更容易,但只要 IIS 和 SQL 服务器上的用户名和密码相同,您也可以使用本地用户。

本质上,这意味着应用程序池用户将连接到 SQL 服务器,而不是连接字符串中的特定用户名和密码。

相关内容