In questa paginaObiettiviIl modulo consente di: | • | Creare un account locale con privilegi minimi, che disponga però di autorizzazioni sufficienti per l'esecuzione corretta di applicazioni ASP.NET. | | • | Configurare ASP.NET in modo che sia possibile eseguirlo con un account con privilegi minimi. |
Ambito di applicazioneLe informazioni contenute in questo modulo sono valide per i seguenti prodotti e tecnologie: | • | Microsoft® Windows® XP o Windows 2000 Server con Service Pack 3 e sistemi operativi successivi | | • | Microsoft .NET Framework versione 1.0 con Service Pack 2 e versioni successive | | • | Internet Information Services (IIS) 5.0 o 6.0 (solo quando si utilizza la modalità isolamento di IIS 5.0) |
Utilizzo del moduloPer trarre il massimo vantaggio dal modulo: | • | È necessario aver acquisito esperienze nello sviluppo di applicazioni Web ASP.NET e avere una buona conoscenza di funzione e struttura del file machine.config. | | • | È necessario avere acquisito esperienze nella creazione e amministrazione di account utente Windows autonomi o basati su dominio tramite l'utilizzo degli strumenti di amministrazione Windows. | | • | Leggere il modulo 8 "Protezione di ASP.NET". In tale modulo sono riportate ulteriori informazioni sulle funzioni di protezione di ASP.NET, sull'effetto che l'identità del processo di lavoro ASP.NET ha sulle autorizzazioni di un'applicazione in esecuzione e sull'utilizzo della rappresentazione per concedere con facilità a un utente dell'applicazione Web il livello di autorizzazione appropriato. |
RiepilogoPer impostazione predefinita, ciascun processo di lavoro ASP.NET viene eseguito nel contesto di un account con privilegi minimi denominato ASPNET. Se l'applicazione ASP.NET viene distribuita su un server basato sul dominio o deve accedere a risorse presenti su server remoti, sarà possibile semplificare l'amministrazione configurando ASP.NET in modo che venga eseguito nel contesto di un altro account. In questo modulo vengono descritte le procedure per la configurazione di ASP.NET, in modo che venga eseguito nel contesto di un account locale personalizzato o di dominio, e delle autorizzazioni che è necessario assegnare a tale account perché questo possa funzionare in modo corretto. Conoscenze necessariePrima di utilizzare questo modulo, tenere presente quanto segue: Identità del processo di lavoro ASP.NETL'account predefinito per l'esecuzione di ASP.NET, creato durante l'installazione, è un account locale con privilegi minimi specificato nel file machine.config nel seguente modo:
<processModel enable="true" userName="machine" password="AutoGenerate" />
Questo account viene identificato in Utenti e gruppi locali come ASPNET ed è dotato di una password sicura custodita dall'autorità di protezione locale (LSA, Local System Authority). Quando è necessario accedere a risorse di rete, ad esempio a un database, mediante l'identità di processo ASP.NET, è possibile utilizzare uno dei seguenti metodi: | • | Utilizzare un account di dominio. | | • | Utilizzare account locali in "mirroring" (ovvero, account in due computer distinti con nomi utenti e password identici). È necessario utilizzare questo metodo quando i computer si trovano in domini distinti senza alcuna relazione di trust oppure sono separati da un firewall e non è possibile aprire le porte necessarie per l'autenticazione NTLM o Kerberos. L'approccio più semplice consiste nel modificare la password dell'account ASPNET nel server Web impostandola su un valore conosciuto e quindi creare un account denominato ASPNET con la stessa password nel computer di destinazione. Nel server Web, è necessario innanzitutto modificare la password dell'account ASPNET in Utenti e gruppi locali e sostituire le credenziali dell'elemento <processModel> in machine.config. È preferibile evitare di archiviare password non crittografate in machine.config e utilizzare invece aspnet_setreg.exe per memorizzare password crittografate nel Registro di sistema. Per ulteriori informazioni, leggere il modulo 8 "Protezione di ASP.NET".
<processModel enable="true"
userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
ASPNET_SETREG,userName"
password="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
ASPNET_SETREG,password" . . ./>
È possibile utilizzare le operazioni presentate in questo modulo per creare un account locale con privilegi minimi. |
Rappresentazione di identità fisseÈ possibile impostare identità fisse per directory virtuali specifiche utilizzando l'impostazione riportata di seguito nel file web.config. Utilizzare aspnet_setreg.exe per memorizzare credenziali crittografate nel Registro di sistema.
<identity impersonate="true"
userName="registry:HKLM\SOFTWARE\YourSecureApp\
identity\ASPNET_SETREG,userName"
password="registry:HKLM\SOFTWARE\YourSecureApp\
identity\ASPNET_SETREG,password" />
In genere, questo approccio viene utilizzato quando nello stesso server Web sono presenti più siti Web che è necessario eseguire con identità diverse, ad esempio negli scenari di hosting delle applicazioni. In questo modulo viene descritta la creazione di un account locale con privilegi minimi. Se l'aspetto che interessa in modo particolare è l'amministrazione, sarà possibile utilizzare un account di dominio vincolato, con privilegi minimi e una password sicura. Per scegliere l'account da utilizzare per l'esecuzione di ASP.NET, tenere presente quanto segue: | • | In ASP.NET, la rappresentazione non è attiva nell'impostazione predefinita. Di conseguenza, per l'accesso alle risorse eseguito dall'applicazione Web viene utilizzata l'identità del processo ASP.NET. In questo caso le risorse di Windows devono disporre di un elenco di controllo dell'accesso (ACL) che consenta l'accesso all'account del processo ASP.NET. | | • | Se si attiva la rappresentazione, l'applicazione accede alle risorse utilizzando il contesto di protezione del chiamante originale o l'account utente Internet anonimo (per impostazione predefinita, IUSR_MACHINE), a condizione che IIS sia configurato per l'autenticazione anonima. In questo caso le risorse devono disporre di ACL basati sull'identità del chiamante originale o IUSR_MACHINE. | | • | Durante la creazione di un account personalizzato, rispettare sempre il principio del privilegio minimo, ovvero impostare solo l'insieme minimo di privilegi e autorizzazioni necessari. | | • | Evitare di eseguire ASP.NET utilizzando l'account SYSTEM. | | • | Evitare di assegnare all'account il privilegio "Agisci come parte del sistema operativo". |
Creazione di un nuovo account localeQuesta procedura consente di creare un nuovo account locale. Per impostazione predefinita, l'account verrà aggiunto al gruppo Users locale. | • | Per creare un nuovo account locale 1. | Creare un account locale, ad esempio "CustomASPNET". Accertarsi di utilizzare una password sicura per l'account. Le password sicure devono essere composte da almeno sette caratteri, compresi lettere maiuscole e minuscole, numeri e altri caratteri quali i simboli *, ? o $. | 2. | Deselezionare l'opzione Cambiamento obbligatorio password all'accesso successivo. | 3. | Selezionare l'opzione Nessuna scadenza password. |
|
Assegnazione di privilegi minimiQuesta procedura consente di assegnare l'insieme minimo di privilegi necessari per l'esecuzione di ASP.NET. | • | Per assegnare privilegi minimi 1. | Dal gruppo di programmi Strumenti di amministrazione avviare lo strumento Criteri di protezione locali. | 2. | Espandere Criteri locali, quindi selezionare Assegnazione diritti utente. Nel riquadro destro verrà visualizzato un elenco di privilegi. | 3. | Assegnare al nuovo account i seguenti privilegi: | • | Accesso al computer dalla rete | | • | Accesso come processo batch | | • | Accesso come servizio | | • | Nega accesso locale | | • | Nega accesso tramite Servizi terminal |
Nota: per assegnare un privilegio a un account, fare doppio clic sul privilegio, quindi scegliere Aggiungi per selezionare l'account necessario. | 4. | Chiudere lo strumento. |
|
Assegnazione di autorizzazioni NTFSQuesta procedura consente di assegnare all'account personalizzato ASP.NET le autorizzazioni NTFS necessarie all'interno del file system locale. Nota: i passaggi indicati in questa procedura sono relativi al file system del server Web (e non di un computer remoto, dove la duplicazione dell'account potrebbe essere eseguita per motivi di autenticazione). | • | Per assegnare autorizzazioni NTFS 1. | Avviare Esplora risorse e assegnare le autorizzazioni appropriate alle cartelle specificate nella tabella 1. L'account di rappresentazione fisso indicato nella tabella 1 fa riferimento all'account che è possibile configurare facoltativamente utilizzando l'elemento <identity> nel file web.config, come illustrato di seguito.
<identity impersonate="true"
userName="registry:HKLM\SOFTWARE\YourSecureApp\
identity\ASPNET_SETREG,userName"
password="registry:HKLM\SOFTWARE\YourSecureApp\
identity\ASPNET_SETREG,password" />
In questo esempio il file aspnet_setreg.exe è stato utilizzato per archiviare le credenziali dell'account personalizzate in formato crittografato all'interno del Registro di sistema. Tabella 1: autorizzazioni NTFS necessarie File ASP.NET temporanei: C:\WINNT\Microsoft.NET\ Framework\<versione>\ File ASP.NET temporanei | Controllo completo | Account di processo e di rappresentazione fissi | Percorso di compilazione dinamico ASP.NET. Il codice di ciascuna applicazione viene generato in una directory distinta contenuta in questa cartella. Per modificare il percorso predefinito è possibile utilizzare l'attributo tempdir dell'elemento <compilation>. | Cartella temporanea: C:\WINNT\temp | Lettura/Scrittura/Elimina | Processo | Percorso utilizzato dai servizi Web per generare proxy di serializzazione. Si noti che l'autorizzazione Elimina viene impostata utilizzando il pulsante Avanzate nella scheda Protezione della finestra di dialogo delle proprietà delle cartelle in Esplora risorse. | Directory virtuale dell'applicazione: C:\inetpub\wwwroot\webapp1 | Leggi | Processo | Percorso dei file dell'applicazione Web, ovvero la directory virtuale principale dell'applicazione. Per impostazione predefinita il gruppo Users dispone dei diritti di accesso appropriati. | Gerarchia (%installroot) di installazione: (C:\WINNT\Microsoft.Net\ Framework\v1.0.3705) | Leggi | Account di processo e di rappresentazione fissi | È necessario che ASP.NET possa accedere agli assembly .NET Framework. Per impostazione predefinita il gruppo Users dispone dei diritti di accesso appropriati. | Cache dell'assembly globale: C:\WINNT\temp | Leggi | Account di processo e di rappresentazione fissi | Cache globale degli assembly. Non è possibile utilizzare direttamente Esplora risorse per modificare gli ACL relativi a questa cartella. Utilizzare invece una finestra di comando ed eseguire il seguente comando: cacls %windir%\assembly /e /t /p dominio\accountutente:R In alternativa, prima di utilizzare Esplora risorse, annullare la registrazione di shfusion.dll con il seguente comando: regsvr32 —u shfusion.dll Dopo l'impostazione delle autorizzazioni in Esplora risorse, registrare di nuovo shfusion.dll con il seguente comando: regsvr32 shfusion.dll. | Directory principale del sito Web: C:\inetpub\ wwwroot o il percorso a cui rimanda il sito Web predefinito. | Leggi | Processo | ASP.NET legge i file di configurazione e controlla eventuali modifiche apportate ai file di questa cartella. | Directory principale di sistema: C:\WINNT\temp | Leggi | Processo | Percorso delle DLL di sistema caricate da Framework. | Gerarchia della cartella dell'applicazione C: \C:\inetpub\ C:\inetpub\wwwroot\ C:\inetpub\wwwroot\ mywebapp1 | Elenco cartelle/ Lettura dati | Processo | Per le notifiche relative alle modifiche dei file e per la compilazione C# (ai fini della normalizzazione dei file), è necessario che il l'account del processo disponga delle autorizzazioni di visualizzazione del contenuto della cartella e lettura dei dati per la gerarchia della cartella dell'applicazione. Vale a dire, per tutte le cartelle fino alla directory principale. |
|
|
Configurazione di ASP.NET per l'esecuzione con il nuovo accountQuesta procedura consente di modificare il file machine.config e configurare ASP.NET in modo che venga eseguito utilizzando il nuovo account. | • | Per configurare ASP.NET in modo che venga eseguito utilizzando il nuovo account 1. | Al prompt dei comandi eseguire aspnet_setreg.exe per aggiungere al Registro di sistema una versione crittografata di nome utente e password dell'account personalizzato. Per informazioni dettagliate su questa utilità e sul relativo download, vedere l'articolo 329290 della Microsoft Knowledge Base "HOW TO: Use the ASP.NET Utility to Encrypt Credentials and Session State Connection Strings" all'indirizzo: http://support.microsoft.com/default.aspx?scid=329290 (in inglese).
aspnet_setreg -k:SOFTWARE\YourSecureApp\processModel
-u:"CustomASPNET" -p:"YourStrongPassword"
| 2. | Aprire il file machine.config con Visual Studio.NET o Blocco note. Il file machine.config si trova nella seguente cartella:
C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG
| 3. | Individuare l'elemento <processModel> e impostare gli attributi userName e password in modo che contengano le stringhe riportate di seguito che puntano ai dettagli delle credenziali crittografate.
Default:
<processModel userName="machine" password="AutoGenerate" . . ./>
Becomes:
<processModel
userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel\
ASPNET_SETREG,userName"
password="registry:HKLM\SOFTWARE\YourSecureApp\processmodel\
ASPNET_SETREG,password" . . . />
| 4. | Salvare le modifiche apportate al file machine.config. |
|
| |