Condividi tramite


Aggiornamento dei criteri di sicurezza

Aggiornamento: novembre 2007

I criteri di sicurezza predefiniti non contemplano l'esistenza di un'autorizzazione personalizzata. Il set di autorizzazioni denominato Everything, ad esempio, contiene tutte le autorizzazioni di accesso al codice incorporate fornite dall'ambiente di esecuzione, ma non contiene alcuna autorizzazione personalizzata. Per aggiornare i criteri di sicurezza in modo che contemplino anche l'autorizzazione personalizzata, è necessario effettuare tre operazioni:

  • Aggiornare i criteri specificando l'esistenza dell'autorizzazione personalizzata.

  • Aggiungere l'assembly all'elenco degli assembly attendibili.

  • Aggiornare i criteri di sicurezza specificando quale codice otterrà l'autorizzazione personalizzata.

Aggiornamento dei criteri in base all'esistenza dell'autorizzazione personalizzata

Per aggiornare i criteri specificando l'esistenza dell'autorizzazione personalizzata, è necessario:

  • Creare un nuovo set di autorizzazioni denominato che includa l'autorizzazione personalizzata. Per ottenere questo risultato è anche possibile modificare un set di autorizzazioni denominato esistente.

  • Specificare un nome per il set di autorizzazioni.

  • Aggiornare i criteri di sicurezza specificando l'esistenza del set di autorizzazioni denominato.

Per ulteriori informazioni, vedere Strumento criteri di sicurezza dall'accesso di codice (Caspol.exe) o Strumento .NET Framework Configuration. È possibile aggiungere un nuovo set di autorizzazioni in vari modi. Se si utilizza lo Strumento criteri di sicurezza dall'accesso di codice (Caspol.exe), è possibile creare un file XML contenente una rappresentazione XML di un set di autorizzazioni personalizzato e aggiungerlo ai criteri di sicurezza presenti nel computer sul quale verrà eseguito il codice. Se si utilizza lo strumento .NET Framework Configuration (Mscorcfg.msc), è possibile copiare un set di autorizzazioni esistente e aggiungere alla copia una rappresentazione XML di un'autorizzazione.

Per assicurare che la rappresentazione XML sia valida e rappresenti correttamente l'autorizzazione, è possibile generarla utilizzando un codice analogo a quello riportato nell'esempio seguente. Mediante questo codice viene creata un'autorizzazione personalizzata denominata MyCustomPermission e inizializzata allo stato senza restrizioni ("unrestricted"). Se l'autorizzazione personalizzata non implementa IUnrestrictedPermission oppure non si desidera impostare i criteri in modo che l'autorizzazione venga concessa in uno stato senza restrizioni, utilizzare il costruttore per inizializzare l'autorizzazione allo stato desiderato.

Imports System
Imports System.IO
Imports System.Security
Imports System.Security.Permissions

Class PSetXML
   Public Shared Sub Main()
      Dim perm As New MyCustomPermission(PermissionState.Unrestricted)
      Dim pset As New NamedPermissionSet("MyPermissionSet", PermissionState.None)
      pset.Description = "Permission set containing my custom permission"
      pset.AddPermission(perm)
      Dim file As New StreamWriter("mypermissionset.xml")
      file.Write(pset.ToXml())
      file.Close()
   End Sub
End Class
using System;
using System.IO;
using System.Security;
using System.Security.Permissions;

class PSetXML {
   public static void Main() 
   {
   MyCustomPermission perm = 
    new MyCustomPermission(PermissionState.Unrestricted);
   NamedPermissionSet pset = 
    new NamedPermissionSet("MyPermissionSet", PermissionState.None);
   pset.Description = "Permission set containing my custom permission";
   pset.AddPermission(perm);
   StreamWriter file = new StreamWriter("mypermissionset.xml");
   file.Write(pset.ToXml());
   file.Close();
   }
}

Una volta creato il file XML contenente il set di autorizzazioni, lo si può aggiungere ai criteri di sicurezza. Per utilizzare Caspol.exe, digitare quanto segue nella riga di comando:

caspol –machine –addpset mypermissionset.xml

Quando verrà richiesto se si desidera aggiungere l'assembly contenente l'autorizzazione personalizzata all'elenco degli assembly attendibili, digitare yes.

Per aggiungere il file XML contenente il set di autorizzazioni mediante lo strumento .NET Framework Configuration, selezionare il nodo Criteri di sicurezza runtime, quindi il livello di criteri che si desidera modificare. Fare clic con il pulsante destro del mouse su Set di autorizzazioni e scegliere Nuovo. Utilizzare la procedura guidata per aggiungere il set di autorizzazioni.

