Résumé de la technologie des listes de contrôle d'accès
Cette rubrique résume les informations sur l'API managée pour les listes de contrôle d'accès discrétionnaire (DACL), les listes de contrôle d'accès système (SACL) et les entrées de contrôle d'accès (ACE). Vous pouvez utiliser les classes dans l'espace de noms System.Security.AccessControl pour accéder par programme aux DACL, SACL et ACE pour plusieurs types de ressources protégées dans le .NET Framework, version 2.0 et ultérieure.
L'API ACL managée rend l'utilisation des ACL plus facile qu'avec l'implémentation non managée en fournissant plusieurs classes qui prennent en charge beaucoup de détails pour vous. Par exemple, il n'est pas possible de créer des DACL null dans l'implémentation managée et vous n'avez plus à craindre de créer par erreur un DACL non sécurisé pour cause d'ordonnancement incorrect de vos ACE.
Mots clés
Liste de contrôle d'accès (ACL), liste de contrôle d'accès discrétionnaire (DACL), listes de contrôle d'accès système (SACL), entrée de contrôle d'accès (ACE), ACE d'audit
Espaces de noms
Technologies associées
Sécurité dans le .NET Framework
Background
Une liste de contrôle d'accès discrétionnaire (DACL), parfois abrégée en ACL, est un mécanisme utilisé par Microsoft Windows NT et les versions ultérieures pour protéger des ressources telles que les fichiers et les dossiers. Les DACL contiennent des entrées de contrôles d'accès (ACE) qui associent une entité de sécurité (habituellement un compte d'utilisateur ou un groupe de comptes) à une règle qui détermine l'utilisation de la ressource. Les DACL et les ACE vous permettent d'accorder ou de refuser des droits aux ressources selon les autorisations que vous pouvez associer aux comptes d'utilisateurs. Par exemple, vous pouvez créer une ACE et l'appliquer à la DACL d'un fichier pour empêcher quiconque à l'exception d'un administrateur de lire le fichier.
Une liste de contrôle d'accès système (SACL), à laquelle on fait parfois référence sous l'appellation d'ACE d'audit, est un mécanisme qui contrôle les messages d'audit associés à une ressource. À l'instar des DACL, les SACL contiennent des ACE qui définissent les règles d'audit pour une ressource donnée. Les ACE d'audit vous permettent d'enregistrer les tentatives réussies ou échouées d'accéder à une ressource, mais diffèrent des ACE d'accès car elles ne déterminent pas quels comptes peuvent utiliser une ressource. Par exemple, vous pouvez créer une ACE et l'appliquer à la SACL d'un fichier pour enregistrer toutes les tentatives réussies d'ouverture du fichier.
Présentation des classes ACL en un clin d'œil
Le tableau suivant répertorie les classes principales que vous pouvez utiliser pour créer et modifier facilement des ACL pour plusieurs domaines technologiques. Il ne s'agit pas d'une liste exhaustive de l'espace de noms System.Security.AccessControl, mais plutôt une liste des classes principales que vous devez utiliser pour travailler avec ACL.
Zone technologique |
Classes |
---|---|
Clés de chiffrement |
|
Répertoires |
|
Handles d'attente d'événement |
|
Fichiers |
|
Mutex |
|
Clés de Registre |
|
Sémaphores |
Pour interroger les informations d'ACL existantes d'une ressource ou appliquer des informations d'ACL modifiées à une ressource, vous devez utiliser une des méthodes qui fournissent l'accès aux ACL d'une ressource existante. Les classes de la table précédente fournissent des méthodes de construction et de modification des ACL mais n'offrent pas de moyen d'interroger ou d'appliquer les ACL.
Chaque ressource dispose de méthodes associées qui appliquent les ACL pendant la création de la ressource (généralement une surcharge de constructeur), qui récupère les ACL d'une ressource existante, et qui appliquent les ACL à une ressource existante.
Le tableau suivant répertorie les méthodes utilisées pour obtenir et définir des ACL pour chaque zone de technologie. Ces méthodes sont situées dans plusieurs espaces de noms en dehors de l'espace de noms System.Security.AccessControl et font partie des classes de niveau supérieur qui représentent une ressource particulière. Par exemple, pour interroger les ACL d'un répertoire spécifié, vous utilisez la méthode Directory.GetAccessControl pour obtenir l'objet DirectorySecurity qui encapsule les DACL et les SACL pour le répertoire. Notez que certaines ressources, telles que les fichiers et les répertoires, disposent de plusieurs méthodes équivalentes dans différentes classes qui fournissent l'accès aux ACL.
Zone technologique |
Méthodes pour obtenir et définir les ACL |
---|---|
Clés de chiffrement |
CspParameters.CryptoKeySecurity CspParameters.CspParameters CspParameters.CspParameters |
Répertoires |
DirectoryInfo.GetAccessControl |
Handles d'attente d'événement |
EventWaitHandle.GetAccessControl EventWaitHandle.SetAccessControl EventWaitHandle.EventWaitHandle |
Fichiers |
FileStream.FileStream |
Mutex |
Mutex.Mutex |
Clés de Registre |
|
Sémaphores |
Semaphore.Semaphore |