Attributs de protection de l'hôte et programmation de l'intégration CLR

Le Common Language Runtime (CLR) fournit un mécanisme pour annoter des interfaces de programmation d'applications (API) managées qui font partie du .NET Framework avec certains attributs qui peuvent intéresser un hôte du CLR, tel que SQL Server, à compter de SQL Server 2005. Voici quelques exemples d'attributs de protection de l'hôte (HPA, Host Protection Attribute) :

  • SharedState, qui indique si l'API expose la capacité à créer ou gérer l'état partagé (par exemple, champs de classe statique).

  • Synchronization, qui indique si l'API expose la capacité à effectuer la synchronisation entre des threads.

  • ExternalProcessMgmt, qui indique si l'API expose une méthode pour contrôler le processus hôte.

Étant donné ces attributs, SQL Server spécifie une liste de HPA rejetés dans l'environnement hébergé par le biais de la sécurité d'accès du code. Les spécifications de sécurité d'accès du code sont indiquées par l'un des trois jeux d'autorisations SQL Server : SAFE, EXTERNAL_ACCESS ou UNSAFE. L'un de ces trois niveaux de sécurité est spécifié lorsque l'assembly est inscrit sur le serveur, à l'aide de l'instruction CREATE ASSEMBLY. Le code exécuté dans les jeux d'autorisations SAFE ou EXTERNAL_ACCESS doit éviter certains types ou membres dont l'attribut System.Security.Permissions.HostProtectionAttribute est appliqué. Pour plus d'informations, consultez Création d'un assembly et Restrictions du modèle de programmation de l'intégration du CLR.

HostProtectionAttribute n'est pas tant une autorisation de sécurité qu'une façon d'améliorer la fiabilité, dans le sens où il identifie des constructions de code spécifiques, à savoir des types ou des méthodes, que l'hôte peut rejeter. L'utilisation de HostProtectionAttribute applique un modèle de programmation qui contribue à protéger la stabilité de l'hôte.

Attributs de protection de l'hôte

Les attributs de protection de l'hôte identifient des types ou des membres qui ne sont pas adaptés au modèle de programmation hôte et représentent les niveaux croissants suivants de menace en termes de fiabilité :

  • Sans gravité par ailleurs.

  • Susceptible de déstabiliser le code utilisateur géré par le serveur.

  • Susceptible de déstabiliser le processus serveur lui-même.

SQL Server rejette l'utilisation d'un type ou d'un membre qui a un HostProtectionAttribute qui spécifie une énumération avec une valeur System.Security.Permissions.HostProtectionResource de ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization ou UI. Cela empêche les assemblys d'appeler des membres qui activent l'état de partage, exécutent la synchronisation, peuvent entraîner une fuite de ressources ou affectent l'intégrité du processus SQL Server.

Types et membres rejetés

Les rubriques suivantes identifient les types et membres dont les valeurs HostProtectionResource sont rejetées par SQL Server.

Notes

Les listes dans ces rubriques ont été générées à partir des assemblys pris en charge de la version 2.0 SP1 du .NET Framework. Pour plus d'informations, consultez Bibliothèques .NET Framework prises en charge.

Dans cette section