Panoramica delle autorizzazioni IIS7 - ApplicationPoolIdentity


356

Di recente abbiamo effettuato l'aggiornamento a IIS7 come server Web principale e ho bisogno di una panoramica in termini di autorizzazioni. In precedenza, quando avevo bisogno di scrivere sul file system, avrei dato all'utente AppPool (servizio di rete) l'accesso alla directory o al file.

In IIS7 vedo, per impostazione predefinita, l'utente AppPool è impostato su ApplicationPoolIdentity. Quindi, quando controllo il task manager, vedo che un account utente chiamato "WebSite.com" esegue il processo IIS ("Website.com" è il nome del sito Web in IIS)

Tuttavia, questo account utente non esiste se provo a utilizzarlo per concedere le autorizzazioni. Quindi, come faccio a determinare a quale utente concedere le autorizzazioni?

Modifica ================================================= =============================

Vedi sotto per il problema nella schermata. Il nostro sito Web (www.silverchip.co.uk) funziona con il nome utente SilverChip.co.uk. Tuttavia, quando aggiungo commissioni, questo utente non esiste!

inserisci qui la descrizione dell'immagine

================================= Vedi immagine AppPool

inserisci qui la descrizione dell'immagine


2
In realtà le informazioni di Microsoft su questo argomento sono ottime identità del pool di applicazioni
DanielV,

Risposte:


680

ApplicationPoolIdentity è in realtà la migliore pratica da utilizzare in IIS7 +. È un account creato in modo dinamico e senza privilegi. Per aggiungere la sicurezza del file system per un particolare pool di applicazioni, consultare "Identità del pool di applicazioni" di IIS.net . La versione rapida:

Se il pool di applicazioni è denominato "DefaultAppPool" (è sufficiente sostituire questo testo di seguito se è denominato in modo diverso)

  1. Apri Esplora risorse
  2. Seleziona un file o una directory.
  3. Fare clic con il tasto destro del mouse sul file e selezionare "Proprietà"
  4. Seleziona la scheda "Sicurezza"
  5. Fai clic sul pulsante "Modifica" e poi su "Aggiungi"
  6. Fai clic sul pulsante "Posizioni" e assicurati di selezionare il computer locale . ( Non il dominio Windows se il server appartiene a uno.)
  7. Immettere " IIS AppPool \ DefaultAppPool " nella casella di testo "Immettere i nomi degli oggetti da selezionare:". (Non dimenticare di cambiare "DefaultAppPool" qui con qualunque nome tu abbia chiamato il tuo pool di applicazioni.)
  8. Fai clic sul pulsante "Controlla nomi" e fai clic su "OK".

11
@Pino: No, non il nome del sito web. Usa il nome del pool di applicazioni . Ogni sito Web è assegnato a un pool di applicazioni. Puoi sapere quale nella finestra di dialogo Impostazioni di base delle proprietà del sito Web (in IIS7).
Jon Adams,

2
@Pino: in tal caso, il ruolo di sicurezza che dovresti usare è IIS AppPool\silverchip.co.uk. Tuttavia, non ho provato punti nei nomi di sicurezza: potresti volerlo cambiare in qualcosa senza punteggiatura.
Jon Adams,

7
Ho seguito le tue istruzioni come hai detto. Ma c'è un trucco. Devi impostare la proprietà enable load user profilesu truenelle impostazioni del pool di applicazioni. E solo dopo questa impostazione sono stato in grado di eseguire l'applicazione. Quindi aggiorna le tue istruzioni e aggiungi il nono punto.
Johnny_D

19
Ricordare di verificare che le impostazioni del server per l'autenticazione anonima utilizzino anche l'identità del pool di applicazioni. Questa soluzione ha funzionato per me non appena sono tornato da IUSR.
BLU

11
Fai attenzione qui! Non è possibile cercare l'utente utilizzando l'interfaccia utente, ma è necessario digitarlo. Controllare il nome è l'unica cosa che puoi fare.
Remco,

88

