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 sapere che IIS ha 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 con 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.
Account di identità 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; cioè, è relativamente con privilegi limitati. L'esecuzione come account con privilegi limitati è una buona procedura di sicurezza perché un bug software non può essere usato da un utente malintenzionato per assumere il controllo dell'intero sistema.
Tuttavia, un problema si è verificato nel tempo man mano che sempre più servizi di sistema Windows sono stati avviati come servizio di rete. Ciò è dovuto al fatto che i servizi in esecuzione come servizio di rete possono manomettere altri servizi eseguiti con la stessa identità. Poiché i processi di lavoro IIS eseguono codice di terze parti per impostazione predefinita (ASP classico, ASP.NET, codice PHP), era il momento di 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 di IIS (WAS) creerà un account virtuale con il nome del nuovo pool di applicazioni ed eseguirà i processi di lavoro del pool di applicazioni con 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:
Aprire la Console di gestione IIS (INETMGR. MSC).
Aprire il nodo Pool di applicazioni sotto il nodo del computer. Selezionare il pool di applicazioni da modificare per l'esecuzione in un'identità del pool di applicazioni generata automaticamente.
Fare clic con il pulsante destro del mouse sul pool di applicazioni e selezionare Impostazioni avanzate
Selezionare la voce di elenco Identità e fare clic sui puntini di sospensione (il pulsante con i tre puntini).
Viene visualizzata la finestra di dialogo seguente:
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 nel modo seguente:
%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 ID 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. Da questo punto in poi, le risorse possono essere protette usando questa identità. Tuttavia, l'identità non è un account utente reale; non verrà visualizzato come utente nella Console di gestione utenti di Windows.
È possibile provare selezionando un file in Esplora risorse e aggiungendo l'identità "DefaultAppPool" all'elenco Controllo di accesso (ACL) del file.
Aprire Esplora risorse
Selezionare un file o una directory.
Fare clic con il pulsante destro del mouse sul file e scegliere Proprietà
Fare clic sulla scheda Sicurezza
Fare clic sul pulsante Modifica e quindi sul pulsante Aggiungi
Fare clic sul pulsante Percorsi e assicurarsi di selezionare il computer.
Immettere IIS AppPool\DefaultAppPool nella casella di testo Immettere i nomi degli oggetti da selezionare: .
Fare clic sul pulsante Controlla nomi e fare clic su OK.
In questo modo, anche il file o la directory selezionata consentirà l'accesso all'identità DefaultAppPool .
A tale scopo, è possibile usare la riga di comando usando lo strumento ICACLS. L'esempio seguente fornisce 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, l'impostazione predefinita consiste nell'eseguire pool di applicazioni come identità del pool di applicazioni. A tale scopo, è stato introdotto un nuovo tipo di identità con il nome "AppPoolIdentity". Se è selezionato il tipo di identità "AppPoolIdentity" (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 ACL per ApplicationPoolIdentity, ma il proprietario del token probabilmente non è univoco. Per altre informazioni su questo concetto, vedere il post di blog New in IIS 7 - App Pool Isolation (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. Il processo di lavoro in esecuzione come servizio di rete accede alla rete come account del computer. Gli account computer vengono generati quando un computer viene aggiunto a un dominio. Hanno un aspetto simile al seguente:
<domainname>\<machinename>$,
Ad esempio:
mydomain\machine1$
L'aspetto interessante è che le risorse di rete come condivisioni file o database di SQL Server possono essere ACL per consentire l'accesso a questo account computer.
Che ne dici delle identità del pool di applicazioni?
La buona notizia è che anche le identità del pool di applicazioni usano 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 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 informazioni su come eseguire questa operazione).
Profilo utente
IIS non carica il profilo utente di Windows, ma alcune applicazioni potrebbero trarre vantaggio 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 alle identità univoche del pool di applicazioni, non viene creato alcun profilo utente dal sistema. Solo i pool di applicazioni standard (DefaultAppPool e .NET AppPool classico) hanno profili utente su disco. Se l'amministratore crea un nuovo pool di applicazioni, non viene creato alcun profilo utente.
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 potente funzionalità di isolamento introdotta per Windows Server 2008, Windows Vista e versioni successive di Windows. Renderà l'esecuzione di applicazioni IIS ancora più sicure e affidabili.