分配给AD组的ASP.NET身份以访问远程SQL Server

我有一台名为WEBSERV的服务器(Window Server 2008 R2 Standard)上运行的ASP.NET 4.0(IIS 7.5)应用程序和另一台服务器上名为DATASERV的SQL Server(2008)数据库。 SQL Server具有login设置作为我的数据库用户具有读取权限。 我是与SQL Serverlogin关联的AD组的所有者,名为READGROUP,我使用集成安全性来访问数据库,我知道这是Windows身份validation。 ASP.NET应用程序的应用程序池标识设置为NetworkService。 匿名身份validation已启用。 ASP.NET模拟,基本身份validation,摘要式身份validation,表单身份validation,Windows身份validation全部禁用。 如果需要,我可以启用这些。 对于我来说,让人类用户读取数据库的访问权限,我将它们添加到READGROUP。

我的目标是添加一个非人类用户到READGROUP,以便ASP.NET应用程序可以查询数据库并在HTML表格中显示数据。 我的代码工作在我的开发盒,但它的操作与我的凭据,有权访问的数据,因为我是READGROUP的一部分。 当应用程序在WEBSERV上运行时,其Windows标识显示为“NT AUTHORITY \ Network Service”。

我不想像这样在WEBSERV上存储我的密码。 我必须每90天更换一次,这是一个重大的难题,而IT人员则强烈反对。

有没有办法让我的应用程序添加到我的AD组WEBSERV + ASP.NET的特定用户?

您需要将WEBSERV的计算机帐户添加为SQLlogin名。

你可以从T-SQL中做到这一点:

CREATE LOGIN [WEBSERV$] FROM WINDOWS; 

或者通过YOURDOMAIN\WEBSERV$创buildlogin名来从GUI访问,但在searchAD帐户时在search对话框中inputYOURDOMAIN\WEBSERV$

在此之后,您可以像往常一样将用户映射到数据库。

可能需要创build一个AD用户作为应用程序池标识的服务帐户,给它一个非常长的密码,并在帐户上设置标志“密码永不过期”。 授予对计算机帐户的访问权限可以说更加安全,但这取决于您的IT部门对服务帐户的密码策略的灵活程度。

在任何情况下,使用自己的AD帐户作为服务帐户是一个坏主意。