Quali sono tutti gli account utente per IIS / ASP.NET e in cosa differiscono?


283

In Windows Server 2008 con ASP.NET 4.0 installato c'è un sacco di account utente correlati e non riesco a capire quale sia quale, in che modo differiscono e quale è DAVVERO quello in cui viene eseguita la mia app. Ecco un elenco:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • SERVIZIO DI RETE
  • SERVIZIO LOCALE.

Cosa è cosa?


E utilizzando Windows Server 2012 con ASP.NET 4.0 o versioni successive?
Kiquenet,

Risposte:


433

Questa è un'ottima domanda e purtroppo molti sviluppatori non fanno abbastanza domande sulla sicurezza IIS / ASP.NET nel contesto di essere uno sviluppatore web e configurare IIS. Quindi ecco qui ....

Per coprire le identità elencate:

IIS_IUSRS:

Questo è analogo al vecchio IIS_WPGgruppo IIS6 . È un gruppo integrato con la sicurezza configurata in modo tale che qualsiasi membro di questo gruppo possa fungere da identità del pool di applicazioni.

IUSR:

Questo account è analogo al vecchio IUSR_<MACHINE_NAME>account locale che era l'utente anonimo predefinito per i siti Web IIS5 e IIS6 (ovvero quello configurato tramite la scheda Protezione directory delle proprietà di un sito).

Per ulteriori informazioni IIS_IUSRSe IUSRvedere:

Comprensione degli account utente e di gruppo incorporati in IIS 7

DefaultAppPool:

Se un pool di applicazioni è configurato per essere eseguito utilizzando la funzionalità Identità pool di applicazioni, IIS AppPool\<pool name>verrà creato al volo un account "sintetizzato" che verrà utilizzato come identità del pool. In questo caso ci sarà un account sintetizzato chiamato IIS AppPool\DefaultAppPoolcreato per la durata del pool. Se si elimina il pool, questo account non esisterà più. Quando si applicano autorizzazioni a file e cartelle, è necessario aggiungerli utilizzando IIS AppPool\<pool name>. Inoltre, non vedrai questi account di pool nella Gestione utenti del tuo computer. Vedere di seguito per ulteriori informazioni:

Identità del pool di applicazioni

ASP.NET v4.0: -

Questa sarà l'identità del pool di applicazioni per il pool di applicazioni ASP.NET v4.0. Vedi DefaultAppPoolsopra

NETWORK SERVICE: -

L' NETWORK SERVICEaccount è un'identità integrata introdotta su Windows 2003. NETWORK SERVICEè un account con privilegi limitati con cui è possibile eseguire pool di applicazioni e siti Web. Un sito Web in esecuzione in un pool di Windows 2003 può ancora impersonare l'account anonimo del sito (IUSR_ o qualsiasi altra cosa configurata come identità anonima).

In ASP.NET prima di Windows 2008 è possibile che ASP.NET esegua le richieste con l'account Pool di applicazioni (in genere NETWORK SERVICE). In alternativa, è possibile configurare ASP.NET per impersonare l'account anonimo del sito tramite l' <identity impersonate="true" />impostazione nel web.configfile localmente (se tale impostazione è bloccata, dovrebbe essere eseguita da un amministratore nel machine.configfile).

L'impostazione <identity impersonate="true">è comune negli ambienti di hosting condiviso in cui vengono utilizzati pool di applicazioni condivisi (in combinazione con impostazioni di attendibilità parziali per impedire il riavvolgimento dell'account rappresentato).

In IIS7.x / ASP.NET il controllo della rappresentazione è ora configurato tramite la funzionalità di configurazione Autenticazione di un sito. Quindi è possibile configurare l'esecuzione come identità del pool IUSRo un account anonimo personalizzato specifico.

LOCAL SERVICE:

L' LOCAL SERVICEaccount è un account integrato utilizzato dal gestore controllo servizi. Ha un set minimo di privilegi sul computer locale. Ha un ambito di utilizzo abbastanza limitato:

Account LocalService

LOCAL SYSTEM:

Non hai chiesto questo, ma sto aggiungendo completezza. Questo è un account integrato locale. Ha privilegi e fiducia piuttosto ampi. Non configurare mai un sito Web o un pool di applicazioni per l'esecuzione con questa identità.

Account del sistema locale

In pratica:

In pratica, l'approccio preferito alla protezione di un sito Web (se il sito ottiene il proprio pool di applicazioni, che è l'impostazione predefinita per un nuovo sito nella MMC di IIS7) deve essere eseguito in Application Pool Identity. Questo significa impostare l'identità del sito nelle impostazioni avanzate del suo pool di applicazioni su Application Pool Identity:

inserisci qui la descrizione dell'immagine

Nel sito Web è quindi necessario configurare la funzione di autenticazione:

inserisci qui la descrizione dell'immagine

Fare clic con il tasto destro e modificare la voce di autenticazione anonima:

inserisci qui la descrizione dell'immagine

Assicurati che "Identità pool di applicazioni" sia selezionata:

inserisci qui la descrizione dell'immagine

Quando si applicano le autorizzazioni per file e cartelle, si concede all'identità del pool di applicazioni tutti i diritti richiesti. Ad esempio, se si sta concedendo l'identità del pool di applicazioni per le ASP.NET v4.0autorizzazioni del pool, è possibile farlo tramite Explorer:

inserisci qui la descrizione dell'immagine

Fai clic sul pulsante "Controlla nomi":

inserisci qui la descrizione dell'immagine

Oppure puoi farlo usando l' ICACLS.EXEutilità:

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

... o ... se viene chiamato il pool di applicazioni del tuo sito, BobsCatPicBlogallora:

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

Spero che questo aiuti a chiarire le cose.

Aggiornare:

Ho appena incontrato questa eccellente risposta del 2009 che contiene un sacco di informazioni utili, vale la pena leggere:

La differenza tra l'account "Sistema locale" e l'account "Servizio di rete"?


non acconsentire a utilizzare lo stesso utente per l'autenticazione anonima e l'identità del pool di app ... se devi autorizzare l'apppoolidentity a scrivere una cartella ...
giammin

1
@giammin - perché no? A meno che non si abbia un caso speciale, l'utilizzo delle identità del pool di applicazioni è l'approccio più sicuro a condizione che ogni sito si trovi nel proprio pool di applicazioni. Odio fare "appello all'autorità", ma sono stato un ingegnere host web condiviso e un ragazzo della sicurezza per 15 anni, questo approccio è un gioco da ragazzi su IIS7 +.
Kev

@Kev semplicemente non mi piace dare il permesso di scrittura su un sito all'utente anonimo
giammin

1
I pool di applicazioni possono essere ancora più specifici utilizzando IIS AppPool \ <name_of_apppool>. In una nota correlata, IIS Express funziona solo con IIS AppPool \ ASP.NET v4.0 perché gli account virtuali del pool di app non vengono creati.
kevindaub,

@ daub815 - IIS Express funziona in modo diverso perché doveva essere eseguito con l'accesso e l'avvio di Windows e arrestarsi quando necessario durante lo sviluppo e il debug. In realtà non utilizza o ha alcuna dipendenza dai pool di applicazioni IIS Full Fat o dall'infrastruttura. L'intenzione di IIS Express era quella di fornire agli sviluppatori lo stesso comportamento, sapore e configurazione della cosa reale perché il web server dei giocattoli di VS era fortemente limitato ...
Kev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.