ASP.NET

Creazione di un account personalizzato per eseguire ASP.NET

In questa pagina
ObiettiviObiettivi
Ambito di applicazioneAmbito di applicazione
Utilizzo del moduloUtilizzo del modulo
RiepilogoRiepilogo
Conoscenze necessarieConoscenze necessarie
Creazione di un nuovo account localeCreazione di un nuovo account locale
Assegnazione di privilegi minimiAssegnazione di privilegi minimi
Assegnazione di autorizzazioni NTFSAssegnazione di autorizzazioni NTFS
Configurazione di ASP.NET per l'esecuzione con il nuovo accountConfigurazione di ASP.NET per l'esecuzione con il nuovo account

Obiettivi

Il 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 applicazione

Le 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 modulo

Per 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.

Riepilogo

Per 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 necessarie

Prima di utilizzare questo modulo, tenere presente quanto segue:

Identità del processo di lavoro ASP.NET

L'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 locale

Questa 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 minimi

Questa 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 NTFS

Questa 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

PosizioneAutorizzazione necessariaAccountCommenti

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 account

Questa 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.


**
In questo articolo
**