关于iis 7:将IIS7应用程序池标识添加为SQL Server登录

Add IIS 7 AppPool Identities as SQL Server Logons

我正在运行一个带有集成管道模式应用程序池的IIS7网站。AppPools不在NetworkService等下运行。标识(按用途),但使用它自己的AppPool标识(IIS AppPoolMyAppPool)。

这是所谓的服务帐户或虚拟帐户。(不是完整帐户的用户帐户…)

我想授予此服务帐户(IIS AppPoolMyAppPool)连接到我的SQL Server 2008 Express(在混合身份验证中运行)的权限。模式)。

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

是否有任何技巧,我需要启用什么才能使虚拟帐户工作?(根据taskmgr,w3wp.exe进程在此标识下运行,但我也不能在ntfs安全性中使用该帐户…)

谢谢你的帮助!


"IIS AppPoolAppPoolName"可以使用,但如前所述,它似乎不是有效的广告名称,因此当您在"选择用户或组"对话框中搜索它时,它不会显示(实际上,它会找到它,但它会认为它是一个实际的系统帐户,它会尝试将其视为……这将不起作用,并会给您找不到有关它的错误消息)。

我是如何让它发挥作用的:

  • 在SQL Server Management Studio中,查找安全文件夹(与数据库、服务器对象等文件夹处于同一级别的安全文件夹…而不是每个数据库中的安全文件夹)
  • 右键单击"登录",然后选择"新建登录"
  • 在"登录名"字段中,键入IIS AppPoolYourAppPoolName-不要单击"搜索"。
  • 填充您喜欢的任何其他值(即身份验证类型、默认数据库等)。
  • 单击确定
  • 只要AppPool名称实际存在,现在就应该创建登录。


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


    作为旁注,使用虚拟帐户(NT servicemyservice和IIS apppoolmyapppool)的进程仍在"网络服务"帐户下运行,正如本文建议的那样http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx。唯一的区别是,这些进程是"NT servicemyservice"或"IIS AppPoolmyAppPool"组的成员(因为它们实际上是组,而不是用户)。这也是进程以网络服务帐户的方式在网络上进行身份验证的原因。

    安全访问的方法不是依赖于没有网络服务特权的帐户,而是专门授予"NT servicemyservice"或"IIS AppPoolmyAppPool"更多权限,并在必要时删除"用户"的权限。

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


    如果您正在使用不同的机器,您要么需要使用网络服务、本地系统、域帐户,要么使用SQL 2008 R2(如果您有)托管服务帐户(如果您有这样的基础结构,这是我的首选)。不能使用对Active Directory域不可见的帐户。


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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>'

    这可能是你要找的…

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

    我还建议考虑更长期的有限权限域用户,您在思洛机器方案中所尝试的工作正常,但如果您移到另一台用于DB服务器的机器上,则必须进行更改。


    在我的例子中,问题是我开始使用Visual Studio/Episerver扩展从头开始创建一个MVC合金示例项目,当使用本地Visual Studio IIS Express执行时,它工作得很好。但是,默认情况下,它将SQL数据库指向localdb,当我将该站点部署到本地IIS时,它开始给出错误,我通过以下方式解决了一些初始错误:1.添加本地站点URL绑定到c:/windows/system32/drivers/etc/hosts2。然后,通过编辑application.config,在使用Visual Studio运行站点时,右键单击屏幕右角的IIS Express找到了文件位置,并为本地IIS URL添加了绑定。三。最后,我陷入了"无法访问数据库错误"的困境,为此,我在SQL Express中创建了一个空白的新数据库,并在web config中更改了连接字符串以指向我的新数据库,然后在包管理器控制台(使用Visual Studio)中执行了类似于-1。初始化epidatabase2。更新epidatabase三。转换epidatabasetoutc


    我通过反复试验才知道…真正的盔甲缺口是一个鲜为人知的设置在iis中的Configuration Editor为网站在

    Section: system.webServer/security/authentication/windowsAuthentication

    From: ApplicationHost.config

    称为useAppPoolCredentials(默认设置为False)。把这个放到True上,生活就又变得伟大了!!!!希望这能为下一个男人减轻痛苦…

    enter image description here