Aggiunta dell'assembly all'elenco degli assembly attendibili

Poiché l'autorizzazione personalizzata farà parte del sistema di sicurezza di .NET Framework, è necessario che sia completamente attendibile, così come richiesto per qualsiasi codice su cui si basi il sistema di sicurezza. Per ottenere l'attendibilità completa per l'assembly, è necessario aggiungerlo all'elenco degli assembly attendibili. Una volta aggiunto l'assembly all'elenco utilizzando lo strumento Caspol.exe come descritto in precedenza, sarà anche necessario aggiungervi ogni altro assembly cui la classe di autorizzazioni faccia riferimento. Per aggiungere ulteriori assembly all'elenco mediante Caspol.exe, digitare quanto segue nella riga di comando:

caspol -addfulltrust mypermissionset.dll

Per visualizzare l'elenco degli assembly attendibili, utilizzare il seguente comando:

caspol -listfulltrust

Poiché l'assembly dell'autorizzazione personalizzata e tutti quelli cui essa fa riferimento saranno considerati completamente attendibili dal sistema di sicurezza, è importante che questi file siano firmati con un nome sicuro crittografato. Gli assembly privi di un nome sicuro non verranno aggiunti all'elenco di attendibilità totale.

Per aggiungere un assembly all'elenco degli assembly completamente attendibili mediante lo strumento .NET Framework Configuration fare clic con il pulsante destro del mouse sul nodo Criteri di sicurezza runtime e selezionare Assembly attendibile. Utilizzare la procedura guidata per dichiarare l'assembly attendibile.

Attenzione Se l'assembly in cui è implementato l'oggetto di sicurezza personalizzato fa riferimento ad altri assembly, aggiungere innanzitutto gli assembly cui si fa riferimento all'elenco di quelli totalmente attendibili. Gli oggetti di sicurezza personalizzati creati con Visual Basic, Visual C++ o JScript fanno riferimento rispettivamente a Microsoft.VisualBasic.dll, Microsoft.VisualC.dll o Microsoft.JScript.dll. Per impostazione predefinita, questi assembly non sono contenuti nell'elenco degli assembly totalmente attendibili, per cui è necessario aggiungere l'assembly appropriato all'elenco prima di aggiungere un oggetto di sicurezza personalizzato. Se questa operazione non riesce si verificheranno problemi nel sistema di sicurezza, provocando il mancato caricamento di tutti gli assembly. In questa situazione, l'opzione -all -reset di Caspol.exe non è in grado di ripristinare la sicurezza. Per ripristinare la sicurezza, modificare manualmente i file di sicurezza per rimuovere l'oggetto di sicurezza personalizzato.

Impostazione dei criteri per la concessione dell'autorizzazione personalizzata

È necessario che il nuovo set di autorizzazioni sia associato ai gruppi di codice appropriati perché i criteri di sicurezza concedano l'autorizzazione personalizzata al codice che ne disporrà. Per ottenere questo risultato, è necessario modificare un gruppo di codice esistente o aggiungere un nuovo gruppo di codice che identifichi l'insieme di codice a cui è necessario concedere l'autorizzazione personalizzata. Per ulteriori informazioni sui gruppi di codice, vedere Criteri di sicurezza. Utilizzare il seguente comando di Caspol.exe per specificare mypermissionset come il set delle autorizzazioni concesse al codice che soddisfa la condizione di appartenenza al gruppo di codice LocalIntranet:

caspol -user -chggroup 1.2. mypermissionset

Nell'esempio, l'etichetta 1.2 rappresenta il gruppo di codice LocalIntranet. Per visualizzare tutti i gruppi di codice e le etichette a essi associate, utilizzare il seguente comando:

caspol -list

Per visualizzare l'elenco dei set di autorizzazioni, utilizzare il seguente comando:

caspol -listpset

Per specificare mypermissionset come il set di autorizzazioni concesso ai membri del gruppo di codice LocalIntranet utilizzando lo strumento .NET Framework Configuration, selezionare il nodo Criteri di sicurezza runtime, quindi i criteri Computer. Fare clic con il pulsante destro del mouse sul nodo LocalIntranet_Zone e scegliere Proprietà. Modificare il set di autorizzazioni nella scheda Set di autorizzazioni.

Vedere anche

Concetti

Creazione di autorizzazioni personalizzate di accesso al codice

Criteri di sicurezza

Riferimenti

Strumento criteri di protezione dall'accesso di codice (Caspol.exe)

Strumento .NET Framework Configuration (Mscorcfg.msc)

IUnrestrictedPermission

Altre risorse

Protezione dall'accesso di codice