Share via


Identità del pool di applicazioni

di Thomas Deml

Indipendentemente dal fatto che il sito sia in esecuzione nel proprio server o nel cloud, la sicurezza deve essere all'inizio dell'elenco di priorità. In tal caso, si sarà lieti di sentire che IIS dispone di una funzionalità di sicurezza denominata identità del pool di applicazioni. Questa funzionalità è stata introdotta in Service Pack 2 (SP2) di Windows Server 2008 e Windows Vista. Un'identità del pool di applicazioni consente di eseguire un pool di applicazioni in un account univoco senza dover creare e gestire account di dominio o locali. Il nome dell'account del pool di applicazioni corrisponde al nome del pool di applicazioni. L'immagine seguente mostra un processo di lavoro IIS (W3wp.exe) in esecuzione come identità DefaultAppPool.

Screenshot della schermata di Task Manager con uno stato attivo sul processo di lavoro W 3 W P dot E X E I S.

Account identity del pool di applicazioni

I processi di lavoro in IIS 6.0 e in IIS 7 vengono eseguiti come servizio di rete per impostazione predefinita. Servizio di rete è un'identità di Windows predefinita. Non richiede una password e ha solo privilegi utente; vale a dire, è relativamente basso privilegiato. L'esecuzione come account con privilegi bassi è una buona procedura di sicurezza perché un bug software non può essere usato da un utente malintenzionato per acquisire l'intero sistema.

Tuttavia, un problema si è verificato nel tempo perché più e più servizi di sistema Windows hanno iniziato a essere eseguiti come servizio di rete. Questo perché i servizi in esecuzione come servizio di rete possono manomettere altri servizi eseguiti nella stessa identità. Poiché i processi di lavoro IIS eseguono codice di terze parti per impostazione predefinita (ASP classico, ASP.NET, codice PHP), è stato necessario isolare i processi di lavoro IIS da altri servizi di sistema Windows ed eseguire processi di lavoro IIS in identità univoche. Il sistema operativo Windows fornisce una funzionalità denominata "account virtuali" che consente a IIS di creare un'identità univoca per ogni pool di applicazioni. Per altre informazioni sugli account virtuali, vedere Guida dettagliata agli account di servizio.

Configurazione delle identità del pool di applicazioni IIS

Se si esegue IIS 7.5 in Windows Server 2008 R2 o una versione successiva di IIS, non è necessario eseguire alcuna operazione per usare la nuova identità. Per ogni pool di applicazioni creato, la proprietà Identity del nuovo pool di applicazioni è impostata su ApplicationPoolIdentity per impostazione predefinita. Il processo di Amministrazione IIS (WAS) creerà un account virtuale con il nome del nuovo pool di applicazioni ed eseguirà i processi di lavoro del pool di applicazioni in questo account per impostazione predefinita.

Per usare questo account virtuale quando si esegue IIS 7.0 in Windows Server 2008, è necessario modificare la proprietà Identity di un pool di applicazioni creato in ApplicationPoolIdentity. Ecco come:

  1. Aprire la Console di gestione IIS (INETMGR). MSC).

  2. Aprire il nodo Pool di applicazioni sotto il nodo del computer. Selezionare il pool di applicazioni che si vuole modificare per l'esecuzione in un'identità del pool di applicazioni generata automaticamente.

  3. Fare clic con il pulsante destro del mouse sul pool di applicazioni e selezionare Impostazioni avanzate

    Screenshot della finestra di dialogo Impostazioni avanzate con l'impostazione Identity evidenziata.

  4. Selezionare l'elemento elenco Identità e fare clic sui puntini di sospensione (il pulsante con i tre puntini).

  5. Viene visualizzata la finestra di dialogo seguente:

    Screenshot della finestra di dialogo Identità pool di applicazioni con l'opzione Identità pool di applicazioni evidenziata.

  6. Selezionare il pulsante Account predefinito e quindi selezionare il tipo di identità ApplicationPoolIdentity nella casella combinata.

Per eseguire lo stesso passaggio usando la riga di comando, è possibile chiamare lo strumento da riga di comando appcmd come segue:

%windir%\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity

Protezione delle risorse

Ogni volta che viene creato un nuovo pool di applicazioni, il processo di gestione IIS crea un identificatore di sicurezza (SID) che rappresenta il nome del pool di applicazioni stesso. Ad esempio, se si crea un pool di applicazioni con il nome "MyNewAppPool", viene creato un identificatore di sicurezza con il nome "MyNewAppPool" nel sistema Sicurezza di Windows. A partire da questo punto, le risorse possono essere protette usando questa identità. Tuttavia, l'identità non è un account utente reale; non verrà visualizzato come utente in Windows User Management Console.

