Jakie są wszystkie konta użytkowników dla IIS / ASP.NET i czym się różnią?


282

W systemie Windows Server 2008 z zainstalowanym programem ASP.NET 4.0 jest mnóstwo powiązanych kont użytkowników i nie mogę zrozumieć, które z nich są różne, w jaki sposób się różnią, a które NAPRAWDĘ jest tym, na którym działa moja aplikacja. Oto lista:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • USŁUGA SIECIOWA
  • USŁUGA LOKALNA.

Co jest co?


I używasz systemu Windows Server 2012 z ASP.NET 4.0 lub nowszym?
Kiquenet

Odpowiedzi:


432

To bardzo dobre pytanie i niestety wielu programistów nie zadaje wystarczających pytań na temat bezpieczeństwa IIS / ASP.NET w kontekście bycia programistą i konfigurowania IIS. No i proszę…

Aby objąć wymienione tożsamości:

IIS_IUSRS:

Jest to analogiczne do starej IIS_WPGgrupy IIS6 . Jest to grupa wbudowana ze skonfigurowanymi zabezpieczeniami, dzięki czemu każdy członek tej grupy może działać jako tożsamość puli aplikacji.

IUSR:

To konto jest analogiczne do starego IUSR_<MACHINE_NAME>konta lokalnego, które było domyślnym anonimowym użytkownikiem witryn IIS5 i IIS6 (tj. Skonfigurowanego za pomocą karty Zabezpieczenia katalogu we właściwościach witryny).

Aby uzyskać więcej informacji na temat IIS_IUSRSi IUSRzobacz:

Zrozumienie wbudowanych kont użytkowników i grup w IIS 7

DefaultAppPool:

Jeśli pula aplikacji jest skonfigurowana do uruchamiania przy użyciu funkcji Tożsamość puli aplikacji, wówczas „syntezowane” konto o nazwie IIS AppPool\<pool name>zostanie utworzone w locie w celu użycia jako tożsamość puli. W takim przypadku zostanie utworzone konto syntetyczne o nazwie IIS AppPool\DefaultAppPoolutworzone na czas istnienia puli. Jeśli usuniesz pulę, to konto przestanie istnieć. Przy stosowaniu uprawnień do plików i folderów należy je dodać za pomocą IIS AppPool\<pool name>. Nie zobaczysz również tych kont puli w Menedżerze użytkowników komputerów. Aby uzyskać więcej informacji, zobacz następujące informacje:

Tożsamości puli aplikacji

ASP.NET v4.0: -

Będzie to tożsamość puli aplikacji dla puli aplikacji ASP.NET v4.0. Patrz DefaultAppPoolwyżej

NETWORK SERVICE: -

NETWORK SERVICEKonto jest wbudowany tożsamości wprowadzonym w systemie Windows 2003.NETWORK SERVICE jest niska uprzywilejowane konto, na którym można uruchomić pul aplikacji i stron internetowych. Witryna działająca w puli systemu Windows 2003 może nadal podszywać się pod anonimowe konto witryny (IUSR_ lub cokolwiek skonfigurowanego jako anonimowa tożsamość).

W ASP.NET przed Windows 2008 możesz mieć ASP.NET wykonujący żądania w ramach konta w puli aplikacji (zwykle NETWORK SERVICE). Alternatywnie można skonfigurować program ASP.NET tak, aby personifikował anonimowe konto witryny za pomocą lokalnego <identity impersonate="true" />ustawienia web.configpliku (jeśli to ustawienie jest zablokowane, administrator machine.configpliku musi to zrobić ).

Ustawienie <identity impersonate="true">jest wspólne w dzielonych środowiskach hostingowych, w których używane są współużytkowane pule aplikacji (w połączeniu z częściowymi ustawieniami zaufania, aby zapobiec odwróceniu personifikowanego konta).

W IIS7.x / ASP.NET kontrola personifikacji jest teraz konfigurowana za pomocą funkcji konfiguracji uwierzytelniania witryny. Możesz więc skonfigurować działanie jako tożsamość puli IUSRlub określone niestandardowe anonimowe konto.

