Добавить идентификаторы AppPool IIS 7 в качестве логинов SQL Server

Я запускаю веб-сайт IIS 7 с AppPool интегрированного режима трубопровода. AppPools НЕ запускается под управлением NetworkService и т.д. (По назначению), но использует его собственный AppPool Identitiy (IIS AppPool\MyAppPool).

Это так называемая учетная запись службы или виртуальная учетная запись. (учетная запись пользователя, которая не является полной учетной записью...)

Я хотел бы предоставить разрешения этой учетной записи службы (IIS AppPool\MyAppPool) для подключения к моему SQL Server 2008 Express (работает в режиме смешанного доступа).

Хотя SQL Server может добавлять любую обычную учетную запись пользователя, виртуальную учетную запись IIS AppPool\MyAppPool нельзя добавить к допустимым входам (SQL Server говорит, что учетная запись не может быть найдена).

Есть ли какой-либо трюк, что мне нужно, чтобы заставить виртуальные учетные записи работать? (процесс w3wp.exe выполняется под этим идентификатором в соответствии с taskmgr, но я не могу использовать учетную запись в безопасности NTFS...)

Спасибо за вашу помощь!

Ответ 1

"IIS APPPOOL\AppPoolName" будет работать, но, как упоминалось ранее, оно не является допустимым именем AD, поэтому, когда вы его находите в диалоговом окне "Выбрать пользователя или группу", оно не будет отображаться (на самом деле он найдет его, но он будет считать его действительной системной учетной записью, и он попытается рассматривать его как таковой... который не будет работать и даст вам сообщение об ошибке, которое не будет найдено).

Как мне это удалось:

  • В SQL Server Management Studio найдите папку Безопасность (папка безопасности на том же уровне, что и базы данных, объекты сервера и т.д.), а не папка безопасности в каждой отдельной базе данных )
  • Щелкните правой кнопкой мыши и выберите "Новый вход"
  • В поле Имя входа введите IIS APPPOOL\YourAppPoolName - не нажимайте Поиск
  • Заполните все другие значения, которые вам нравятся (например, тип аутентификации, база данных по умолчанию и т.д.).
  • Нажмите "ОК"

Пока существует имя AppPool, теперь необходимо создать логин.

Ответ 2

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

Ответ 3

В качестве сторонних заметок процессы, использующие виртуальные учетные записи (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.

Способ безопасного доступа не зависит от того, какие учетные записи не имеют привилегий NETWORK SERVICE, но для предоставления дополнительных разрешений специально для "NT Service\MyService" или "IIS AppPool\MyAppPool" и для удаления разрешений для "Пользователи" при необходимости.

Если у кого-то есть более точная или противоречивая информация, пожалуйста, напишите.

Ответ 4

Если вы переходите через машины, вам либо нужно использовать NETWORK SERVICE, LOCAL SYSTEM, учетную запись домена или SQL 2008 R2 (если у вас есть) учетную запись управляемой службы (что является моим предпочтением, если у вас есть такие инфраструктура). Вы не можете использовать учетную запись, которая не отображается в домене Active Directory.

Ответ 5

Это может быть то, что вы ищете...

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

Я бы также посоветовал более долгосрочно рассматривать пользователя с ограниченными правами, то, что вы пытаетесь отлично работать в сценарии с силосом, но вам придется внести изменения, если вы перейдете на другую машину для сервера БД.

Ответ 6

Я понял это с помощью проб и ошибок... реальная щель в доспехах была немного известной в IIS в Configuration Editor для веб-сайта в

Section: system.webServer/security/authentication/windowsAuthentication

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

называется useAppPoolCredentials (по умолчанию установлено значение False). Установите значение True, и жизнь снова станет отличной! Надеюсь, это спасет боль для следующего парня....

enter image description here