Configurazione dell'identità dei processi ASP.NET
Aggiornamento: novembre 2007
Le pagine ASP.NET vengono eseguite all'interno di un processo o di un programma per Windows. Tutti i programmi per Windows vengono eseguiti con un'identità di sicurezza specifica. Per impostazione predefinita, il processo ASP.NET viene eseguito con un'identità Windows predefinita. In alternativa, configurando l'applicazione per l'utilizzo della rappresentazione, è possibile impostare ASP.NET in modo che venga eseguito con un'identità diversa o con l'identità Windows dell'utente che esegue la richiesta.
Per migliorare la sicurezza delle applicazioni ASP.NET, è necessario che il processo ASP.NET venga eseguito con un'identità dotata solo delle autorizzazioni minime necessarie per l'esecuzione delle applicazioni. In questo modo si riduce la vulnerabilità delle risorse esposte da ASP.NET nel caso di una violazione della sicurezza.
In un server Web che esegue Microsoft Windows Server 2003 e Internet Information Services (IIS) 6.0 il processo ASP.NET viene eseguito nel pool di applicazioni per l'applicazione Web. Il pool di applicazioni definisce l'identità con cui viene eseguito ASP.NET (per impostazione predefinita, l'account SERVIZIO DI RETE). Nelle versioni precedenti di IIS (nei sistemi operativi Microsoft Windows 2000 e Windows XP Professional) ASP.NET viene eseguito nel processo di lavoro di ASP.NET (Aspnet_wp.exe). L'identità con cui viene eseguito ASP.NET è definita dall'identità del processo Aspnet_wp.exe (per impostazione predefinita, l'account ASPNET).
Per specificare l'identità per l'applicazione ASP.NET in un server che esegue Windows Server 2003, utilizzare Gestione Internet Information Services (IIS) per configurare l'identità del pool di applicazioni dell'applicazione ASP.NET. Nel computer server è necessario aggiungere l'identità del pool di applicazioni anche al gruppo IIS_WPG.
Per eseguire il processo di lavoro ASP.NET con il relativo account in Windows 2000 o Windows XP Professional, è possibile applicare i due attributi riportati di seguito all'elemento di configurazione <processModel> del file Machine.config del computer che funge da server Web.
userName Nome dell'account Windows di esecuzione del processo.
password Password in testo non crittografato dell'account. La memorizzazione di password in testo non crittografato in un file di configurazione comporta rischi di sicurezza. Se si archiviano le credenziali nel file di configurazione, è necessario crittografare il contenuto dell'elemento di configurazione <processModel> utilizzando la configurazione protetta. Per ulteriori informazioni, vedere Crittografia delle informazioni di configurazione utilizzando la configurazione protetta. Per le applicazioni pubblicate in Internet, è necessario utilizzare mezzi alternativi per eseguire l'applicazione con un'identità specifica, ad esempio rappresentare l'identità anonima fornita da IIS. Per ulteriori informazioni, vedere Utilizzo dell'autenticazione IIS con la rappresentazione ASP.NET.
Nell'esempio riportato di seguito viene illustrato come impostare gli attributi nell'elemento <processModel> di un file di configurazione per eseguire il processo di lavoro con un account utente locale.
<system.web>
<processModel enable="true"
userName="LOCALMACHINE\IUSR_ProcessUser"
password="%Hco94*#QW12"/>
</system.web>
Oltre a impostare l'attributo userName sul nome di un'identità Windows esistente, è possibile impostarlo sui nomi predefiniti System o Machine. Con l'account System il processo di lavoro viene eseguito con la stessa identità di IIS (in genere SISTEMA).
Nota sulla sicurezza: |
---|
Non è consigliabile eseguire le applicazioni con l'account System in quanto è dotato di privilegi elevati e può, pertanto, rappresentare un rischio di sicurezza se il processo ASP.NET viene compromesso. |
L'account Machine esegue il processo di lavoro con un account speciale denominato ASPNET dotato di autorizzazioni limitate. Per entrambe le identità il processo non deve fornire credenziali al sistema operativo.
Nota: |
---|
Per un corretto funzionamento delle applicazioni ASP.NET è necessario accertarsi che l'identità del processo possa accedere agli elenchi di controllo di accesso (ACL) specificati in Elenchi di controllo di accesso (ACL, Access Control List) ASP.NET necessari. Inoltre, nei server che eseguono IIS 5.0 è necessario concedere all'identità del processo l'accesso in lettura alla metabase di IIS. A questo scopo è possibile utilizzare lo strumento Aspnet_regiis.exe e specificare l'opzione -ga, ad esempio aspnet_regiis -ga "UserDomain\ApplicationUser". |