Добавление удостоверений IIS 7 AppPool в качестве учетных записей SQL Server - PullRequest
214 голосов
/ 19 декабря 2009

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

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

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

В то время как SQL Server может добавить любую обычную учетную запись пользователя, виртуальная учетная запись IIS AppPool \ MyAppPool не может быть добавлена ​​к действительным входам в систему (SQL Server сообщает, что учетная запись не может быть найдена). Есть ли какая-нибудь хитрость, что мне нужно включить, чтобы виртуальные учетные записи работали? (процесс w3wp.exe выполняется под этим именем в соответствии с taskmgr, но я не могу использовать учетную запись в безопасности NTFS ...)

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

Ответы [ 8 ]

355 голосов
/ 29 декабря 2009

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

Как я заставил это работать:

  1. В SQL Server Management Studio найдите папку Security (папка безопасности на том же уровне, что и папки «Базы данных», «Объекты сервера» и т. Д., А не папку безопасности в каждой отдельной базе данных)
  2. Щелкните правой кнопкой мыши логины и выберите «Новый логин»
  3. В поле Имя для входа введите IIS APPPOOL \ YourAppPoolName - не нажимайте кнопку поиска
  4. Заполните любые другие значения, которые вам нравятся (например, тип аутентификации, база данных по умолчанию и т. Д.)
  5. Нажмите ОК

Пока имя AppPool действительно существует, логин должен быть создан.

56 голосов
/ 01 мая 2013
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];
6 голосов
/ 10 сентября 2010

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

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

6 голосов
/ 19 декабря 2009

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

3 голосов
/ 10 августа 2015

Посмотрите на: 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>'
2 голосов
/ 19 декабря 2009

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

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

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

0 голосов
/ 18 июля 2018

В моем случае проблема заключалась в том, что я начал создавать образец проекта MVC Alloy с нуля при использовании расширения Visual Studio / Episerver, и он работал нормально при выполнении с использованием локальной Visual Studio iis express. Однако по умолчанию он указывает базу данных sql на LocalDB, и когда я развернул сайт на локальном IIS, он начал выдавать ошибки, некоторые из первоначальных ошибок, которые я исправил: 1. Добавление ссылки на локальный сайт в C: / Windows / System32 / drivers / etc / hosts 2. Затем, отредактировав application.config, нашел местоположение файла, щелкнув правой кнопкой мыши IIS express в правом нижнем углу экрана при запуске сайта с использованием Visual Studio и добавив привязку туда для локального URL-адреса iis. 3. Наконец, я застрял с «неспособностью получить доступ к ошибкам базы данных», для которой я создал пустую новую БД в Sql Express и изменил строку подключения в веб-конфигурации, чтобы указать на мою новую БД, а затем в консоли диспетчера пакетов (с использованием Visual Studio) выполнить Episerver DB команды, такие как - 1. initialize-epidatabase 2. update-epidatabase 3. Convert-EPiDatabaseToUtc

0 голосов
/ 25 февраля 2015

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

Section: system.webServer/security/authentication/windowsAuthentication

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

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...