Partager via


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

System.Security.AccessControl

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

CryptoKeySecurity

CryptoKeyAccessRule

CryptoKeyAuditRule

Répertoires

DirectorySecurity

FileSystemAccessRule

FileSystemAuditRule

Handles d'attente d'événement

EventWaitHandleSecurity

EventWaitHandleAccessRule

EventWaitHandleAuditRule

Fichiers

FileSecurity

FileSystemAccessRule

FileSystemAuditRule

Mutex

MutexSecurity

MutexAccessRule

MutexAuditRule

Clés de Registre

RegistrySecurity

RegistryAccessRule

RegistryAuditRule

Sémaphores

SemaphoreSecurity

SemaphoreAccessRule

SemaphoreAuditRule

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

CspKeyContainerInfo.CryptoKeySecurity

Répertoires

Directory.GetAccessControl

Directory.SetAccessControl

DirectoryInfo.GetAccessControl

DirectoryInfo.SetAccessControl

DirectoryInfo.Create

Handles d'attente d'événement

EventWaitHandle.GetAccessControl

EventWaitHandle.SetAccessControl

EventWaitHandle.EventWaitHandle

Fichiers

FileStream.GetAccessControl

FileStream.SetAccessControl

FileStream.FileStream

File.GetAccessControl

File.SetAccessControl

File.Create

FileInfo.GetAccessControl

FileInfo.SetAccessControl

Mutex

Mutex.GetAccessControl

Mutex.SetAccessControl

Mutex.Mutex

Clés de Registre

RegistryKey.GetAccessControl

RegistryKey.SetAccessControl

RegistryKey.CreateSubKey

Sémaphores

Semaphore.GetAccessControl

Semaphore.SetAccessControl

Semaphore.Semaphore

Voir aussi

Autres ressources

Vue d'ensemble de la technologie ACL

Sécurité dans le .NET Framework