Condividi tramite


Autorizzazioni per l'accesso di codice e protezione in .NET Framework con Visual Basic

Aggiornamento: novembre 2007

In .NET Framework, la protezione dell'accesso al codice limita l'accesso alle risorse e alle operazioni protette. È necessario che ogni applicazione basata su Common Language Runtime interagisca con il relativo sistema di protezione. L'applicazione viene valutata al momento dell'esecuzione e a tale applicazione viene concesso un set di autorizzazioni. A seconda delle autorizzazioni ricevute, l'applicazione viene eseguita correttamente o genera un'eccezione di protezione.

Le autorizzazioni attribuite al codice verranno quindi controllate dalle impostazioni di protezione locali di un particolare computer. Dal momento che tali impostazioni possono variare da un computer all'altro, non è mai possibile avere la certezza che al codice creato vengano assegnate le autorizzazioni sufficienti per l'esecuzione, Per ulteriori informazioni, vedere Nozioni fondamentali sulla protezione dall’accesso di codice.

Autorizzazioni di accesso al codice

Gli oggetti relativi alle autorizzazioni di accesso al codice sono utilizzati per proteggere risorse e operazioni da utenti non autorizzati. Rappresentano una parte fondamentale del meccanismo di Common Language Runtime volto ad applicare le restrizioni di protezione sul codice gestito.

Le autorizzazioni di accesso al codice consentono all'utente di accedere a una risorsa protetta, ad esempio un file, oppure di eseguire un'azione protetta, quale l'accesso al codice gestito. Tutte le autorizzazioni di accesso al codice possono essere richieste dal codice mentre l'eventuale concessione è determinata dal runtime. Ogni autorizzazione di accesso al codice deriva dalla classe CodeAccessPermission e pertanto le autorizzazioni hanno metodi comuni: Assert, Demand, Deny, PermitOnly, IsSubSetOf, Intersect e Union.

Autorizzazioni fornite da .NET Framework

Nella tabella sono illustrate le autorizzazioni di accesso al codice fornite da .NET Framework.

Classe autorizzazione

Operazioni consentite

AspNetHostingPermission

Accesso alle risorse in ambienti host ASP.NET.

DirectoryServicesPermission

Accesso alle classi System.DirectoryServices.

DnsPermission

Accesso ai server DNS (Domain Name System) in una rete.

EnvironmentPermission

Lettura o scrittura in variabili di ambiente.

EventLogPermission

Lettura o scrittura nei servizi del log eventi.

FileDialogPermission

Lettura o scrittura in file mediante una finestra di dialogo Apri.

FileIOPermission

Lettura o scrittura in file o directory.

IsolatedStorageFilePermission

Lettura o scrittura in file o directory nell'archiviazione isolata.

MessageQueuePermission

Accesso a code di messaggi mediante le interfacce gestite di Message Queuing (detto anche MSMQ).

OdbcPermission

Accesso alle origini dati ODBC (Open Database Connectivity).

OleDbPermission

Accesso a database tramite OLE DB.

OraclePermission

Accesso a database di Oracle.

PerformanceCounterPermission

Accesso a contatori delle prestazioni.

PrintingPermission

Accesso alle stampanti.

ReflectionPermission

Determinazione delle informazioni su un tipo in fase di esecuzione.

RegistryPermission

Lettura, scrittura, creazione o eliminazione di chiavi e valori del Registro di sistema.

SecurityPermission

Esecuzione, asserzione di autorizzazioni, chiamata nel codice non gestito, omissione della verifica e altri diritti correlati alla protezione.

ServiceControllerPermission

Accesso a servizi in esecuzione o inattivi.

SocketPermission

Creazione o accettazione di connessioni su un indirizzo di trasporto.

SqlClientPermission

Accesso a database di SQL.

UIPermission

Accesso alle funzionalità dell'interfaccia utente.

WebPermission

Creazione o accettazione di connessioni su un indirizzo Web.

Creazione di autorizzazioni personalizzate

