Restrizioni di accesso alle risorse in base ai livelli di attendibilità di sicurezza
Questo argomento descrive le restrizioni di accesso ai tipi di risorse esposti dallo spazio dei nomi System.Transactions.
Nello spazio dei nomi System.Transactions esistono tre livelli principali di attendibilità. I livelli di attendibilità sono definiti in base ai tipi di risorse esposti dallo spazio dei nomi System.Transactions e in base al livello di attendibilità necessario ad accedere a tali risorse. Le risorse a cui lo spazio dei nomi System.Transactions consente di accedere sono la memoria di sistema, le risorse a livello di processo condivise e le risorse a livello di sistema. I livelli sono i seguenti:
AllowPartiallyTrustedCallers (APTCA) per le applicazioni che usano transazioni all'interno di un solo dominio dell'applicazione.
DistributedTransactionPermission (DTP) per le applicazioni che usano transazioni distribuite.
Per le risorse durevoli, le applicazioni di gestione della configurazione e le applicazioni di interoperabilità legacy.
Nota
Evitare di utilizzare contesti rappresentati per chiamare le interfacce di integrazione.
Livelli di attendibilità
AllowPartiallyTrustedCallers (attendibilità parziale)
L'assembly System.Transactions può essere chiamato da codice parzialmente attendibile in quanto è stato contrassegnato con l'attributo AllowPartiallyTrustedCallers (APTCA). Questo attributo sostanzialmente rimuove il flag implicito LinkDemand dal set di autorizzazioni FullTrust che altrimenti viene assegnato automaticamente a ogni metodo accessibile pubblicamente di ogni tipo. Tuttavia, alcuni tipi e membri richiedono comunque autorizzazioni di livello superiore.
L'attributo APTCA consente alle applicazioni di utilizzare transazioni in un contesto di attendibilità parziale all'interno di un solo dominio applicazione. Ciò consente di utilizzare le transazioni per cui non è stata eseguita l'escalation nonché le integrazioni volatili allo scopo di eseguire la gestione degli errori. Si consideri ad esempio un'applicazione che utilizza una tabella hash transazionale. I dati possono essere aggiunti e rimossi dalla tabella hash mediante un'unica transazione. Se in seguito viene eseguito il rollback della transazione, tutte le modifiche apportate alla tabella hash tramite tale transazione possono essere annullate.
DistributedTransactionPermission
Quando viene eseguita l'escalation di una transazione dello spazio dei nomi System.Transactions in modo che venga gestita mediante il gestore MSDTC, lo spazio dei nomi System.Transactions richiede l'autorizzazione DistributedTransactionPermission per creare la transazione distribuita. Ciò significa che il codice che ha causato l'escalation della transazione (ad esempio tramite la serializzazione o l'aggiunta di integrazioni durevoli) deve disporre dell'autorizzazione DTP. Non è necessario che il codice che ha creato la transazione dello spazio dei nomi System.Transactions disponga di questa autorizzazione.
FullTrust (attendibilità totale)
Questo livello di autorizzazione viene utilizzato per applicare restrizioni alle applicazioni che modificano risorse durevoli. In caso di errore, l'applicazione deve essere in grado di interagire con la gestione transazioni per eseguire il ripristino allo scopo di determinare il risultato finale della transazione e quindi aggiornare i dati definitivi. Questo tipo di applicazione è detto gestore di risorse durevole. Un classico esempio di questo tipo di applicazione è SQL.
Per consentire il ripristino, questo tipo di applicazione è in grado di utilizzare le risorse di sistema in modo definitivo. Ciò è dovuto al fatto che il gestore delle transazioni recuperabili deve ricordare le transazioni di cui è stato eseguito il commit finché non è in grado di confermare che tutti i gestori di risorse durevoli integrati nella transazione siano stati informati in merito al risultato. Pertanto, questo tipo di applicazione richiede attendibilità totale e deve essere eseguito solo se dispone del livello di attendibilità FullTrust.
Per altre informazioni sulle integrazioni durevoli e sul ripristino, vedere gli argomenti Integrazione di risorse come partecipanti a una transazione ed Esecuzione del ripristino.
L'autorizzazione FullTrust deve essere concessa anche alle applicazioni che eseguono operazioni di interoperabilità legacy con COM+.
Di seguito è riportato un elenco di tipi e membri che non possono essere chiamati da codice parzialmente attendibile in quanto contrassegnati con l'attributo di sicurezza dichiarativa FullTrust:
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
Solo il chiamante immediato è tenuto a disporre del set di autorizzazioni FullTrust per poter usare i tipi o i metodi elencati sopra.