È possibile provare questa operazione selezionando un file in Esplora risorse e aggiungendo l'identità "DefaultAppPool" all'elenco di Controllo di accesso del file.

  1. Aprire Esplora risorse

  2. Selezionare un file o una directory.

  3. Fare clic con il pulsante destro del mouse sul file e selezionare Proprietà

  4. Fare clic sulla scheda Sicurezza

  5. Fare clic sul pulsante Modifica e quindi sul pulsante Aggiungi

  6. Fare clic sul pulsante Percorsi e assicurarsi di selezionare il computer.

    Screenshot della finestra di dialogo Seleziona utenti o gruppi.

  7. Immettere IIS AppPool\DefaultAppPool nella casella di testo Immettere i nomi degli oggetti da selezionare:

  8. Fare clic sul pulsante Controlla nomi e fare clic su OK.

A questo scopo, il file o la directory selezionata ora consentono anche l'accesso all'identità DefaultAppPool .

È possibile eseguire questa operazione tramite la riga di comando usando lo strumento ICACLS. Nell'esempio seguente viene fornito l'accesso completo all'identità DefaultAppPool.

ICACLS test.txt /grant "IIS AppPool\DefaultAppPool:F"

Per altre informazioni, vedere ICACLS.

In Windows 7 e Windows Server 2008 R2 e versioni successive di Windows, il valore predefinito consiste nell'eseguire pool di applicazioni come identità del pool di applicazioni. A questo scopo, è stato introdotto un nuovo tipo di identità con il nome "AppPoolIdentity". Se il tipo di identità "AppPoolIdentity" è selezionato (l'impostazione predefinita in Windows 7 e Windows Server 2008 R2 e versioni successive), IIS eseguirà i processi di lavoro come identità del pool di applicazioni. Con ogni altro tipo di identità, l'identificatore di sicurezza verrà inserito solo nel token di accesso del processo. Se l'identificatore viene inserito, il contenuto può comunque essere ALED per ApplicationPoolIdentity, ma il proprietario del token probabilmente non è univoco. Per altre informazioni su questo concetto, vedere il post di blog Nuovo in IIS 7 - Isolamento pool di app .

Accesso alla rete

L'uso dell'account del servizio di rete in un ambiente di dominio offre un grande vantaggio. Processo di lavoro in esecuzione come servizio di rete accede alla rete come account del computer. Gli account del computer vengono generati quando un computer viene aggiunto a un dominio. Sono simili al seguente:

<domainname>\<machinename>$,

Ad esempio:

mydomain\machine1$

La cosa interessante di questo è che le risorse di rete come condivisioni file o database SQL Server possono essere ALED per consentire l'accesso all'account del computer.

Informazioni sulle identità del pool di applicazioni?

La buona notizia è che le identità del pool di applicazioni usano anche l'account del computer per accedere alle risorse di rete. Non sono necessarie modifiche.

Problemi di compatibilità con le identità del pool di applicazioni

Documentazione del materiale sussidiario

Il problema di compatibilità più grande con le identità del pool di applicazioni è probabilmente i documenti di indicazioni precedenti che consigliano esplicitamente di usare le risorse ACL per il servizio di rete, ovvero l'identità predefinita di DefaultAppPool in IIS 6.0 e IIS 7.0. I clienti dovranno modificare gli script in ACL per "IIS AppPool\DefaultAppPool" (o un altro nome del pool di applicazioni) durante l'esecuzione in IIS 7.5 o versione successiva (vedere l'esempio precedente per come eseguire questa operazione).

Profilo utente

IIS non carica il profilo utente di Windows, ma alcune applicazioni potrebbero sfruttarlo comunque per archiviare i dati temporanei. SQL Express è un esempio di applicazione che esegue questa operazione. Tuttavia, è necessario creare un profilo utente per archiviare i dati temporanei nella directory del profilo o nell'hive del Registro di sistema. Il profilo utente per l'account del servizio di rete è stato creato dal sistema ed è sempre disponibile. Tuttavia, con il passaggio a identità univoche del pool di applicazioni, nessun profilo utente viene creato dal sistema. Solo i pool di applicazioni standard (DefaultAppPool e Classico AppPool) dispongono di profili utente su disco. Nessun profilo utente viene creato se l'amministratore crea un nuovo pool di applicazioni.

Tuttavia, se si vuole, è possibile configurare i pool di applicazioni IIS per caricare il profilo utente impostando l'attributo LoadUserProfile su "true".

Riepilogo

Le identità del pool di applicazioni sono una nuova funzionalità di isolamento avanzata introdotta per Windows Server 2008, Windows Vista e versioni successive di Windows. Consentirà l'esecuzione di applicazioni IIS ancora più sicure e affidabili.