Come assegnare le autorizzazioni all'account ApplicationPoolIdentity


263

In IIS 7 su Windows Server 2008, i pool di applicazioni possono essere eseguiti come account "ApplicationPoolIdentity" anziché come account NetworkService.

Come posso assegnare le autorizzazioni a questo account "ApplicationPoolIdentity". Non viene visualizzato come utente locale sulla macchina. Non appare come un gruppo da nessuna parte. Nulla a distanza come appare da nessuna parte. Quando cerco utenti locali, gruppi e account integrati, non viene visualizzato nell'elenco né viene visualizzato alcun elemento simile nell'elenco. Cosa sta succedendo?

Non sono l'unico con questo problema: vedi un esempio di Problemi con ApplicationPoolIdentity in IIS 7.5 + Windows 7 .


"Questo è purtroppo una limitazione del selettore oggetti su Windows Server 2008 / Windows Vista - poiché molte persone l'hanno già scoperto, è ancora possibile manipolare l'ACL per l'identità del pool di app utilizzando strumenti da riga di comando come icacls ."

Risposte:


289

Aggiornamento: la domanda originale era per Windows Server 2008, ma la soluzione è più semplice per Windows Server 2008 R2 e Windows Server 2012 (e Windows 7 e 8). È possibile aggiungere l'utente tramite l'interfaccia utente NTFS digitandolo direttamente. Il nome è nel formato di IIS APPPOOL \ {nome pool di app}. Ad esempio: IIS APPPOOL \ DefaultAppPool.

IIS APPPOOL\{app pool name}

Nota: per i commenti di seguito, ci sono due cose da tenere presente:

  • Inserisci la stringa direttamente nel "Seleziona utente o gruppo" e non nel campo di ricerca.
  • In un ambiente di dominio devi prima impostare la Posizione sul tuo computer locale.

Riferimento all'articolo di Microsoft Documenti: Identità pool di applicazioni> Protezione delle risorse

Risposta originale: (per Windows Server 2008) Questa è una grande funzionalità, ma come hai detto non è ancora completamente implementata. Puoi aggiungere l'identità del pool di app dal prompt dei comandi con qualcosa come icacls, quindi puoi gestirlo dalla GUI. Ad esempio, esegui qualcosa del genere dal prompt dei comandi:

icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)

Quindi, in Esplora risorse, vai alla cartella wwwroot e modifica le autorizzazioni di sicurezza. Vedrai quello che sembra un gruppo (l'icona del gruppo) chiamato DefaultAppPool. Ora puoi modificare le autorizzazioni.

Tuttavia, non è necessario utilizzarlo affatto. È un bonus che puoi usare se vuoi. Puoi utilizzare il vecchio modo di creare un utente personalizzato per pool di app e assegnare l'utente personalizzato al disco. Questo ha il pieno supporto dell'interfaccia utente.

Questo metodo di iniezione SID è utile perché ti consente di utilizzare un singolo utente ma di isolare completamente ogni sito l'uno dall'altro senza dover creare utenti unici per ogni pool di app. Abbastanza impressionante, e sarà ancora meglio con il supporto dell'interfaccia utente.

Nota: se non si riesce a trovare l'utente del pool di applicazioni, verificare se il servizio Windows chiamato Application Helper Service è in esecuzione. È il servizio che associa gli utenti del pool di applicazioni agli account Windows.


1
È una specie di strana bestia poiché non è come un gruppo in cui l'utente vive in un gruppo, e non è come un account del computer rispetto a un account utente che sono completamente diversi l'uno dall'altro. L'account del pool di app "si sovrappone" all'utente dell'identità del pool di app. Ad esempio, puoi avere 5 pool di app utilizzando il servizio di rete e altri 5 utilizzando account personalizzati, ma sono 10 account pool di app gestiti gestiti dal sistema diversi. I vantaggi si notano con la cartella c: \ inetpub \ temp \ appPools in cui è gestita automaticamente e blocca il sistema in modo pulito. IIS li sfrutta bene. Il nostro uso sulle cartelle è facoltativo.
Scott Forsyth - MVP,

29
Si noti che se si immette "IIS APPPOOL \ DefaultAppPool" direttamente in "Seleziona utente o gruppo" (anziché cercarlo) durante la modifica delle autorizzazioni, verrà riconosciuto correttamente (testato su Win7 x64 e Win2k8 R2 x64).
Milano Gardian,

5
Sei corretto per Win7 e Win2k8 R2. Non è stato implementato in Win2k8 RTM, ma è in R2.
Scott Forsyth - MVP

9
Alla fine è arrivato: se digiti il ​​nome del pool di app direttamente come @Milan Gardian dice sopra e cambi il campo della posizione sul computer locale, allora funziona
Ciaran Bruen

4
Grazie mille per le "due cose di cui essere a conoscenza". Mi sono imbattuto in entrambi, e questa era una spiegazione chiara e semplice dei problemi e di come ottenere ciò di cui avevo bisogno. È un peccato che nessuno dei documenti MSDN fosse così chiaro.
Ian Grainger,

22

Devi assicurarti che il From this locationcampo sia impostato local machinesul dominio e non sul dominio.

Ho avuto lo stesso problema e, una volta cambiato, ha funzionato bene.


4

Dovresti davvero creare gruppi per "ruolo" e assegnare gli accessi a quel gruppo sul filesystem. Quindi aggiungere il pool di app ai gruppi specifici del ruolo, se necessario. In questo modo anche se si rimuove il pool di app in un secondo momento (e l'utente virtuale diventa pazzo ), non è necessario preoccuparsi di ripetere tutte le autorizzazioni, è sufficiente aggiungere il pool di app sostitutivo al gruppo esistente.


3

Dopo aver letto @Scott Forsyth - risposta MVP ho provato a riavviare il servizio di supporto host applicazioni. Ciò ha risolto il problema per me.


0

Stavo eseguendo WS8 R2 e non ho potuto aggiungere IIS APPPOOL\DefaultAppPooltramite Esplora risorse. L'unico modo in cui funzionava era tramite riga di comando:

cacls [FILE PATH] / T / E / G "IIS APPPOOL \ DefaultAppPool": C


2
Stranamente, ho dovuto fare "IIS AppPool \ DefaultAppPool" per essere accettato. Nota il caso misto: tutto in maiuscolo, come ho fatto la prima volta, non è stato accettato dalla GUI.
Jeff McJunkin,

0

Se questa domanda riguarda come eseguire _sp_send_dbmail nel database msdb (usando la procedura memorizzata SQL Mail Database Mail in msdb), ecco alcune soluzioni. Aggiungi il nome utente dell'applicazione .net del tuo database (che è definito sulla stringa di connessione nell'app .net) all'utente msdb con l'appartenenza al ruolo "DatabaseMailUserRole"

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.