Share via


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

System.Security.AccessControl

Verwandte Technologien

Sicherheit in .NET Framework

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

CryptoKeySecurity

CryptoKeyAccessRule

CryptoKeyAuditRule

Verzeichnisse

DirectorySecurity

FileSystemAccessRule

FileSystemAuditRule

Ereignis-Wait-Handles

EventWaitHandleSecurity

EventWaitHandleAccessRule

EventWaitHandleAuditRule

Dateien

FileSecurity

FileSystemAccessRule

FileSystemAuditRule

Mutexe

MutexSecurity

MutexAccessRule

MutexAuditRule

Registrierungsschlüssel

RegistrySecurity

RegistryAccessRule

RegistryAuditRule

Semaphoren

SemaphoreSecurity

SemaphoreAccessRule

SemaphoreAuditRule

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

CspKeyContainerInfo.CryptoKeySecurity

Verzeichnisse

Directory.GetAccessControl

Directory.SetAccessControl

DirectoryInfo.GetAccessControl

DirectoryInfo.SetAccessControl

DirectoryInfo.Create

Ereignis-Wait-Handles

EventWaitHandle.GetAccessControl

EventWaitHandle.SetAccessControl

EventWaitHandle.EventWaitHandle

Dateien

FileStream.GetAccessControl

FileStream.SetAccessControl

FileStream.FileStream

File.GetAccessControl

File.SetAccessControl

File.Create

FileInfo.GetAccessControl

FileInfo.SetAccessControl

Mutexe

Mutex.GetAccessControl

Mutex.SetAccessControl

Mutex.Mutex

Registrierungsschlüssel

RegistryKey.GetAccessControl

RegistryKey.SetAccessControl

RegistryKey.CreateSubKey

Semaphoren

Semaphore.GetAccessControl

Semaphore.SetAccessControl

Semaphore.Semaphore

Siehe auch

Weitere Ressourcen

Übersicht über die ACL-Technologie

Sicherheit in .NET Framework