IdentitÓ del processo e della richiesta in ASP.NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 317012 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo vengono delineati i diritti di accesso concessi all'account del processo predefinito e vengono descritte alcune situazioni in cui questi diritti potrebbero essere troppo restrittivi per determinate attivitÓ.

Nell'installazione predefinita di ASP.NET in Microsoft Windows 2000 e Microsoft Windows XP il codice delle applicazioni Web viene eseguito in un processo di lavoro. Per impostazione predefinita, l'identitÓ di questo processo utilizza un account locale denominato account ASPNET, in cui il nome completo Ŕ account aspnet_wp. Nelle versioni beta di ASP.NET l'identitÓ del processo Ŕ System, ovvero un potente account amministrativo che include molti diritti di accesso nel computer. Per fornire un'installazione predefinita con meno privilegi, la versione rilasciata di ASP.NET utilizza l'account ASPNET pi¨ debole, che risulta adatto alla maggior parte delle applicazioni Web.

Nota Per impostazione predefinita, se si utilizza Microsoft Internet Information Services (IIS) 6.0, le applicazioni Web ASP.NET verranno eseguite nel contesto di protezione dell'account NetworkService.

Informazioni

Configurazione dell'identitÓ del processo

╚ possibile configurare l'identitÓ del processo nella sezione <processModel> del file Machine.config nella sottodirectory Config della directory principale di installazione. Gli attributi userName e password consentono di controllare l'identitÓ del processo. I valori predefiniti per questi attributi sono i seguenti:
 <processModel  userName="machine" password="AutoGenerate" /> 				
I valori machine e AutoGenerate indicano ad ASP.NET di utilizzare l'account ASPNET predefinito e di utilizzare una password complessa con crittografia casuale archiviata nell'autoritÓ di protezione locale (LSA, Local Security Authority) per l'account.

Se si desidera utilizzare un processo che disponga di maggiori diritti di accesso, Ŕ possibile impostare l'attributo userName su System, per fare in modo che il processo di lavoro ASP.NET venga eseguito con la stessa identitÓ del processo Inetinfo.exe. Per impostazione predefinita, il processo Inetinfo.exe viene eseguito come identitÓ System. Se si configura il processo di lavoro ASP.NET affinchÚ utilizzi l'identitÓ System, tale processo potrÓ accedere a quasi tutte le risorse del computer locale. Nei computer in cui Ŕ installato Windows 2000 o Windows XP l'account System dispone anche di credenziali di rete e pu˛ essere utilizzato per accedere alle risorse di rete come l'account machine. Per configurare il processo affinchÚ venga eseguito come identitÓ System, Ŕ necessario modificare l'attributo userName nella sezione <processModel> come indicato di seguito:
<processModel  userName="SYSTEM" password="AutoGenerate" />
				

Autorizzazioni predefinite per l'account ASPNET

L'account ASPNET viene creato come account locale al momento dell'installazione di ASP.NET. Questo account appartiene solo al gruppo Users di tale computer. Per questo motivo l'account ASPNET dispone di tutti i diritti associati al gruppo Users e consente di accedere a qualsiasi risorsa a cui il gruppo Users pu˛ accedere. L'account ASPNET eredita dal gruppo Users i diritti utente riportati di seguito:
  • SeChangeNotifyPrivilege
  • SeUndockPrivilege
  • SeInteractiveLogonRight
  • SeNetworkLogonRight
Per impostazione predefinita, all'account ASPNET vengono anche concessi i diritti riportati di seguito:
  • SeServiceLogonRight
  • SeBatchLogonRight
  • SeDenyInteractiveLogonRight
In ASP.NET vengono concesse autorizzazioni specifiche con accesso completo per l'account ASPNET alle seguenti cartelle:
  • Temporary ASP.NET Files
  • %windir%\temp
In ASP.NET viene inoltre concessa l'autorizzazione in lettura alla directory di installazione di Microsoft .NET Framework.

