Architecture de la technologie ACL
L'espace de noms System.Security.AccessControl fournit l'accès aux listes de contrôle d'accès (ACL) par l'intermédiaire de classes pratiques qui éliminent une grande partie de la complexité du système de sécurité ACL de Windows. En outre, l'espace de noms System.Security.AccessControl contient plusieurs classes qui fournissent un accès avancé au système de sécurité ACL de Windows.
Le .NET Framework fournit l'accès aux ACL pour les ressources suivantes :
Clés de chiffrement
Répertoires
Handles d'attente d'événement
Fichiers
Mutex
Clés de Registre
Sémaphores
Chacune de ces ressources a plusieurs classes que vous pouvez utiliser pour créer et modifier les ACL.
Hiérarchie des classes ACL
Dans la plupart des scénarios, vous pouvez utiliser des classes abstraites de niveau supérieur à la place des classes avancées pour créer et modifier les ACL. Pour chaque ressource, les classes de niveau supérieur prennent la forme suivante :
Une classe qui encapsule la liste de contrôle d'accès discrétionnaire (DACL) et la liste de contrôle d'accès système (SACL). Cette classe prend le nom <Nom de la ressource>Security. Par exemple, les classes FileSecurity et DirectorySecurity encapsulent les DACL et les SACL pour les fichiers et les dossiers.
Une classe qui encapsule une entrée de contrôle d'accès (ACE). Cette classe prend le nom <Nom de la ressource>AccessRule.
Une classe qui encapsule un ACE d'audit. Cette classe prend le nom <Nom de la ressource>AuditRule.
Plusieurs énumérations qui vous permettent de créer des règles d'accès et d'audit spécifiques.
Pour une liste complète de toutes les classes ACL de haut niveau, consultez Résumé de la technologie des listes de contrôle d'accès.
Ajout d'entrées ACE dans les listes ACL
Après avoir créé une ACE à l'aide d'une des classes de règle d'accès ou de règle d'audit, vous pouvez ajouter la règle à une ressource ou l'utiliser pour supprimer une règle existante d'une ressource. Par exemple, vous pouvez créer une règle à l'aide de la classe FileSystemAccessRule qui spécifie que seuls les administrateurs peuvent ouvrir un fichier. Vous pourriez ajouter ensuite cette règle à un objet FileSecurity ou supprimer une règle semblable d'un objet FileSecurity.
L'ajout d'une ACE qui accorde l'accès ne garantit pas qu'un principal recevra l'accès car une règle d'interdiction a toujours plus de poids qu'une règle d'autorisation. Par exemple, si vous ajoutez une règle d'autorisation d'accès à un fichier pour un compte système, cela ne signifie pas que la personne pourra y accéder car une autre règle peut lui en interdire l'accès.
Chaque objet <Nom de la ressource>Security associé à une ressource fournit les méthodes suivantes pour ajouter ou supprimer des règles d'accès et d'audit.
Méthode |
Description |
---|---|
AddAccessRule – et – AddAuditRule |
Recherche une règle d'accès ou d'audit pouvant être fusionnée avec la nouvelle règle. Ajoute la nouvelle règle en cas de recherche infructueuse. |
SetAccessRule |
Supprime toutes les règles de contrôle d'accès ayant les mêmes utilisateur et valeur AccessControlType (Allow ou Deny) que la règle spécifiée, puis ajoute la règle spécifiée. |
SetAuditRule |
Supprime toutes les règles d'audit ayant le même utilisateur que la règle spécifiée, quelle que soit la valeur de AuditFlags, puis ajoute la règle spécifiée. |
ResetAccessRule |
Supprime toutes les règles de contrôle d'accès ayant le même utilisateur que la règle spécifiée, quelle que soit la valeur de AccessControlType, puis ajoute la règle spécifiée. |
RemoveAccessRule |
Recherche une règle de contrôle d'accès ayant le même utilisateur et la même valeur AccessControlType (Allow ou Deny) que la règle spécifiée, et des indicateurs d'héritage et de propagation compatibles. S'il en trouve, les droits contenus dans la règle d'accès spécifiée sont supprimés de la règle. |
RemoveAuditRule |
Recherches une règle de contrôle audit ayant le même utilisateur que la règle spécifiée, et des indicateurs d'héritage et de propagation compatibles. S'il en trouve, les droits contenus dans la règle spécifiée sont supprimés de la règle. |
RemoveAccessRuleAll |
Recherche toutes les règles d'accès ayant les mêmes utilisateur et valeur AccessControlType (Allow ou Deny) que la règle spécifiée et, s'il en existe, les supprime. |
RemoveAuditRuleAll |
Recherche toutes les règles d'audit ayant le même utilisateur que la règle spécifiée et, s'il en existe, les supprime. |
RemoveAccessRuleSpecific – et – RemoveAuditRuleSpecific |
Recherche une règle d'accès ou d'audit qui correspond exactement à la règle spécifiée et, si une telle règle est trouvée, la supprime. |
AddAccessRule – et – AddAuditRule |
Recherche une règle d'accès ou d'audit pouvant être fusionnée avec la nouvelle règle. Ajoute la nouvelle règle en cas de recherche infructueuse. |
Obtention et définition d'ACL
Chaque ressource protégée a des méthodes pour obtenir et définir l'objet <Nom de la ressource>Security associé à une ressource. Pour récupérer les ACL existants pour une ressource spécifique, utilisez une des méthodes GetAccessControl associées à la ressource. Pour repropager les modifications à une ressource, utilisez une des méthodes SetAccesscontrol associées à la ressource. Notez que les modifications ne sont pas repropagées à une ressource avant que vous ne les réappliquiez explicitement à l'aide d'une des méthodes définies.
Pour une liste complète de toutes les méthodes get et set de chaque ressource protégée, consultez Résumé de la technologie des listes de contrôle d'accès.