In .NET Framework viene fornito un insieme di classi di autorizzazioni per l'accesso al codice progettate per proteggere un gruppo specifico di risorse e operazioni, sulla base delle risorse esposte da .NET Framework. Le autorizzazioni di accesso al codice incorporate sono adatte alla maggior parte degli ambienti operativi. In alcune situazioni tuttavia potrebbe essere consigliabile definire una classe personalizzata di autorizzazioni per l'accesso al codice. Per ulteriori informazioni, vedere Creazione di autorizzazioni personalizzate di accesso al codice.

Permessi di identità

I permessi di identità rappresentano caratteristiche che identificano un assembly. Common Language Runtime concede autorizzazioni di identità a un assembly se caricato, sulla base delle informazioni ottenute su di esso. Per ulteriori informazioni, vedere Permessi di identità.

Autorizzazioni basate sui ruoli

Le applicazioni aziendali offrono spesso un accesso a dati o risorse basato su credenziali fornite dall'utente. Queste applicazioni controllano in genere il ruolo di un utente e consentono l'accesso alle risorse sulla base di tale ruolo. Common Language Runtime fornisce il supporto dell'autorizzazione basata sui ruoli tramite account Windows o identità personalizzate. Per ulteriori informazioni, vedere Sicurezza basata sui ruoli.

Attività di protezione

Nella tabella riportata di seguito sono elencate le attività associate alle autorizzazioni e alla protezione.

Per

Vedere

Richiedere l'autorizzazione per l'accesso al codice non gestito

Procedura: richiedere l'autorizzazione di accesso a codice non gestito

Richiedere le autorizzazioni opzionali

Procedura: richiedere le autorizzazioni facoltative tramite il flag RequestOptional

Richiedere l'autorizzazione per un set di autorizzazioni denominato

Procedura: richiedere l'autorizzazione per un set di autorizzazioni denominato

Richiedere le autorizzazioni codificate in XML

Richiesta di autorizzazioni codificate in XML

Rifiutare le autorizzazioni

Procedura: rifiutare le autorizzazioni mediante il flag RequestRefuse

Eseguire un controllo di protezione imperativo

Procedura: eseguire controlli di protezione imperativi

Eseguire un controllo di protezione dichiarativo

Esecuzione di controlli di protezione dichiarativi

Eseguire l'override di un controllo di protezione

Override dei controlli di protezione

Condividere una libreria con codice parzialmente attendibile

Condivisione di una libreria con codice parzialmente attendibile

Richiedere l'attendibilità completa per i tipi all'interno dell'assembly AllowPartiallyTrustedCallersAttribute

Necessità di un livello di attendibilità totale per i tipi interni a un assembly AllowPartiallyTrustedCallersAttribute

Creare gli oggetti WindowsIdentity e WindowsPrincipal

Procedura: creare un oggetto WindowsPrincipal

Creare gli oggetti GenericPrincipal e GenericIdentity

Procedura: creare oggetti GenericPrincipal e GenericIdentity

Modello dei criteri di protezione di .NET Framework

Il modello dei criteri di protezione di .NET Framework è composto dai cinque elementi riportati di seguito.

  • Livelli dei criteri di protezione: azienda, computer, utente e dominio applicazione.

  • Gruppi di codice esistenti come gerarchia interna ai livelli di criteri relativi all'azienda, al computer e all'utente.

  • Set di autorizzazioni denominati associati a ciascun gruppo di codice.

  • Prova che fornisce informazioni sull'identità del codice.

  • Host di domini applicazione, che forniscono a Common Language Runtime la prova relativa al codice.

Livelli dei criteri di protezione

In .NET Framework vengono forniti quattro livelli di criteri di protezione che consentono di calcolare le autorizzazioni concesse a un assembly o a un dominio applicazione. Ogni livello contiene la propria gerarchia di gruppi di codice e di set di autorizzazioni. Il runtime calcola il set di autorizzazioni consentito come somma delle autorizzazioni consentite da tutti i livelli partecipanti nei criteri