Nell'elenco riportato di seguito sono indicati gli elenchi di controllo di accesso necessari per l'account ASPNET, che sono inclusi nelle installazioni predefinite di Windows 2000 e Microsoft .NET Framework.
  • Percorso: %installroot%\ASP.NET Temporary Files
    Tipo di accesso: autorizzazione di lettura e scrittura sulla cartella e Visualizza contenuto cartella sulla cartella principale dell'unitÓ.
    Account: account del processo e account di rappresentazione configurati
    Descrizione: si tratta del percorso per la compilazione dinamica di ASP.NET. Al di sotto di questo percorso il codice delle applicazioni viene generato in una directory discreta per ciascuna applicazione. ╚ possibile utilizzare l'attributo tempDir nella sezione <compilation> per configurare il percorso della cartella principale.

    Nota Se si modifica il file machine.config per salvare i file temporanei ASP.NET in un percorso diverso, l'account ASPNET dovrÓ disporre del tipo di accesso Visualizza contenuto cartella a livello della directory principale dell'unitÓ.
  • Percorso: %windir%\temp
    Tipo di accesso: lettura/scrittura
    Account: account del processo
    Descrizione: si tratta del percorso utilizzato dai servizi Web XML (Extensible Markup Language) per generare proxy di serializzazione.
  • Percorso: directory dell'applicazione
    Tipo di accesso: Lettura
    Account: account del processo e account di rappresentazione configurati
    Descrizione: si tratta del percorso per il contenuto dell'applicazione per cui Ŕ necessario il solo accesso in lettura.
    Per ulteriori informazioni, visitare il seguente sito Web Microsoft (informazioni in lingua inglese):
    http://msdn.microsoft.com/library/en-us/dnnetsec/html/SecNetHT01.asp
  • Percorso: cartella principale del sito Web (%systemdrive%\inetpub\wwwroot o il percorso a cui punta il sito Web predefinito)
    Tipo di accesso: Lettura
    Account: account del processo e account di rappresentazione configurati
    Descrizione: viene eseguito il tentativo di lettura dei file di configurazione e di controllo delle modifiche apportate a unitÓ:\inetpub\wwwroot\web.config.
  • Percorso: gerarchia %installroot%
    Tipo di accesso: Lettura
    Account: account del processo e account di rappresentazione configurati
    Descrizione: in ASP.NET deve essere possibile accedere agli assembly .NET Framework del file Machine.config (nella sottodirectory \Config in corrispondenza di %installroot%).
  • Percorso: %windir%\assembly
    Tipo di accesso: Lettura
    Account: account del processo o account di rappresentazione configurati
    Descrizione: si tratta della cache dell'assembly globale contenente assembly condivisi.
Per ulteriori informazioni sugli elenchi di controllo di accesso predefiniti per computer basati su Windows 2000, vedere il white paper "Default Access Control Settings in Windows 2000" (Impostazioni di controllo di accesso predefinite in Windows 2000) nella sezione RIFERIMENTI.

Nota Per impostazione predefinita, l'account ASPNET non dispone in genere dei diritti di accesso appropriato per effettuare alcune delle operazioni descritte in questo articolo.

Accesso alle risorse

Nelle sezioni riportate di seguito viene descritto l'utilizzo delle varie risorse. ╚ possibile accedere a molte di queste risorse localmente se si abilita la rappresentazione e se si concede all'account rappresentato l'accesso alla risorsa. La rappresentazione, tuttavia, spesso non funziona quando si tenta di accedere alle risorse remote, a meno che nell'applicazione venga utilizzato un meccanismo di autenticazione che pu˛ essere delegato, ad esempio l'autenticazione Kerberos o Basic. ╚ anche possibile utilizzare i servizi COM+ per accedere alle risorse, come indicato nella sezione Eseguire codice con un'identitÓ stabilita.

Utilizzo delle risorse dei file

Per abilitare un'applicazione in esecuzione con l'account ASPNET alla scrittura nei file, Ŕ possibile rappresentare un utente specifico nel codice prima della scrittura nei file oppure concedere autorizzazioni in scrittura per l'account ASPNET. Le autorizzazioni in scrittura possono essere concesse per un singolo file o per gerarchie di directory.

Importante Quando si concedono autorizzazioni in scrittura per un singolo file o per gerarchie di directory all'account ASPNET, tutte le applicazioni Web ASP.NET eseguite con l'account ASPNET sul server saranno in grado di scrivere nel file o nelle gerarchie di directory specificate. Per ulteriori informazioni sulla rappresentazione di un utente specifico nel codice, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
306158 Implementazione della rappresentazione in un'applicazione ASP.NET
Per modificare l'elenco di controllo di accesso per un file, attenersi alla seguente procedura:
  1. Aprire Esplora risorse.
  2. Selezionare il file o la cartella per la quale si desidera modificare le autorizzazioni.
  3. Scegliere ProprietÓ dal menu File.
  4. Fare clic sulla scheda Protezione. Selezionare le caselle di controllo per le autorizzazioni dell'elenco di controllo di accesso.
