首页 文章

将IIS 7 AppPool标识添加为SQL Server登录

提问于
浏览
211

我正在使用集成管道模式的AppPool运行IIS 7网站 . AppPools不在NetworkService等运行 . 身份(按用途),但使用它自己的AppPool Identitiy(IIS AppPool \ MyAppPool) .

这是一个所谓的服务帐户或虚拟帐户 . (用户帐户,不是完整帐户......)

我想授予此服务帐户(IIS AppPool \ MyAppPool)连接到我的SQL Server 2008 Express(以混合身份验证模式运行)的权限 .

While SQL Server can add any normal user account, the IIS AppPool\MyAppPool virtual account cannot be added to the valid logons (SQL Server says, that the account cannot be found).

有什么技巧,我需要启用什么来使虚拟帐户工作? (根据taskmgr,w3wp.exe进程在此身份下运行,但我无法在NTFS安全性中使用该帐户...)

谢谢你的帮助!

8 回答

  • 1

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

    我是如何让它工作的:

    • 在SQL Server Management Studio中,查找 Security 文件夹(与数据库,服务器对象等文件夹处于同一级别的安全性文件夹...而不是每个单独数据库中的安全性文件夹)

    • 右键单击登录并选择"New Login"

    • 在“登录名”字段中,键入 IIS APPPOOL\YourAppPoolName - 不要单击“搜索”

    • 填写您喜欢的任何其他值(即身份验证类型,默认数据库等)

    • 单击“确定”

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

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

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

  • 0

    作为附注,使用虚拟帐户(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"组(因为它们实际上是组和 not 用户) . 这也是为什么流程在网络上以与NETWORK SERVICE帐户相同的方式在机器上进行身份验证的原因 .

    保护访问权限的方法不依赖于此帐户没有NETWORK SERVICE权限,而是专门授予“NT Service \ MyService”或“IIS AppPool \ MyAppPool”更多权限,并在必要时删除“Users”的权限 .

    如果有人有更准确或矛盾的信息,请发布 .

  • 6

    这可能就是你要找的......

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

    我还建议长期考虑一个有限权限的域用户,你正在尝试在筒仓机器场景中正常工作,但如果你移动到另一台机器的数据库服务器,你将不得不进行更改 .

  • 348

    看看: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>'
    
  • 6

    我通过反复试验弄明白......盔甲中真正的缝隙是IIS中的一个鲜为人知的设置 Configuration Editor 中的网站

    Section: system.webServer/security/authentication/windowsAuthentication

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

    useAppPoolCredentials (默认设置为 False . 设置为 True ,生活再次变得很好!!!希望这可以为下一个人节省痛苦....

    enter image description here

  • 2

    在我的情况下,问题是我开始使用Visual Studio / Episerver扩展从头开始创建一个MVC Alloy示例项目,并且在使用本地Visual Studio iis express执行时它工作正常 . 但是默认情况下它将sql数据库指向LocalDB,当我将站点部署到本地IIS时,它开始给出错误我解决的一些初始错误:1 . 添加本地站点url绑定到C:/ Windows / System32 / drivers / etc / hosts 2.然后通过编辑application.config,在使用Visual Studio运行站点时右键单击屏幕右下角的IIS express,找到文件位置,并在那里为本地iis url添加绑定 . 3.最后我遇到了“无法访问数据库错误”,我在Sql express中创建了一个空白的新数据库,并在web config中更改了连接字符串以指向我的新数据库,然后在包管理器控制台中(使用Visual Studio)执行EpiserverDB命令如 - 1. initialize-epidatabase 2. update-epidatabase 3. Convert-EPiDatabaseToUtc

相关问题