Di seguito sono descritti i livelli disponibili.

  • Criteri aziendali. Vengono applicati a tutto il codice gestito in uno scenario aziendale, in presenza della distribuzione di un file di configurazione aziendale.

  • Criteri a livello di computer. Vengono applicati a tutto il codice gestito presente nel computer.

  • Criteri a livello di utente. Vengono applicati al codice presente in tutti i processi associati all'utente corrente del sistema operativo all'avvio di Common Language Runtime.

  • Criteri a livello di dominio applicazione. Vengono applicati al codice gestito presente nel dominio applicazione dell'host.

Per ulteriori informazioni, vedere Livelli dei criteri di protezione.

Gruppi di codice

Un gruppo di codice è un raggruppamento logico di codice la cui appartenenza è soggetta a una specifica condizione. Ogni codice che soddisfa la condizione di appartenenza è incluso nel gruppo. Ai gruppi di codice sono associati set di autorizzazioni che vengono valutati durante una concessione di criteri. Per ulteriori informazioni, vedere Gruppi di codice.

Set di autorizzazioni denominati

Un set di autorizzazioni denominato è un set di autorizzazioni che gli amministratori possono associare a un gruppo di codice. Esso consiste almeno di un'autorizzazione e di un nome e di una descrizione per il set stesso. A un determinato set di autorizzazioni possono essere associati più gruppi di codice.

Nella tabella sono illustrati i set di autorizzazioni denominati forniti da Common Language Runtime.

Nome

Descrizione

Nothing

Nessuna autorizzazione. Il codice non può essere eseguito.

Execution

Autorizzazione all'esecuzione, ma non all'utilizzo di risorse protette.

Internet

Set di autorizzazioni di criteri predefinito adatto a contenuto di origine sconosciuta.

Local Intranet

Set di autorizzazioni di criteri predefinito all'interno di un'azienda.

Everything

Tutte le autorizzazioni standard (incorporate), tranne l'autorizzazione a ignorare la verifica.

FullTrust

Accesso completo a tutte le risorse.

Per ulteriori informazioni, vedere Set di autorizzazioni denominati.

Evidenza

L'evidenza costituisce le informazioni che Common Language Runtime utilizza per effettuare decisioni sulla base dei criteri di protezione. La prova indica al runtime che il codice presenta una particolare caratteristica e può includere la directory dell'applicazione, l'editore, il sito e l'URL. Per ulteriori informazioni, vedere Evidenza.

Host di domini applicazione

Ogni applicazione .NET Framework viene eseguita in un dominio applicazione sotto il controllo di un host che crea il dominio applicazione e ne carica all'interno gli assembly. I domini applicazione possono includere:

  • Host browser. Eseguire il codice all'interno del contesto di un sito Web.

  • Host progettati in modo personalizzato. Creare domini e caricare assembly, compresi gli assembly dinamici, nei domini.

  • Host server. Eseguire il codice che gestisce le richieste inviate a un server.

  • Host della shell. Avviare applicazioni (file EXE) dalla shell.

Nella tabella sono elencate le attività relative ai domini applicazione:

Per

Vedere

Creare un dominio applicazione

Procedura: creare un dominio applicazione

Impostare i criteri di protezione a livello di dominio applicazione

Impostazione dei criteri di protezione a livello di dominio applicazione

Configurare un dominio applicazione

Procedura: configurare un dominio applicazione

Chiamare le funzioni in un determinato dominio applicazione

Calling Functions in a Specific Application Domain

Recuperare le informazioni di installazione da un dominio applicazione

Recupero di informazioni di installazione da un dominio applicazione

Scaricare un dominio applicazione

Procedura: scaricare un dominio applicazione

Per ulteriori informazioni, vedere AppDomain, Host di domini applicazione e Programmazione con i domini applicazione.

Vedere anche

Attività

Risoluzione dei problemi relativi alle eccezioni di protezione dall'accesso di codice

Concetti

Isolamento in base all'utente, al dominio e all'assembly

Altre risorse

Configurazione dei criteri di protezione mediante lo strumento .NET Framework Configuration (Mscorcfg.msc)

Configurazione dei criteri di protezione tramite lo Strumento criteri di protezione dall'accesso di codice (Caspol.exe)