LOCAL SERVICE:

LOCAL SERVICEKonto jest wbudowane konto używane przez menedżera sterowania usługami. Ma minimalny zestaw uprawnień na komputerze lokalnym. Ma dość ograniczony zakres zastosowania:

Konto LocalService

LOCAL SYSTEM:

Nie pytałeś o to, ale dodaję dla kompletności. To jest lokalne konto wbudowane. Ma dość szerokie przywileje i zaufanie. Nigdy nie należy konfigurować strony internetowej ani puli aplikacji, aby działały pod tą tożsamością.

Konto LocalSystem

W praktyce:

W praktyce preferowanym podejściem do zabezpieczania strony internetowej (jeśli witryna otrzyma własną pulę aplikacji - która jest domyślna dla nowej witryny w MMC IIS7) jest uruchomienie Application Pool Identity. Oznacza to ustawienie Tożsamości witryny w ustawieniach zaawansowanych puli aplikacji na Application Pool Identity:

wprowadź opis zdjęcia tutaj

Następnie na stronie internetowej należy skonfigurować funkcję uwierzytelniania:

wprowadź opis zdjęcia tutaj

Kliknij prawym przyciskiem myszy i edytuj wpis Anonimowego uwierzytelnienia:

wprowadź opis zdjęcia tutaj

Upewnij się, że wybrano „Tożsamość puli aplikacji” :

wprowadź opis zdjęcia tutaj

Kiedy przystępujesz do stosowania uprawnień do plików i folderów, przyznajesz tożsamości puli aplikacji, niezależnie od wymaganych uprawnień. Na przykład, jeśli przyznajesz tożsamość puli aplikacji dlaASP.NET v4.0 uprawnień puli, możesz to zrobić za pomocą Eksploratora:

wprowadź opis zdjęcia tutaj

Kliknij przycisk „Sprawdź nazwy”:

wprowadź opis zdjęcia tutaj

Lub możesz to zrobić za pomocą ICACLS.EXE narzędzia:

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M)

... lub ... jeśli nazywa się pula aplikacji witryny BobsCatPicBlog wtedy:

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M)

Mam nadzieję, że to pomoże wyjaśnić sytuację.

Aktualizacja:

Właśnie natknąłem się na tę doskonałą odpowiedź z 2009 roku, która zawiera wiele przydatnych informacji, które warto przeczytać:

Różnica między kontem „System lokalny” a kontem „Usługa sieciowa”?


nie zgadzaj się na używanie tego samego użytkownika do anonimowego uwierzytelniania i tożsamości puli aplikacji ... jeśli chcesz dać apppoolidentity zezwolenie na zapis do folderu ....
giammin

1
@giammin - dlaczego nie? O ile nie masz specjalnego przypadku, używanie tożsamości puli aplikacji jest najbezpieczniejszym podejściem pod warunkiem, że każda witryna znajduje się we własnej puli aplikacji. Nienawidzę robić „apelu do władzy”, ale od 15 lat jestem inżynierem hosta hosta i facetem od bezpieczeństwa, takie podejście nie stanowi problemu w IIS7 +.
Kev

@ Kev po prostu nie lubię udzielać anonimowemu użytkownikowi pozwolenia na zapisanie strony
giammin

1
Pule aplikacji mogą być jeszcze bardziej szczegółowe przy użyciu IIS AppPool \ <nazwa_aplikacji>. W powiązanej uwadze, IIS Express będzie działać tylko z IIS AppPool \ ASP.NET v4.0, ponieważ konta wirtualne puli aplikacji nie są tworzone.
kevindaub

@ daub815 - IIS Express działa inaczej, ponieważ miał być uruchamiany przy logowaniu i uruchamianiu systemu Windows i zamykany w razie potrzeby podczas programowania i debugowania. W rzeczywistości nie używa ani nie ma zależności od pul aplikacji lub infrastruktury Full Fat IIS. Zamiarem IIS Express było zapewnienie programistom takiego samego zachowania, smaku i konfiguracji jak w rzeczywistości, ponieważ zabawkowy serwer sieciowy VS był poważnie ograniczony ...
Kev
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.