Dodaj IIS 7 AppPool Identities jako SQL Server Logons

233

Prowadzę witrynę internetową IIS 7 z AppPool trybu zintegrowanego rurociągu . AppPools NIE działa w ramach NetworkService itp. Tożsamość (według celu), ale używa własnej AppPool Identitiy (IIS AppPool \ MyAppPool).

Jest to tak zwane konto usługi lub konto wirtualne. (konto użytkownika, które nie jest pełnym kontem ...)

Chciałbym nadać temu kontu usługi uprawnienia (IIS AppPool \ MyAppPool) do połączenia z moim SQL Server 2008 Express (działającym w trybie mieszanego uwierzytelniania).

Podczas gdy SQL Server może dodać dowolne normalne konto użytkownika, konta wirtualnego IIS AppPool \ MyAppPool nie można dodać do prawidłowych danych logowania (SQL Server mówi, że konta nie można znaleźć).

Czy jest jakaś sztuczka, coś, co muszę włączyć, aby konta wirtualne działały? (proces w3wp.exe działa pod tą tożsamością zgodnie z taskmgr, ale nie mogę używać konta w zabezpieczeniach NTFS ...)

Dzięki za pomoc!

Max
źródło

Odpowiedzi:

380

„IIS APPPOOL \ AppPoolName” będzie działać, ale jak wspomniano wcześniej, nie wydaje się być prawidłową nazwą AD, więc podczas wyszukiwania w oknie dialogowym „Wybierz użytkownika lub grupę” nie pojawi się (w rzeczywistości , znajdzie to, ale pomyśli, że jest to rzeczywiste konto systemowe i spróbuje traktować to jako takie ... co nie będzie działać i wyświetli komunikat o błędzie informujący o tym, że nie został odnaleziony).

Jak do tego doszło, to:

  1. W SQL Server Management Studio poszukaj folderu Zabezpieczenia (folder zabezpieczeń na tym samym poziomie co foldery Bazy danych, Obiekty serwera itp. ... nie folder zabezpieczeń w każdej bazie danych)
  2. Kliknij loginy prawym przyciskiem myszy i wybierz „Nowe logowanie”
  3. W polu Nazwa logowania wpisz IIS APPPOOL \ YourAppPoolName - nie klikaj wyszukiwania
  4. Podaj dowolne inne wartości (np. Typ uwierzytelnienia, domyślna baza danych itp.)
  5. Kliknij OK

Tak długo, jak faktycznie istnieje nazwa AppPool, należy teraz utworzyć login.

dp.
źródło
4
Przepraszamy za wskrzeszenie starego postu, ale czy ktoś wie, czy robienie tego ma wpływ na bezpieczeństwo w środowisku na żywo?
dooburt
34
niezwykle pomocny, ale oszałamiający (i gówniany) Microsoft.
Evan Nagle
16
Łał. „nie klikaj wyszukiwania” w kroku 3 wydaje się mieć znaczenie (?)
Jedidja
16
Czy to nie zawiedzie, jeśli instancja serwera SQL znajduje się na innym serwerze? Na przykład - w jaki sposób SQL1wiedzą o lokalnych / wirtualnych IIS AppPool\MyAppPoolna WEB1?
one.beat.consumer
3
Czy jest jakieś rozwiązanie, jeśli Twój serwer WWW i SQL Server znajdują się na różnych komputerach !! ?? Mogę znaleźć login, ale nie mogę utworzyć nowego logowania SQL. (Jeśli nie sprawdzę nazw ... nadal nie działa)
Dan B
63
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];
Ryan Prechel
źródło
1
Fajnie - choć zaakceptowana odpowiedź jest poprawna - udało mi się znaleźć w sytuacji, gdy Management Studio nie działało, więc to surowe rozwiązanie TSQL było tym, czego potrzebowałem.
Andrew Patterson
4
Uwaga do noobów takich jak ja: pamiętaj, aby wykonać zapytanie w bazie danych, do której chcesz uzyskać dostęp za pomocą puli aplikacji IIS, druga instrukcja jest na poziomie bazy danych. Może być konieczne uczynienie użytkownika członkiem niektórych ról bazy danych i przyznanie mu uprawnień do schematów, takich jak dbo.
MarioDS
Po odkryciu, że nie można dodawać loginów IIS APPPOOL poprzez GUI SSMS, uruchomiłem twój skrypt. DZIĘKI! UŻYWANE jest możliwe - nie w SSMS 18! Przypuszczam, że jest to teraz „funkcja”
MC9000,
6

Jeśli korzystasz z różnych komputerów, musisz albo korzystać z USŁUGI SIECIOWEJ, SYSTEMU LOKALNEGO, konta domeny lub SQL 2008 R2 (jeśli go posiadasz) zarządzanego konta usługowego (co jest moją preferencją, jeśli masz taką infrastrukturę) . Nie możesz używać konta, które nie jest widoczne dla domeny Active Directory.

