Autorisations et sécurité d'accès au code dans le .NET Framework avec Visual Basic
Mise à jour : novembre 2007
Dans le .NET Framework, la sécurité d'accès de code limite l'accès du code aux ressources et aux opérations protégées. Chaque application qui cible le Common Language Runtime doit interagir avec le système de sécurité du runtime. Lorsqu'une application est exécutée, elle est automatiquement évaluée et reçoit un jeu d'autorisations de la part du runtime. En fonction des autorisations reçues, l'application peut s'exécuter correctement ou générer une exception de sécurité.
Les paramètres de sécurité locaux d'un ordinateur particulier contrôlent en fin de compte les autorisations que le code reçoit. Puisque ces paramètres peuvent varier d'un ordinateur à l'autre, vous ne pouvez jamais être sûr que votre code recevra les autorisations suffisantes pour s'exécuter. Pour plus d'informations, consultez Notions fondamentales de la sécurité d'accès du code.
Autorisations d'accès du code
Les objets d'autorisation d'accès du code servent à protéger les ressources et les opérations d'une utilisation par des utilisateurs non autorisés. Elles constituent un élément fondamental du mécanisme utilisé par le Common Language Runtime pour imposer des restrictions de sécurité sur le code managé.
Les autorisations d'accès du code permettent à un utilisateur d'accéder à une ressource protégée, telle qu'un fichier, ou d'exécuter une action protégée, telle que l'accès au code managé. Toutes les autorisations d'accès du code peuvent être demandées par code ; l'octroi ou non d'autorisations est déterminé par le runtime. Chaque autorisation d'accès du code provient de la classe CodeAccessPermission, et par conséquent, les autorisations ont des méthodes communes : Assert, Demand, Deny, PermitOnly, IsSubSetOf, Intersect et Union.
Autorisations fournies par .NET Framework
Ce tableau affiche les autorisations d'accès du code fournies par le .NET Framework.
Classe d'autorisation |
Permet |
---|---|
Accès aux ressources dans des environnements hébergés par ASP.NET. |
|
Accès aux classes System.DirectoryServices. |
|
Accès aux serveurs de système de noms de domaines (DNS) sur un réseau. |
|
Lecture ou écriture dans des variables d'environnement. |
|
Lecture ou écriture dans des services de journaux d'événements. |
|
Lecture ou écriture dans des fichiers au moyen d'une boîte de dialogue Ouvrir. |
|
Lecture ou écriture dans des fichiers ou répertoires. |
|
Lecture ou écriture dans des fichiers ou répertoires dans un stockage isolé. |
|
Accès aux files d'attente de messages par le biais des interfaces MSMQ (Microsoft Message Queuing). |
|
Accès aux sources de données ODBC (Open Database Connectivity). |
|
Accès à des bases de données utilisant OLE DB. |
|
Accès aux bases de données Oracle. |
|
Accès aux compteurs de performance. |
|
Accès aux imprimantes. |
|
Définition d'informations se rapportant à un type au moment de l'exécution. |
|
Lecture, écriture, création ou suppression de clés de Registre et de valeurs. |
|
Exécution, assertion d'autorisations, appel dans du code non managé, omission de vérification et autres droits liés à la sécurité. |
|
Accès à des services en cours d'exécution ou arrêtés. |
|
Établissement ou acceptation de connexions sur une adresse de transport. |
|
Accès à des bases de données SQL. |
|
Accès aux fonctionnalités de l'interface utilisateur. |
|
Établissement ou acceptation de connexions sur une adresse Web. |
Création de vos propres autorisations
Le .NET Framework fournit un jeu de classes d'autorisations d'accès du code conçu pour protéger un jeu spécifique de ressources et d'opérations, en s'intéressant particulièrement aux ressources exposées par le .NET Framework. Pour la plupart des environnements, les autorisations d'accès du code intégrées sont adéquates. Cependant, dans certains cas, il peut s'avérer avisé de définir votre propre classe d'autorisations d'accès du code. Pour plus d'informations, consultez Création de vos propres autorisations d'accès du code.
Autorisations d'identité
Les autorisations d'identité représentent des caractéristiques qui identifient un assembly. Le Common Language Runtime octroie des autorisations d'identité à un assembly lors de son chargement, en se basant sur les informations qu'il obtient sur celui-ci. Pour plus d'informations, consultez Autorisations d'identité.
Autorisations basées sur les rôles
Les applications destinées aux entreprises accordent souvent l'accès aux données et aux ressources en fonction des informations d'identification fournies par l'utilisateur. Pour cela, elles vérifient en général le rôle de l'utilisateur afin de lui donner accès aux ressources en rapport avec son rôle. Le Common Language Runtime fournit une prise en charge des autorisations basées sur les rôles pour des comptes Windows ou des identités personnalisées. Pour plus d'informations, consultez Sécurité basée sur les rôles.
Tâches liées à la sécurité
Le tableau suivant répertorie les tâches associées aux autorisations et à la sécurité.
Modèle de stratégie de sécurité du .NET Framework
Cinq éléments composent le modèle de stratégie de sécurité du .NET Framework. Il s'agit des éléments suivants :
Niveaux de stratégie de sécurité : entreprise, ordinateur, utilisateur et domaine d'application.
Groupes de codes qui existent en tant que hiérarchie aux niveaux de stratégie de l'entreprise, de l'ordinateur et de l'utilisateur.
Jeux d'autorisations nommés associés à chaque groupe de codes.
Preuve qui fournit des informations sur l'identité du code.
Hôtes de domaine d'application qui fournissent une preuve à propos du code au Common Language Runtime.
Niveaux de stratégie de sécurité
Quatre niveaux de sécurité sont fournis par le .NET Framework pour calculer l'octroi d'autorisations à un assembly ou à un domaine d'application. Chaque niveau contient sa propre hiérarchie de groupes de codes et ses jeux d'autorisations. Le runtime calcule le jeu d'autorisations octroyées comme la somme d'autorisations autorisée par tous les niveaux participants d'une stratégie
Ces niveaux sont les suivants :
Stratégie d'entreprise. S'applique à tout le code managé dans un environnement d'entreprise, où un fichier de configuration d'entreprise est distribué.
Stratégie de l'ordinateur. S'applique à tout le code managé sur l'ordinateur.
Stratégie de l'utilisateur. S'applique au code de tous les processus associés à l'utilisateur du système d'exploitation en cours lorsque le Common Language Runtime démarre.
Stratégie de domaine d'application. S'applique au code managé dans le domaine d'application de l'hôte.
Pour plus d'informations, consultez Niveaux de stratégie de sécurité.
Groupes de codes
Un groupe de codes est un regroupement logique de codes selon une condition particulière d'appartenance. Tout code remplissant la condition d'appartenance est inclus dans le groupe. Les groupes de codes ont associé des jeux d'autorisations qui sont évalués lors de l'établissement d'une stratégie. Pour plus d'informations, consultez Groupes de codes.
Jeux d'autorisations nommés
Un jeu d'autorisations nommé est un jeu d'autorisations que les administrateurs peuvent associer à un groupe de codes. Un jeu d'autorisations nommé est constitué d'au moins une autorisation, ainsi que d'un nom et d'une description pour le jeu. Plusieurs groupes de codes peuvent être associés ç un jeu d'autorisations spécifique.
Ce tableau présente les jeux d'autorisations nommés fournis par le common language runtime.
Nom |
Description |
---|---|
Nothing |
Pas d'autorisations (le code ne s'exécute pas). |
Execution |
Autorisations d'exécuter, mais pas d'autorisations d'utiliser des ressources protégées. |
Internet |
Jeu d'autorisations de la stratégie par défaut adaptée au contenu d'origine inconnue. |
Local Intranet |
Jeu d'autorisations de la stratégie par défaut au sein d'une entreprise. |
Everything |
Toutes autorisations standard (intégrées), à l'exception de l'autorisation d'ignorer la vérification. |
FullTrust |
Accès intégral à toutes les ressources. |
Pour plus d'informations, consultez Jeux d'autorisations nommés.
Preuve
La preuve est l'information que le Common Language Runtime utilise pour prendre des décisions fondées sur la stratégie de sécurité. La preuve indique au runtime que le code a une caractéristique particulière et peut inclure le répertoire de l'application, l'éditeur, le site et l'URL. Pour plus d'informations, consultez Preuve.
Hôtes de domaine d'application
Chaque application .NET Framework s'exécute dans un domaine d'application sous le contrôle d'un hôte qui crée le domaine d'application et y charge les assemblys. Les domaines d'application peuvent inclure :
Les hôtes de navigateur. Exécutent le code dans le contexte d'un site Web.
Les hôtes conçus de manière personnalisée. Créent des domaines et chargent des assemblys dans les domaines, y compris des assemblys dynamiques.
Les hôtes de serveur, exécutent le code qui gère les demandes envoyées à un serveur.
Les hôtes de shell. Lancent des applications (fichiers .exe) à partir du shell.
Ce tableau répertorie les tâches associées aux domaines d'application :
Pour |
Reportez-vous à |
---|---|
Créer un domaine d'application. |
|
Définir la stratégie de sécurité de niveau de domaine d'application |
Définition d'une stratégie de sécurité au niveau du domaine d'application |
Configurer un domaine d'application. |
|
Appeler des fonctions dans un domaine d'application spécifique |
|
Récupérer des informations d'installation à partir d'un domaine d'application |
Récupération d'informations d'installation à partir d'un domaine d'application |
Décharger un domaine d'application |
Pour plus d'informations, consultez AppDomain, Hôtes de domaine d'application et Programmation avec des domaines d'application.
Voir aussi
Tâches
Dépannage des exceptions de sécurité d'accès du code
Concepts
Isolation par utilisateur, par domaine et par assembly