Zusammenfassung der ACL-Technologie
Dieses Thema bietet einen Überblick über die verwaltete API für freigegebene Zugriffssteuerungslisten (DACLs, Discretionary Access Control Lists), Systemzugriffssteuerungslisten (SACLs, System Access Control Lists) und Einträge für die Zugriffssteuerung (ACEs, Access Control Entries). Mit den Klassen im System.Security.AccessControl-Namespace können Sie programmgesteuert auf DACLs, SACLs und ACEs für verschiedene Typen geschützter Ressourcen in .NET Framework, Version 2.0 und höher, zugreifen.
Mit der verwalteten ACL-API ist das Arbeiten mit ACLs einfacher als mit der nicht verwalteten Implementierung, da verschiedene Klassen bereitgestellt werden, die viele Detailaufgaben für Sie übernehmen. Beispielsweise können in der verwalteten Implementierung keine null-DACLs erstellt werden, und Sie müssen nicht mehr befürchten, versehentlich aufgrund einer falschen Anordnung von ACEs eine unsichere DACL zu erstellen.
Schlüsselwörter
Zugriffssteuerungsliste (ACL, Access Control List), freigegebene Zugriffssteuerungsliste (DACL, Discretionary Access Control List), Systemzugriffssteuerungsliste (SACL, System Access Control List), Eintrag für die Zugriffssteuerung (ACE, Access Control Entry), Überwachungs-ACE
Namespaces
Verwandte Technologien
Hintergrund
Eine freigegebene Zugriffssteuerungsliste (DACL, Discretionary Access Control List), zuweilen abgekürzt als ACL bezeichnet, ist ein unter Microsoft Windows NT und höher verwendeter Mechanismus zum Schützen von Ressourcen, z. B. Dateien und Ordner. DACLs enthalten mehrere Einträge für die Zugriffssteuerung (ACEs, Access Control Entries), die einem Prinzipal (normalerweise ein Benutzerkonto oder eine Gruppe von Konten) eine Regel für die Verwendung der Ressource zuordnen. Mithilfe von DACLs und ACEs können Sie auf der Grundlage von Berechtigungen, die Sie Benutzerkonten zuordnen können, Rechte auf Ressourcen gewähren oder verweigern. Sie können z. B. einen ACE erstellen und auf die DACL einer Datei anwenden, um das Lesen der Datei nur durch einen Administrator zuzulassen.
Eine Systemzugriffssteuerungsliste (SACL, System Access Control List), zuweilen auch als Überwachungs-ACE bezeichnet, ist ein Mechanismus, der die einer Ressource zugeordneten Überwachungsmeldungen steuert. SACLs enthalten ähnlich wie DACLs ACEs, die die Überwachungsregeln für eine bestimmte Ressource definieren. Mit Überwachungs-ACEs können Sie erfolgreiche oder fehlgeschlagene Zugriffe auf eine Ressource aufzeichnen. Sie unterscheiden sich jedoch von Zugriffs-ACEs, da sie nicht steuern, welche Konten eine Ressource verwenden können. Sie können z. B. einen ACE erstellen und auf die SACL einer Datei anwenden, um jedes erfolgreiche Öffnen der Datei zu protokollieren.
ACL-Klassen auf einen Blick
In der folgenden Tabelle werden die Hauptklassen aufgelistet, mit denen Sie bequem ACLs für verschiedene Technologiebereiche erstellen können. Dies ist keine umfassende Liste des System.Security.AccessControl-Namespaces, sondern eine Liste der primären Klassen, die Sie zum Arbeiten mit ACLs verwenden sollten.
Technologiebereich |
Klassen |
---|---|
Kryptografische Schlüssel |
|
Verzeichnisse |
|
Ereignis-Wait-Handles |
|
Dateien |
|
Mutexe |
|
Registrierungsschlüssel |
|
Semaphoren |
Um die vorhandenen ACL-Informationen nach einer Ressource abzufragen oder geänderte ACL-Informationen auf eine Ressource anzuwenden, müssen Sie eine von mehreren Methoden verwenden, die den Zugriff auf die ACLs einer vorhandenen Ressource ermöglichen. Die Klassen in der obigen Tabelle stellen Methoden zum Erstellen und Bearbeiten von ACLs bereit, jedoch keine Verfahren zum Abfragen oder Anwenden von ACLs.
Jeder Ressource sind Methoden zugeordnet, die ACLs während der Ressourcenerstellung anwenden (normalerweise eine Konstruktorüberladung), ACLs für eine vorhandene Ressource abrufen und ACLs auf eine vorhandene Ressource anwenden.
In der folgenden Tabelle werden die Methoden zum Abrufen und Festlegen von ACLs für jeden Technologiebereich aufgelistet. Diese Methoden befinden sich in verschiedenen Namespaces außerhalb des System.Security.AccessControl-Namespaces und sind Bestandteil der Klassen hoher Ebene, die eine bestimmte Ressource darstellen. Um beispielsweise die ACLs für ein bestimmtes Verzeichnis abzufragen, rufen Sie mit der Directory.GetAccessControl-Methode das DirectorySecurity-Objekt ab, das die DACLs und SACLs für das Verzeichnis kapselt. Beachten Sie, dass einige Ressourcen, z. B. Dateien und Verzeichnisse, über mehrere gleichwertige Methoden in unterschiedlichen Klassen verfügen, die den Zugriff auf ACLs ermöglichen.
Technologiebereich |
Methoden zum Abrufen und Festlegen von ACLs |
---|---|
Kryptografische Schlüssel |
CspParameters.CryptoKeySecurity CspParameters.CspParameters CspParameters.CspParameters |
Verzeichnisse |
DirectoryInfo.GetAccessControl |
Ereignis-Wait-Handles |
EventWaitHandle.GetAccessControl EventWaitHandle.SetAccessControl EventWaitHandle.EventWaitHandle |
Dateien |
FileStream.FileStream |
Mutexe |
Mutex.Mutex |
Registrierungsschlüssel |
|
Semaphoren |
Semaphore.Semaphore |