Dave Markle
źródło
6

Na marginesie procesy korzystające z kont wirtualnych (NT Service \ MyService i IIS AppPool \ MyAppPool) nadal działają na koncie „NETWORK SERVICE”, jak sugeruje ten post http://www.adopenstatic.com/cs/blogs/ken/ archiwum / 2008/01/29 / 15759.aspx . Jedyną różnicą jest to, że procesy te są członkami grup „NT Service \ MyService” lub „IIS AppPool \ MyAppPool” (ponieważ są to właściwie grupy, a nie użytkownicy). Jest to również powód, dla którego procesy uwierzytelniają się w sieci, podobnie jak komputer, w taki sam sposób, jak konto NETWORK SERVICE.

Sposobem na bezpieczny dostęp nie jest poleganie na tych kontach nieposiadających uprawnień USŁUGI SIECIOWEJ, ale udzielanie większej liczby uprawnień w szczególności do usługi „NT Service \ MyService” lub „IIS AppPool \ MyAppPool” oraz w razie potrzeby usunięcie uprawnień dla „użytkowników”.

Jeśli ktoś ma bardziej dokładne lub sprzeczne informacje, prosimy o opublikowanie.

Steven
źródło
2

To może być to, czego szukasz ...

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

Radziłbym również w dłuższej perspektywie rozważyć rozważenie użytkownika domeny o ograniczonych prawach. To, co próbujesz, działa dobrze w scenariuszu z silosem, ale będziesz musiał wprowadzić zmiany, jeśli przeprowadzisz się na inną maszynę dla serwera DB.

keithwarren7
źródło
0

Zrozumiałem to metodą prób i błędów ... prawdziwą szczeliną w zbroi było mało znane ustawienie w IIS Configuration Editorna stronie internetowej w

Section: system.webServer/security/authentication/windowsAuthentication

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

o nazwie useAppPoolCredentials(która jest ustawiona Falsedomyślnie. Ustaw to, Truea życie znów stanie się wspaniałe !!! Mam nadzieję, że to oszczędza bólu następnemu facetowi ...

wprowadź opis zdjęcia tutaj

Dan B.
źródło
Postępowałem zgodnie z tym samym procesem, ale problem nie został rozwiązany. Musiałeś też zrobić coś innego, czy możesz się podzielić?
RSB
@RSB - czy wykonałeś wszystkie pozostałe kroki? czy skonfigurowałeś appPools i dałeś im uprawnienia do plików, w których znajduje się Twoja strona internetowa? Czy dodałeś nazwę serwera jako login z uprawnieniami do SQL Server? Czy zastosowałeś appPool na swoim serwerze SQL z uprawnieniami? Czy zmodyfikowałeś usługi IIS, aby korzystać z uwierzytelniania systemu Windows? Jakie masz błędy? Czy działa w twoim środowisku deweloperskim, a nie produkcyjnym?
Dan B
Skonfigurowałem appPool, ale jak dać im uprawnienia do plików, w których znajduje się strona internetowa? Jak dodać nazwę serwera jako login z uprawnieniami do serwera SQL? Dodałem także appPool do SQL Server z uprawnieniami. Jak zmodyfikować IIS, aby korzystał z WindowsAuthentocation. Działa w moim środowisku deweloperskim, gdy IIS i serwer SQL znajdują się na tym samym komputerze, ale daje błąd System.ComponentModel.Win32Exception: Błąd odmowy dostępu, gdy IIS i serwer Sql znajdują się na innym komputerze. Proszę zasugeruj.
RSB
jeśli podasz mi swój e-mail, wyślę ci dokument, w jaki sposób to wszystko zrobić ... jest zbyt mucj, aby dodać go tutaj ...
Dan B
@RSB Wysłałem ci e-mail. Powodzenia.
Dan B
0

W moim przypadku problem polegał na tym, że zacząłem od zera tworzyć przykładowy projekt stopu MVC przy użyciu rozszerzenia Visual Studio / Episerver i działał on dobrze, gdy został wykonany przy użyciu lokalnego programu Visual Studio iis express. Jednak domyślnie wskazuje bazę danych SQL na LocalDB, a kiedy wdrożyłem witrynę do lokalnego IIS, zaczął dawać błędy niektóre z początkowych błędów, które rozwiązałem: 1. dodając powiązanie adresu URL lokalnego serwisu do C: / Windows / System32 / drivers / etc / hosts 2. Następnie edytując plik application.config znalazł lokalizację pliku, klikając prawym przyciskiem myszy IIS express w prawym dolnym rogu ekranu podczas uruchamiania witryny za pomocą Visual Studio i dodając tam powiązanie z lokalnym adresem URL iis. 3. W końcu utknąłem z „nie można uzyskać dostępu do błędów bazy danych”

arokanika
źródło