Ricordare di utilizzare il nome locale del server, non il nome di dominio, durante la risoluzione del nome

IIS AppPool\DefaultAppPool

(solo un promemoria perché questo mi ha fatto inciampare per un po '):inserisci qui la descrizione dell'immagine


Sì, lo dimentico ogni volta, grazie per il promemoria James Toomey!
tjans,

30

Dare accesso all'utente IIS AppPool \ YourAppPoolName potrebbe non essere sufficiente con le configurazioni predefinite di IIS.

Nel mio caso, avevo ancora l'errore HTTP Errore 401.3 - Non autorizzato dopo l'aggiunta dell'utente AppPool ed è stato risolto solo dopo aver aggiunto le autorizzazioni all'utente IUSR .

Ciò è necessario perché, per impostazione predefinita, l'accesso anonimo viene eseguito utilizzando lo IUSR . È possibile impostare un altro utente specifico, il pool di applicazioni o continuare a utilizzare lo IUSR, ma non dimenticare di impostare le autorizzazioni appropriate.

scheda di autenticazione

Riconoscimenti per questa risposta: Errore HTTP 401.3 - Non autorizzato


3
Questo è fondamentale !!! È necessario modificare "Autenticazione anonima" in "Identità pool di applicazioni" per motivi di sicurezza! Sono sicuro che c'è una buona ragione per cui è impostato su IUSR, ma non riesco a pensarne uno solo. Grazie!!!
Dan B,

Questo ha risolto il problema per me. Potrebbe essere perché la mia versione di IIS è 8 su Windows Server 2012 R2
miroslav

2
Questo è un passaggio importante che dovrebbe essere aggiunto alla risposta accettata. Anche il modo più semplice è cambiare la radio box sull'identità del pool di applicazioni
Sourcery

1
Questo era il mio problema! Grazie!!
Sloan Reynolds,

28

Su Windows Server 2008 (r2) non è possibile assegnare un'identità del pool di applicazioni a una cartella tramite Proprietà-> Sicurezza. È possibile farlo tramite un prompt dei comandi di amministrazione utilizzando quanto segue però:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)

1
puoi spiegarlo un po '? Cosa significa (R)? In questo comando inserisci effettivamente le parentesi angolari?
Kate Gregory,

3
Ciao Kate, stavo usando <> per indicare "il tuo nome di apppool qui", ma ho lasciato un nome di apppool legittimo. In Gestione IIS -> Pool di applicazioni dovrai abbinare il nome, spazi inclusi. L'ultimo che ho fatto è stato "IIS AppPool \ ClientName_CompanyName - Intranet". : (R) in questo caso garantisce l'accesso in lettura. Puoi anche usare F (completo), M (modifica), RX (lettura + esecuzione) e W (solo scrittura).
Chris,

9
Puoi effettivamente assegnarlo tramite la scheda Titoli in Proprietà in Windows Server 2008 R2, quindi non dovresti aver bisogno di questa soluzione alternativa. Assicurati di avere entità di sicurezza integrate selezionate per tipi e posizione dell'oggetto.
rism

Questa risposta funziona per me. La risposta selezionata non funziona per me.
Tuyen Nguyen,

3
vedi anche la risposta originale della risposta selezionata di [link] serverfault.com/questions/81165/… Per Windows Server 2008 (o Datacenter edition) devi usare la riga di comando per mettere in sicurezza l'account del pool di app dialogo. Una volta che è lì, puoi gestirlo, modificare i livelli di autorizzazione, per le sottodirectory ecc. Inoltre, considera: "icacls" c: \ yourdirectory "/ t / grant" IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)" OI -ereditarietà ereditaria, eredità contenitore CI.
segrete il

7

Parte A: configurazione del pool di applicazioni

Supponiamo che il pool di applicazioni sia denominato "MyPool" Vai a "Impostazioni avanzate" del pool di applicazioni da Gestione IIS

  1. Scorri verso il basso fino a "Identità". Tentare di modificare il valore farà apparire una finestra di dialogo. Seleziona "Account integrato" e, sotto di esso, seleziona "ApplicationPoolIdentity".

  2. Alcune righe sotto "Identità", dovresti trovare "Carica profilo utente". Questo valore deve essere impostato su "Vero".

Parte B: configurazione del sito Web

  1. Nome del sito Web: SiteName (solo un esempio)
  2. Percorso fisico: C: \ qualunque (solo un esempio)
  3. Connetti come ...: Utente dell'applicazione (autenticazione pass-through) (Le impostazioni sopra riportate sono disponibili in "Impostazioni di base" del sito in Gestione IIS)
  4. Dopo aver configurato le impostazioni di base, cercare la configurazione "Autenticazione" in "IIS" nella console principale del sito. Aprilo Dovresti vedere un'opzione per "Autenticazione anonima". Assicurati che sia abilitato. Quindi fare clic destro e 'Modifica ...' esso. Seleziona "Identità pool di applicazioni".

Parte C: configurazione della cartella

La cartella in questione è C: \ Qualunque cosa

  1. Vai su Proprietà - Condivisione - Condivisione avanzata - Autorizzazioni e seleziona "Condividi questa cartella"
  2. Nella stessa finestra di dialogo, troverai un pulsante "Autorizzazioni". Cliccalo.
  3. Si aprirà una nuova finestra di dialogo. Fai clic su "Aggiungi".
  4. Si aprirà una nuova finestra di dialogo "Seleziona utenti o gruppi". In "Da questa posizione" assicurati che il nome sia lo stesso del tuo computer host locale. Quindi, sotto "Immettere i nomi degli oggetti", digitare "IIS AppPool \ MyPool" e fare clic su "Controlla nomi" e quindi su "OK"
  5. Concedere autorizzazioni di condivisione complete per l'utente "MyPool". Applicalo e chiudi le proprietà della cartella
  6. Apri di nuovo le proprietà della cartella. Questa volta, vai su Sicurezza - Avanzate - Autorizzazione e fai clic su Aggiungi. Ci sarà un'opzione 'Seleziona un preside' in alto, o qualche altra opzione per scegliere un utente. Cliccalo.
  7. Si aprirà nuovamente la finestra di dialogo "Seleziona utenti o gruppi". Ripetere il passaggio 4.
  8. Assegna tutte o tutte le autorizzazioni necessarie all'utente "MyPool".
  9. Seleziona "Sostituisci tutte le autorizzazioni degli oggetti figlio ..." e Applica e chiudi.

Ora dovresti essere in grado di utilizzare il sito Web


Sei il re della giungla! Grazie
tno2007,

5

Migliore risposta di Jon Adams

Ecco come implementarlo per la gente di PowerShell

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

1

Solo per aggiungere confusione, la finestra di dialogo Autorizzazioni effettive (Esplora risorse) non funziona per questi accessi. Ho un sito "Umbo4" che utilizza l'autenticazione pass-through e ho esaminato le autorizzazioni effettive dell'utente nella cartella principale del sito. Il test Controlla nomi ha risolto il nome "IIS AppPool \ Umbo4", ma le autorizzazioni effettive mostrano che l'utente non aveva alcuna autorizzazione sulla cartella (tutte le caselle di controllo erano deselezionate).

Ho quindi escluso esplicitamente questo utente dalla cartella, utilizzando la scheda Sicurezza di Explorer. Ciò ha comportato il fallimento del sito con un errore HTTP 500.19, come previsto. Le autorizzazioni effettive tuttavia sembravano esattamente come prima.


1

Ho risolto tutti i miei problemi con asp.net semplicemente creando un nuovo utente chiamato IUSER con una password e l'ho aggiunto al servizio di rete e ai gruppi di utenti. Quindi crea tutti i tuoi siti e applicazioni virtuali imposta l'autenticazione su IUSER con la sua password .. imposta l'accesso ai file di alto livello per includere IUSER e BAM risolto almeno 3-4 problemi incluso questo ..

Dave

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.