Mise à jour de la stratégie de sécurité
La stratégie de sécurité par défaut ne connaît pas l'existence d'une autorisation personnalisée. Par exemple, le jeu d'autorisations nommé Everything contient toutes les autorisations d'accès du code intégrées que le runtime fournit mais ne comprend aucune autorisation personnalisée. Pour mettre à jour la stratégie de sécurité de sorte qu'elle connaisse votre autorisation personnalisée, vous devez faire trois choses :
Informer la stratégie de votre autorisation personnalisée.
Ajouter l'assembly à la liste des assemblys de confiance.
Indiquer à la stratégie de sécurité le code qui doit être accordé à votre autorisation personnalisée.
Informer la stratégie de votre autorisation personnalisée
Pour informer la stratégie de votre autorisation personnalisée, vous devez :
Créer un nouveau jeu d'autorisations nommé comprenant votre autorisation personnalisée. (Vous pouvez modifier un jeu d'autorisations nommé existant au lieu d'en créer un nouveau.)
Donner un nom au jeu d'autorisations.
Indiquer à la stratégie de sécurité que le jeu d'autorisations nommé existe.
Pour plus d'informations, consultez Outil Code Access Security Policy Tool (Caspol.exe) ou Outil .NET Framework Configuration Tool (Mscorcfg.msc). Vous pouvez ajouter un nouveau jeu d'autorisations de plusieurs façons. À l'aide de l'outil Code Access Security Policy Tool (Caspol.exe), vous pouvez créer un fichier .xml qui contient une représentation XML d'un jeu d'autorisations personnalisé puis ajouter ce fichier à la stratégie de sécurité sur l'ordinateur où le code doit s'exécuter. À l'aide de l'outil .NET Framework Configuration Tool (Mscorcfg.msc), vous pouvez copier un jeu d'autorisations existant et ajouter une représentation XML d'une autorisation au nouveau jeu d'autorisations.
Pour vous assurer que votre représentation XML est valide et représente correctement votre autorisation, vous pouvez la générer à l'aide du code similaire à l'exemple qui suit. Notez que ce code crée une autorisation personnalisée appelée MyCustomPermission
, initialisée à l'état illimité. Si votre autorisation personnalisée n'implémente pas IUnrestrictedPermission ou si vous ne souhaitez pas définir la stratégie afin d'accorder votre autorisation de manière illimitée, utilisez le constructeur pour initialiser votre autorisation à l'état que vous souhaitez qu'elle ait.
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();
}
}
Après avoir créé le fichier .xml contenant votre jeu d'autorisations, vous pouvez l'ajouter à la stratégie de sécurité. Pour utiliser Caspol.exe, tapez ce qui suit sur la ligne de commande :
caspol –machine –addpset mypermissionset.xml
Lorsque Caspol.exe demande si vous souhaitez ajouter l'assembly contenant votre autorisation personnalisée à la liste des assemblys de confiance, tapez oui.
Pour ajouter le fichier .xml contenant votre jeu d'autorisations à l'aide de l'outil .NET Framework Configuration Tool, sélectionnez le nœud Stratégie de sécurité du runtime puis le niveau de stratégie que vous souhaitez modifier. Cliquez avec le bouton droit sur Jeux d'autorisations, puis choisissez Nouveau. Utilisez l'Assistant pour ajouter le jeu d'autorisations.
Ajout de l'assembly à la liste des assemblys de confiance
Étant donné que votre autorisation personnalisée participera au système de sécurité .NET Framework, elle doit avoir un niveau de confiance suffisant (comme tout code sur lequel le système de sécurité repose). Vous obtenez le niveau de confiance suffisant pour votre assembly en l'ajoutant à la liste des assemblys de confiance. Après avoir ajouté l'assembly de votre autorisation personnalisée à la liste à l'aide de Caspol.exe (comme décrit précédemment), vous devez également ajouter les assemblys que votre classe d'autorisations référence. Pour ajouter des assemblys supplémentaires à la liste à l'aide de Caspol.exe, tapez ce qui suit sur la ligne de commande :
caspol -addfulltrust mypermissionset.dll
Pour voir la liste des assemblys ayant un niveau de confiance suffisant, utilisez la commande suivante :
caspol -listfulltrust
Puisque le système de sécurité aura un niveau de confiance suffisant en l'assembly de votre autorisation personnalisée (ainsi que les assemblys qu'il référence), il est important que ces fichiers soient signés par un nom fort d'un point de vue du chiffrement. Caspol.exe n'ajoutera pas un assembly à la liste ayant un niveau de confiance suffisant s'il n'a pas un nom fort.
Pour ajouter un assembly à la liste des assemblys ayant un niveau de confiance suffisant à l'aide de l'outil .NET Framework Configuration Tool, cliquez avec le bouton droit sur le nœud Stratégie de sécurité du runtime et sélectionnez Faire confiance à l'assembly. Utilisez l'Assistant pour faire confiance à l'assembly.
Attention Si l'assembly qui implémente l'objet de sécurité personnalisé fait référence à d'autres assemblys, vous devez d'abord ajouter les assemblys référencés à la liste des assemblys d'un niveau de confiance suffisant. Les objets de sécurité personnalisés créés à l'aide de Visual Basic, Visual C++ ou JScript référencent Microsoft.VisualBasic.dll, Microsoft.VisualC.dll ou Microsoft.JScript.dll, respectivement. Ces assemblys ne sont pas par défaut dans la liste des assemblys de confiance totale. Vous devez ajouter l'assembly approprié à la liste d'un niveau de confiance suffisant avant d'ajouter un objet de sécurité personnalisé. Dans le cas contraire, vous risquez de perturber le système de sécurité et de provoquer l'échec du chargement de tous les assemblys. Dans ce cas, l'option -all -reset de l'exécutable Caspol.exe ne corrigera pas la sécurité. Pour corriger la sécurité, vous devez manuellement modifier les fichiers de sécurité pour supprimer l'objet de sécurité personnalisé.
Définition de la stratégie d'octroi de votre autorisation personnalisée
Vous devez associer votre nouveau jeu d'autorisations aux groupes de codes appropriés de sorte que la stratégie de sécurité octroie l'autorisation personnalisée au code qui doit la recevoir. Pour cela, modifiez un groupe de codes existant ou ajoutez un nouveau groupe de codes identifiant le jeu de code qui doit recevoir votre autorisation personnalisée. Pour plus d'informations concernant les groupes de codes, consultez Stratégie de sécurité. Utilisez la commande Caspol.exe suivante pour octroyer le jeu d'autorisations mypermissionset
à du code conforme à la condition d'appartenance du groupe de codes LocalIntranet :
caspol -user -chggroup 1.2. mypermissionset
Dans cet exemple, l'étiquette 1.2
représente le groupe de codes LocalIntranet. Pour afficher tous les groupes de codes et leurs étiquettes associées, utilisez la commande suivante :
caspol -list
Pour voir la liste des jeux d'autorisations, utilisez la commande suivante :
caspol -listpset
Pour octroyer le jeu d'autorisations mypermissionset
aux membres du groupe de codes LocalIntranet à l'aide de l'outil .NET Framework Configuration Tool, sélectionnez le nœud Stratégie de sécurité du runtime puis sélectionnez la stratégie Machine. Cliquez avec le bouton droit sur le nœud LocalIntranet_Zone puis sélectionnez Propriétés. Modifiez le jeu d'autorisations à l'aide de l'onglet Jeu d'autorisations.
Voir aussi
Référence
Outil Code Access Security Policy Tool (Caspol.exe)
Outil .NET Framework Configuration (Mscorcfg.msc)
IUnrestrictedPermission Interface
Concepts
Création de vos propres autorisations d'accès du code
Stratégie de sécurité