╚ inoltre possibile utilizzare uno script o lo strumento della riga di comando Cacls.exe, incluso in Windows, per modificare l'elenco di controllo di accesso per un file.

In ASP.NET 1.1 viene utilizzata la cartella <NomeUnitÓ>\Documents and Settings\<NomeComputer>\ASPNET per memorizzare i file di processo (dove<NomeUnitÓ> Ŕ l'unitÓ sul computer in cui Ŕ installato ASP.NET e <NomeComputer> Ŕ il nome del computer).

Abilitare la rappresentazione

Con la rappresentazione Ŕ consentita l'esecuzione, come utente autenticato o anonimo, nel contesto di protezione dell'entitÓ della richiesta. In ASP.NET la rappresentazione Ŕ facoltativa e non Ŕ abilitata per impostazione predefinita. Per abilitare la rappresentazione a livello di computer o di applicazione, Ŕ necessario aggiungere la seguente istruzione di configurazione nella sezione <system.web> del file Machine.config o Web.config:
<identity impersonate="true"/>
				

Utilizzare i database

Le applicazioni che utilizzano l'autenticazione SQL per connettersi a un database non sono in genere influenzate dal passaggio all'account ASPNET. Lo stesso concetto Ŕ valido per applicazioni che utilizzano l'autenticazione e la rappresentazione integrate. Se tuttavia un'applicazione non Ŕ rappresentata e utilizza l'autenticazione di Windows, Ŕ necessario concedere l'accesso al database per l'account ASPNET.

Non Ŕ possibile utilizzare l'account ASPNET quando si tenta di effettuare l'autenticazione in Microsoft SQL Server mediante l'autenticazione di Windows integrata nelle named pipe. ╚ comunque possibile utilizzare l'account ASPNET con l'autenticazione di Windows integrata mediante il trasporto del protocollo TCP (Transmission Control Protocol).

Se in un'applicazione Ŕ necessario utilizzare un database Microsoft Access, l'account ASPNET deve essere in grado di scrivere nel file di database e gli amministratori devono modificare le autorizzazioni per i file di conseguenza.

Utilizzare il log eventi

La scrittura nel log eventi applicazioni pu˛ avvenire durante l'esecuzione come account ASPNET. Se per un'applicazione deve essere creata una nuova categoria del log eventi, Ŕ necessario creare prima una chiave del Registro di sistema nell'hive HKEY_LOCAL_MACHINE, un'operazione che l'account ASPNET non Ŕ in grado di eseguire.

Per creare una categoria in fase di esecuzione, Ŕ necessario abilitare la rappresentazione e rappresentare un account con pi¨ diritti di accesso. In alternativa la categoria pu˛ essere creata da un amministratore e l'applicazione pu˛ scrivere in tale categoria in fase di esecuzione.

Se per le applicazioni devono essere create nuove categorie del log eventi, Ŕ necessario effettuare questa operazione in fase di installazione. Al termine della creazione della categoria l'account ASPNET sarÓ in grado di scrivere nel log eventi applicazioni.

Utilizzare lo spazio dei nomi System.DirectoryServices e Active Directory

Se un'applicazione Web deve accedere al servizio Active Directory, Ŕ possibile utilizzare la rappresentazione in un ambiente che supporti la delega. In alternativa l'applicazione pu˛ fornire credenziali esplicite al costruttore DirectoryEntry nello spazio dei nomi System.DirectoryServices per accedere al servizio Active Directory. Se nell'applicazione vengono utilizzate credenziali esplicite, le applicazioni dovrebbero memorizzare le credenziali in modo appropriato mediante una tecnica come le stringhe di costruzione COM+ o mediante le API (Application Programming Interface) di protezione dei dati di Windows.

Utilizzare i contatori delle prestazioni

L'account ASPNET dispone di un'autorizzazione in scrittura, ma non in lettura, sufficiente per i dati dei contatori delle prestazioni. Se l'applicazione deve leggere i dati dei contatori delle prestazioni o creare categorie di contatori delle prestazioni, Ŕ necessaria l'autorizzazione Administrator o Power User.

Se un'applicazione deve creare nuove categorie di contatori delle prestazioni, Ŕ necessario effettuare tale operazione in fase di installazione. Al termine della creazione delle categorie, l'account ASPNET potrÓ scrivere nei contatori.

SarÓ ancora possibile utilizzare lo strumento Performance Monitor (Perfmon.exe) per controllare i contatori delle prestazioni ASP.NET durante l'utilizzo dell'account ASPNET.

Effettuare la procedura seguente in Windows 2000:
  1. Avviare l'editor del Registro di sistema.
  2. Individuare la seguente chiave del Registro di sistema:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ASP.NET_1.1.4322\Names
  3. Scegliere la scheda Protezione.
  4. Aggiungere l'identitÓ processo di lavoro con le seguenti autorizzazioni:
    • Query valore
    • Impostazione valore
    • Creazione sottochiave
    • Enumerazione sottochiavi
    • Controllo lettura
In Windows Server 2003 aggiungere l'identitÓ al gruppo IIS_WPG.

Avviare i server COM out-of-process

Le applicazioni che devono avviare server COM out-of-process durante l'esecuzione come account ASPNET possono concedere in modo specifico autorizzazioni di avvio all'account mediante lo strumento Dcomcnfg.exe.

Problemi di debug

Per impostazione predefinita, non Ŕ possibile utilizzare un servizio Web XML da un'applicazione client. Per usufruire dei servizi Web XML, Ŕ necessario aggiungere l'account ASPNET al gruppo Debugger Users del computer nel quale Ŕ in esecuzione il servizio Web XML.

Eseguire codice con un'identitÓ stabilita

Nei servizi COM+ Ŕ possibile eseguire codice con un'identitÓ stabilita. La classe ServicedComponent dello spazio dei nomi System.EnterpriseServices pu˛ essere utilizzata per scrivere componenti di codice gestito che utilizzino i servizi COM+. La funzionalitÓ con privilegi pu˛ essere inclusa in una classe derivata da ServicedComponent e tale classe pu˛ essere eseguita come applicazione server COM+ con un'identitÓ configurata.

Compilare file code-behind in condivisioni UNC

In ASP.NET Ŕ possibile utilizzare diversi metodi per sviluppare file dell'applicazione:
  • ╚ possibile utilizzare il linguaggio HTML (Hypertext Markup Language) in un file aspx e memorizzare il codice della pagina in un assembly precompilato nella directory Bin. Si tratta del modello Microsoft Visual Studio .NET.
  • ╚ possibile creare un pacchetto di tutto il codice e del contenuto HTML in un singolo file di origine compilato su richiesta.
  • La presentazione HTML pu˛ essere inserita in un file ASP.NET ed Ŕ possibile compilare in modo dinamico qualsiasi codice sorgente associato per tale file utilizzando un attributo src nell'istruzione <%@ Assembly %>.
Nota Se il contenuto dell'applicazione si trova in una condivisione di rete, il compilatore inizia dall'account ASPNET e non dispone di credenziali di rete per accedere al file. Se si utilizzano condivisioni di rete, non Ŕ possibile utilizzare l'attributo src per puntare a un file, ma Ŕ necessario utilizzare altri metodi.

Utilizzare ASP.NET in un controller di dominio primario o di backup


Per impostazione predefinita, se si utilizza ASP.NET 1.1 in un controller di dominio, le applicazioni Web ASP.NET verranno eseguite nel contesto di protezione dell'account IWAM_<NomeComputer> , dove <NomeComputer> Ŕ il nome del computer.

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
315158 FIX: ASP.NET non funziona con l'account ASPNET predefinito in un controller di dominio
Torna all'inizio

Leggere la metabase IIS

L'account ASPNET non Ŕ in grado di leggere la metabase Microsoft IIS (Internet Information Services). Se un'applicazione deve accedere alle impostazioni della metabase, Ŕ possibile concedere in modo selettivo l'accesso in lettura ai nodi della metabase mediante l'utilitÓ Metaacl.exe.

Se un'applicazione deve utilizzare file con estensione disco, che si basano sulla capacitÓ di lettura della metabase IIS per fornire servizi di rilevamento, Ŕ necessario concedere l'accesso in lettura alla metabase per l'account ASPNET.

Utilizzare System.Management e Strumentazione gestione Windows (WMI)

Strumentazione gestione Windows (WMI, Windows Management Instrumentation) Ŕ una potente funzionalitÓ amministrativa che consente di gestire e controllare computer basati su Windows. Quando tuttavia applicazioni ASP.NET vengono eseguite nell'account ASPNET, tale account dispone solo delle autorizzazioni di accesso predefinite di Everyone. Queste autorizzazioni comprendono la lettura dei dati di Strumentazione gestione Windows (WMI), la scrittura dei dati del provider e l'esecuzione di metodi per provider nel computer locale. Ulteriori informazioni sui meccanismi di protezione di Strumentazione gestione Windows sono disponibili nella documentazione WMI Platform SDK o in MSDN.

Nota In Windows 2000 senza Service Pack 3 (SP3) o versione successiva oppure in Windows XP senza Service Pack 1 (SP1) o versione successiva le applicazioni Web ASP.NET eseguite con l'account ASPNET potrebbero non funzionare e potrebbe essere visualizzato il messaggio di errore "Accesso negato (0x80041003)". Questo problema si verifica perchÚ l'account non dispone di privilegi sufficienti per accedere a determinati spazi dei nomi di Strumentazione gestione Windows. Per risolvere il problema, installare Windows XP SP1 o versione successiva oppure Windows 2000 SP3 o versione successiva. Per risolvere il problema, attenersi alla seguente procedura:
  1. Aprire lo snap-in MMC (Microsoft Management Console) di gestione del computer.
  2. Espandere Servizi e applicazioni e selezionare Controllo WMI.
  3. Fare clic con il pulsante destro del mouse su Controllo WMI e scegliere ProprietÓ.
  4. Nella finestra di dialogo delle proprietÓ del controllo WMI scegliere la scheda Protezione.
  5. Espandere Principale, selezionare CIMV2, quindi scegliere Protezione.
  6. Nella finestra di dialogo Protezione scegliere Avanzate.
  7. Nella finestra di dialogo delle impostazioni del controllo di accesso fare clic su Aggiungi. Selezionare Nomecomputerlocale\ASPNET, quindi scegliere OK.
  8. Nella finestra di dialogo delle voci di autorizzazione assicurarsi che Applica a sia impostato su Questi spazio e sottospazi dei nomi.
  9. Assicurarsi che le caselle di controllo per l'abilitazione dell'account e per l'abilitazione remota siano selezionate.
  10. Scegliere OK in ciascuna finestra di dialogo fino a tornare alla finestra di dialogo delle proprietÓ del controllo WMI.
  11. Ripetere i passaggi da 5 a 10 per gli altri spazi dei nomi WMI a cui l'applicazione dovrÓ accedere.
  12. Riavviare IIS. Per effettuare questa operazione, eseguire IISRESET dalla riga di comando.
Per impostazione predefinita, in ASP.NET viene generata una password complessa con crittografia casuale per l'account ASPNET. Questa soluzione si rivela sicura purchÚ la password dell'account ASPNET non sia condivisa tra computer o reimpostata su un valore diverso da quello predefinito.

Interagire con il desktop

Quando i servizi IIS sono configurati per consentire l'interazione con il desktop, l'account ASPNET non dispone dei diritti appropriati per accedere al desktop a causa degli elenchi di controllo di accesso discrezionale (DACL) nell'oggetto finestra e nel desktop predefiniti. Gli amministratori possono modificare questi elenchi DACL oppure Ŕ possibile eseguire il processo con un account che abbia l'autorizzazione di accesso a tali oggetti.

Disinstallare ASP.NET

Quando si disinstalla ASP.NET, l'account ASPNET viene disabilitato e rimane nel sistema. ╚ possibile eliminare l'account ASPNET se non si desidera installare di nuovo ASP.NET.

Se si reinstalla ASP.NET dopo l'eliminazione esplicita dell'account ASPNET, viene creato un nuovo account ASPNET con un nuovo identificatore di protezione (SID). Di conseguenza, qualsiasi elenco di controllo di accesso (ACL) che faccia riferimento all'account ASPNET precedente non verrÓ pi¨ applicato al nuovo account ASPNET.

Riferimenti

Per ulteriori informazioni sugli elenchi di controllo di accesso (ACL) predefiniti in Windows 2000, vedere il seguente white paper Microsoft (informazioni in lingua inglese):
http://www.microsoft.com/windows2000/docs/SecDefs.doc
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
329290 Utilizzo dell'utilitÓ ASP.NET per crittografare credenziali e stringhe di connessione per lo stato delle sessioni
315158 FIX: ASP.NET non funziona con l'account ASPNET predefinito in un controller di dominio

ProprietÓ

Identificativo articolo: 317012 - Ultima modifica: lunedý 7 novembre 2005 - Revisione: 12.3
Le informazioni in questo articolo si applicano a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Chiavi:á
kbconfig kbhttpruntime kbinfo kbsecurity KB317012
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com