如果我错过了一个明显的答案,我已经提前彻底搜索了道歉。 遵循以下链接中的建议,解决方案无效。该解决方案也不表示它是否适用于在不同计算机上运行IIS和SQL Server的生产Web服务器。 Add IIS 7 AppPool Identities as SQL Server Logons
下面的Microsoft链接未提供创建SQL Server Windows登录的特定语法: http://www.iis.net/learn/manage/configuring-security/application-pool-identities
我们的目标是在我们的生产环境中运行IIS 7.5的Server 2008 R2计算机上公开部署ASP.NET 4.0 Web应用程序。根据最佳实践,我们在同一域中的单独计算机上运行SQL Server 2008。我们希望在没有模拟的情况下使用SQL Sever Windows身份验证,以允许IIS框和SQL Server上的ASP.NET应用程序进行通信。目前,SQL Server登录连接字符串允许.NET应用程序连接到SQL Server,但我们希望将连接字符串升级为Windows SQL Server登录以更安全。
在IIS 7.5上,我们为网站配置了一个应用程序池。 在“应用程序池高级”设置下,“内置帐户”已尝试同时使用ApplicationPoolIdentity和网络服务。据说最佳做法是使用ApplicationPoolIdentity来实现更严格的安全性。
失败的步骤是创建SQL Server Windows登录。
我们按照第一个链接执行了以下步骤:
在SQL Server Management Studio中,查找Security文件夹(与数据库,服务器对象等文件夹处于同一级别的安全性文件夹...而不是每个数据库中的安全性文件夹)
右键单击登录并选择“新登录”
在登录名字段中,输入IIS APPPOOL\YourAppPoolName
- 不要点击搜索
填写您喜欢的任何其他值(即身份验证类型,默认数据库等)
点击确定
请告诉我IIS 7.5和SQL Server在单独的框中,我需要使用什么语法来创建SQL Server窗口登录?
我尝试过:“mydomain\machine1$\IIS APPPOOL\MyAppPoolName
”多次没有成功
错误消息是:“Windows NT User or group IIS APPPOOL\MyAppPoolName can not be found
”
我使用网络服务器的网络名称代替machine1(以及实际的应用程序池名称和域名)。
提前感谢您的帮助。
PS如果微软提供了一个如何完成这个常见任务和简单任务的分步教程,那就太棒了。你在StackOverFlow上的答案将帮助很多人:)
答案 0 :(得分:7)
您的问题的一个解决方案是为应用程序池设置一个单独的(非内置)帐户。您可以为该帐户授予最小权限,并授予对SQL Server的访问权限。
通过这种方式,您可以使用易于设置但仍能严格控制安全性的域帐户。
答案 1 :(得分:4)
我知道这个问题已经过时了,但是直到我开始工作,我才愿意分享我的经验来回答这个问题。
您遵循的步骤与我合作,除了:
3-您需要添加到sql server登录的帐户是mydomain\machine1$
not mydomain\machine1$\IIS APPPOOL\MyAppPoolName
4-将常规设置页面中的所有内容保留为默认值(实际上,您需要确保使用Windows身份验证)。
然后转到用户映射|选择您希望应用程序访问的数据库授予它你想要的任何权限。例如,给它db_datareader& db_datawriter权限。
5-单击“确定”保存。
但请注意,使用同一台计算机上的虚拟帐户的所有应用程序都可以访问此数据库。