Додайте ідентифікатори IIS 7 AppPool як логотипи SQL Server


233

Я запускаю веб-сайт 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 ...)

Спасибі за вашу допомогу!

Відповіді:


380

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

Як я змусив його працювати:

  1. У студії управління SQL Server шукайте папку Безпека (папка безпеки на тому самому рівні, як папки Бази даних, Об'єкти сервера тощо), а не папка безпеки в кожній окремій базі даних
  2. Клацніть правою кнопкою миші вхід та виберіть "Новий вхід"
  3. У полі Ім'я для входу введіть IIS APPPOOL \ YourAppPoolName - не натискайте на пошук
  4. Заповніть будь-які інші значення, які вам подобаються (тобто тип аутентифікації, база даних за замовчуванням тощо)
  5. Натисніть кнопку ОК

Поки ім’я AppPool насправді існує, тепер потрібно створити логін.


4
Вибачте, що воскресив стару публікацію, але хтось знає, чи може це мати якісь наслідки для безпеки в живому середовищі?
dooburt

34
дивовижно корисний, але вражаючий (і приємно) Microsoftian.
Еван Нагле

16
Ого. "Не натискайте на пошук" на кроці 3, схоже, має значення (?)
Jedidja

16
Невже це не вдасться, якщо екземпляр SQL-сервера знаходиться на іншому сервері? Наприклад - як SQL1відомо про локальне / віртуальне IIS AppPool\MyAppPoolввімкнення WEB1?
one.beat.consumer

3
Чи є рішення, якщо ваш веб-сервер і SQL сервер працюють на різних машинах !! ?? Я можу знайти логін, але я не можу створити новий вхід у SQL. (Якщо я не зроблю імена перевірки ... це все ще не працює)
Dan B

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

1
Приємно - хоча прийнята відповідь правильна - мені вдалося потрапити в ситуацію, коли Management Studio не працювала, тому це сире рішення TSQL було те, що мені потрібно.
Ендрю Паттерсон

4
Зверніть увагу на ноубів, як я: переконайтеся, що виконайте цей запит у базі даних, до якої ви хочете отримати доступ із пулом програм IIS, друге твердження знаходиться на рівні бази даних. Вам може знадобитися зробити користувача членом певних ролей бази даних та надати йому дозволи на схеми (схеми), такі як dbo.
MarioDS

Після того як я виявив, що неможливо додати логіни IIS APPPOOL через GUI SSMS, я запустив ваш сценарій. ДЯКУЮ! ВИКОРИСТАНО, щоб це було можливо - не в SSMS 18! Я думаю, це зараз "особливість"
MC9000

6

Якщо ви користуєтесь машинами, вам потрібно буде використовувати мережну службу, локальну систему, обліковий запис домену або обліковий запис керованого сервісу SQL 2008 R2 (якщо він у вас є) (що є моїм перевагою, якщо у вас була така інфраструктура) . Ви не можете використовувати обліковий запис, який не відображається в домені Active Directory.


6

Як бічна примітка, процеси, які використовують віртуальні акаунти (NT Service \ MyService та IIS AppPool \ MyAppPool), як і раніше, ведуться в обліковому записі "NETWORK SERVICE", як підказує ця публікація http://www.adopenstatic.com/cs/blogs/ken/ архів / 2008/01/29 / 15759.aspx . Різниця полягає лише в тому, що ці процеси є членами груп "NT Service \ MyService" або "IIS AppPool \ MyAppPool" (оскільки це фактично групи, а не користувачі). Це також причина того, що процеси аутентифікуються в мережі як на машині так само, як це робить обліковий запис NETWORK SERVICE.

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

Якщо хтось має більш точну чи суперечливу інформацію, будь ласка, опублікуйте.



2

Це може бути те, що ви шукаєте ...

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

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


0

Я зрозумів це шляхом спроб і помилок ... справжній тріск в броні був мало відомим налаштуванням в IIS Configuration Editorна веб-сайті в

Section: system.webServer/security/authentication/windowsAuthentication

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

зателефонували useAppPoolCredentials(що встановлено Falseза замовчуванням. Встановіть це, Trueі життя знову стане чудовим !!! Сподіваюся, що це рятує біль для наступного хлопця ....

введіть тут опис зображення


Я дотримувався того самого процесу, але проблему не вдалося вирішити. Ви, мабуть, теж зробили щось інше, можете поділитися?
RSB

@RSB - ти дотримувався всіх інших кроків? ви налаштували appPools і дали їм дозволи для файлів, де розміщений ваш веб-сайт? Ви додали ім'я сервера як логін із правами на SQL Server? Ви застосували додаток appPool на своєму SQL сервері з дозволами? Ви змінили IIS для використання WindowsAuthentication? Які помилки ви отримуєте? Це працює у вашому середовищі розробників, а не у виробництві?
Дан Б

Я налаштував appPool, але як надати їм дозвіл на файли, де розміщений веб-сайт? Як додати ім'я сервера як логін із правами на SQL-сервер? Я також додав appPool до SQL Server з дозволами. Як змінити IIS для використання WindowsAuthentocation.Той працює в моєму середовищі розробників, коли IIS і sql-сервер знаходяться на одній машині, але він дає помилку-System.ComponentModel.Win32Exception: Помилка доступу заперечується, коли сервери IIS і Sql знаходяться на іншій машині. Будь ласка, підкажіть.
RSB

якщо ви дасте мені свій електронний лист, я надішлю вам документ, який я зробив про те, як це все зробити .... є занадто mucj, щоб додати його сюди ...
Dan B

@RSB Я надіслав вам електронний лист. Щасти.
Дан Б

0

У моєму випадку проблема полягала в тому, що я почав створювати зразок проекту MVC Alloy з нуля з використанням розширення Visual Studio / Episerver, і він спрацював чудово, коли виконувався за допомогою локальної Visual studio iis express. Однак за замовчуванням він вказує базу даних sql на LocalDB, і коли я розгорнув сайт на локальному IIS, він почав видавати помилки деякі початкові помилки, які я усунув: 1.Додаючи прив'язку URL-адреси локального сайту до C: / Windows / System32 / драйвери / і т.д. / хости 2. Потім, відредагувавши application.config, знайшли місце розташування файлу, натиснувши правою кнопкою миші на IIS express у правому куті екрана під час запуску сайту за допомогою Visual studio та додавши там прив'язку для локальної URL-адреси iis. 3. Нарешті я застряг у "не в змозі отримати доступ до помилок бази даних"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.