将iis7 appool标识添加为SQL Server登录

我正在运行一个带有综合管道模式的apppoool的iis7网站。 AppPools不能在NetworkService下运行。但是使用它自己的appppool标识(IIS AppPool\MyAppPool)

所谓的业务帐号或虚拟帐号。 (一个用户账号,不是完整账号…)

我想给这个服务帐户(IIS AppPool\MyAppPool)权限连接到我的SQL Server 2008 Express(运行在混合认证。模式)。

虽然SQL Server可以添加任何普通用户帐户,但IIS AppPool\MyAppPool虚拟帐户不能添加到有效登录(SQL Server表示无法找到该帐户)。

有什么技巧,什么我需要启用使虚拟帐户工作? (根据任务管理,w3wp.exe进程在此身份下运行,但我也不能在NTFS安全中使用该帐户…

谢谢你的帮助!

166478 次浏览

这可能就是你想要的……

http://technet.microsoft.com/en-us/library/cc730708%28WS.10%29.aspx

我还建议从长远来看,考虑一个权限有限的域用户,你正在尝试的在筒仓机器场景中工作得很好,但如果你转移到另一台机器上的DB服务器,你将不得不做出改变。

如果您要跨机器,则需要使用NETWORK SERVICE、LOCAL SYSTEM、域帐户或SQL 2008 R2(如果您有的话)托管服务帐户(如果您有这样的基础设施,这是我的首选)。不能使用对Active Directory域不可见的帐户。

“IIS APPPOOL\AppPoolName”将工作,但如前所述,它似乎不是一个有效的AD名称,所以当你在“选择用户或组”对话框中搜索它时,它不会显示(实际上,它会找到它,但它会认为它是一个实际的系统帐户,它会尝试这样对待它……这将不起作用,并将为您提供关于未找到它的错误消息)。

我是怎么做到的:

  1. 在SQL Server Management Studio中,寻找安全文件夹(与数据库、服务器对象等文件夹处于同一级别的安全文件夹…而不是每个单独数据库中的安全文件夹)
  2. 右键点击登录,选择“新登录”
  3. 在登录名字段中,键入IIS APPPOOL \ YourAppPoolName -不要单击搜索
  4. 填充您喜欢的任何其他值(即身份验证类型、默认数据库等)。
  5. 单击OK

只要AppPool名称确实存在,现在就应该创建登录。

作为旁注,使用虚拟帐户(NT Service\MyService和IIS AppPool\MyAppPool)的进程仍然在“NETWORK Service”帐户下运行,正如本文所建议的http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx。唯一的区别是这些进程是"NT Service\MyService"或"IIS AppPool\MyAppPool"组的成员(因为这些实际上是组和用户)。这也是为什么进程以与network SERVICE帐户相同的方式在网络上作为机器进行身份验证的原因。

安全访问的方法不是依赖于这个帐户没有网络服务特权,而是授予更多的权限,特别是“NT服务\MyService”或“IIS AppPool\MyAppPool”,并在必要时删除“用户”的权限。

如果任何人有更准确或矛盾的信息,请张贴。

CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];

我是通过反复试验才明白的。真正的漏洞是一个鲜为人知的设置在IIS的Configuration Editor为网站在

Section: system.webServer/security/authentication/windowsAuthentication

From: ApplicationHost.config <locationpath='ServerName/SiteName' />

调用useAppPoolCredentials(默认设置为False。将此设置为True,生活将再次变得伟大!!希望这能让下一个男人免受痛苦....

enter image description here

看:http://www.iis.net/learn/manage/configuring-security/application-pool-identities

USE master
GO
sp_grantlogin 'IIS APPPOOL\<AppPoolName>'


USE <yourdb>
GO
sp_grantdbaccess 'IIS APPPOOL\<AppPoolName>', '<AppPoolName>'
sp_addrolemember 'aspnet_Membership_FullAccess', '<AppPoolName>'
sp_addrolemember 'aspnet_Roles_FullAccess', '<AppPoolName>'
在我的情况下,问题是我开始创建一个MVC合金样本项目从头开始使用Visual Studio/Episerver扩展,它在使用本地Visual Studio iis express执行时工作得很好。 但是,默认情况下,它将sql数据库指向LocalDB,当我将站点部署到本地IIS时,它开始给出一些我解决的初始错误: 1.添加本地站点url绑定到C:/Windows/System32/drivers/etc/hosts 2. 然后通过编辑应用程序。当使用Visual studio运行站点时,config通过右键单击屏幕右下角的IIS express找到了文件位置,并为本地IIS url添加了绑定。 3.最后,我被“无法访问数据库错误”所困,为此我在Sql express中创建了一个空白的新DB,并在web配置中更改连接字符串以指向我的新DB,然后在包管理器控制台(使用Visual Studio)执行Episerver DB命令,如- 1. initialize-epidatabase 2. update-epidatabase 3.Convert-EPiDatabaseToUtc < / p >

你可以这样解,

  1. 打开“申请池”,
  2. 您应该右键单击已选择的应用程序池。然后选择 李“先进Settings"。< / >
  3. 单击“标识”选项卡上的三个点,然后选择“localsystem”;从“内置帐户”字段;

如果你这样做,你不需要在数据库中创建一个用户。

对于ApplicationPoolIdentity,在MSSQL中添加一个登录/用户作为IIS_IUSRS,它对应于默认池。