Fichiers de stratégie et niveaux de confiance ASP.NET

Les niveaux de confiance sont associés aux fichiers de stratégie à l'aide de l'élément de configuration <securityPolicy>, valide uniquement dans un fichier de configuration (Web.config) de niveau site. Vous pouvez supprimer ou ajouter des niveaux de confiance par l'ajout d'entrées à la section de configuration spécifiant le nom de niveau de confiance et le fichier de stratégie à utiliser. Les fichiers de confiance par défaut sont installés dans le répertoire Config sous le dossier contenant le fichier Aspnet_isapi.dll. Il s'agit du même emplacement que celui utilisé pour le fichier de configuration Machine.config et le fichier de stratégie de la sécurité du runtime.

Le niveau de confiance Full est un cas spécial. Comme il revient à disposer d'une confiance totale dans la zone de l'ordinateur local, l'hôte ASP.NET n'applique pas de stratégie supplémentaire à ces applications. Par conséquent, le niveau de confiance Full est mappé à un gestionnaire interne et ASP.NET n'ajoute pas de stratégie supplémentaire au domaine d'application pour des applications de confiance totale.

L'exemple suivant illustre la section securityPolicy d'un fichier de configuration qui mappe des niveaux de confiance à différents fichiers de stratégie.

<system.web>
    <securityPolicy>
    <trustLevel name="Full"    policyFile="internal"/>
    <trustLevel name="High"    policyFile="web_hightrust.config"/>
    <trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>
    <trustLevel name="Low"     policyFile="web_lowtrust.config"/>
    <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
    </securityPolicy>
</system.web>

Si vous ne souhaitez pas que les applications puissent spécifier leur propre niveau de confiance, vous pouvez spécifier une directive < location > et affecter à l'attribut allowOverride la valeur false. Vous pouvez le faire sur un serveur qui héberge plusieurs applications et qui doit limiter le niveau de confiance des applications hébergées.

Modification des fichiers de niveau de confiance

Vous pouvez modifier les fichiers de stratégie ou en créer de nouveaux avec des jeux d'autorisations personnalisés. Par exemple, vous pouvez copier le contenu du fichier Web_hightrust.config et assigner l'autorisation pour établir des connexions OLEDB en ajoutant d'abord la classe OleDbPermission à la section SecurityClasses du fichier de stratégie, comme le montre l'exemple de code suivant.

<SecurityClass Name="OleDbPermission" 
    Description="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, 
    Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

Vous pouvez ensuite spécifier les paramètres du OleDbPermission spécifié, y compris les restrictions pour les chaînes de connexion OLEDB. Ensuite, vous pouvez spécifier quels jeux d'autorisations incluent la classe de sécurité OleDbPermission en ajoutant un élément IPermission à l'élément PermissionSet avec un nom d' ASP.NET dans le fichier de stratégie de confiance. Par exemple, l'exemple de code suivant spécifie que la seule connexion OLEDB autorisée accordera un accès illimité à la base de données Access Catalog.mdb.

<PermissionSet
  class="NamedPermissionSet"
  version="1"
  Name="ASP.Net">
  <IPermission
    class="OleDbPermission"
    version="1"
    Unrestricted="true" />
</PermissionSet>

Certaines autorisations, telles que OleDbPermission, vous permettent de spécifier des restrictions supplémentaires qui restreignent l'accès accordé ou refusé. Par exemple, l'autorisation OleDbPermission vous permet d'accorder un accès pour établir des connexions à l'aide du fournisseur de données .NET Framework pour OLEDB, mais avec des restrictions concernant les chaînes de connexion OLEDB autorisées. L'exemple de code suivant spécifie que seules les connexions OLEDB autorisées aux bases de données Access sont autorisées.

<IPermission class="OleDbPermission" version="1">
    <add ConnectionString=
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\access_data\catalog.mdb""
        KeyRestrictions=""data source=;user id=;password=;" 
        KeyRestrictionBehavior="AllowOnly"/>
</IPermission>

Vous pouvez enregistrer votre fichier de stratégie de confiance mis à jour et le mettre à la place du fichier Web_hightrust.config actuel ou vous pouvez créer un nouveau fichier de stratégie de confiance et en faire le fichier de stratégie pour le niveau de confiance High ou bien créer un nouveau niveau de confiance, comme le montre l'exemple de code suivant.

    <trustLevel name="HighCustom"
    policyFile="web_highcustom.config"/>

Pour conserver les paramètres par défaut, ASP.NET inclut deux copies de chaque fichier contenant des paramètres de niveau de confiance. Une copie porte l'extension de nom de fichier .config, comme précédemment illustré dans la section de configuration. Le fichier .config contient les paramètres de chaque niveau de confiance utilisé par le système. La seconde copie porte l'extension de nom de fichier .config .default et contient les paramètres par défaut du niveau de confiance associé. Si les paramètres de niveau de confiance actuels ont été modifiés et que vous souhaitez restaurer les paramètres par défaut, vous pouvez remplacer le contenu du fichier .config par le contenu du fichier .config.default.

Pour une description plus détaillée de la gestion d'un fichier de stratégie de confiance, consultez « How To: Use Medium Trust in ASP.NET 2.0 » sur Patterns and Practices (PAG): Security Guidance for Applications.

Voir aussi

Concepts

Mécanismes de stratégie ASP.NET

Autres ressources

Sécurité des applications Web ASP.NET