Access Control List (ACL): Definition, Typen, Beispiele
Eine ACL legt fest, wer was mit einer Ressource tun darf. So funktionieren ACLs, die wichtigsten Typen, Fehler und ACL im Vergleich zu RBAC.
Was ist eine Access Control List (ACL)?
Eine Access Control List (ACL, Zugriffssteuerungsliste) ist eine Liste, die an einer Ressource hängt, etwa an einer Datei, einem Subnetz oder einem Storage-Bucket, und festlegt, wer was damit tun darf. Jeder Eintrag nennt ein Subjekt, zum Beispiel Benutzer, Gruppe oder IP-Bereich, und die erlaubten oder verweigerten Rechte. Das System prüft die Liste bei jedem Zugriff auf die Ressource.
So funktioniert eine ACL
Jede Zeile der Liste ist ein Access Control Entry (ACE). Er verbindet ein Subjekt (wer), ein Recht wie Lesen, Schreiben oder Ausführen (was) und in vielen Systemen eine Entscheidung für Erlauben oder Verweigern. Trifft eine Anfrage ein, sucht das System das Subjekt in der Liste. Manche Systeme stoppen beim ersten passenden Eintrag, andere verrechnen alle zutreffenden Einträge. Die Auswertungsregel ist also genauso wichtig wie die Einträge selbst.
Eine ACL beantwortet die Frage "Wer darf bei dieser Ressource was?". Das ist die umgekehrte Sicht der rollenbasierten Zugriffskontrolle, die beim Benutzer beginnt und fragt, welche Rollen er hat.
Beispiel: eine POSIX-Datei-ACL
Unter Linux definiert die Manpage acl(5) die Eintragstypen: Besitzer, benannte Benutzer, besitzende Gruppe, benannte Gruppen, eine Maske und "other". Hier die ACL einer Datei in der Kurzform, die getfacl ausgibt:
user::rwx
user:alice:rw-
group::r-x
group:engineering:rwx
mask::rwx
other::r--Alice darf lesen und schreiben, obwohl sie nicht Besitzerin ist. Die Maske begrenzt, was benannte Benutzer und Gruppen tatsächlich dürfen. Bei der Maske r-- wäre Alice stillschweigend nur noch lesend berechtigt.
Arten von ACLs
- Dateisystem-ACLs erweitern die Rechte für Besitzer, Gruppe und andere um benannte Benutzer und Gruppen. Linux-Dateisysteme und Windows NTFS unterstützen sie.
- Netzwerk-ACLs erlauben oder verweigern Verkehr nach Adresse, Port und Protokoll. In AWS arbeitet eine Netzwerk-ACL auf Subnetz-Ebene, hat nummerierte Regeln, die von der niedrigsten Nummer aus geprüft werden, und ist zustandslos (stateless): Der Rückverkehr braucht eine eigene Regel. Security Groups dagegen sind zustandsbehaftet.
- ACLs für Objektspeicher vergeben einfache Lese- und Schreibrechte an Buckets oder Objekten. Amazon S3 deaktiviert ACLs bei neuen Buckets standardmäßig und empfiehlt, sie ausgeschaltet zu lassen, weil Bucket Policies ausdrucksstärker sind.
- Anwendungs-ACLs sind Berechtigungslisten, die eine SaaS-App oder ein CMS pro Dokument, Projekt oder Datensatz führt.
ACL, RBAC und IAM im Vergleich
Eine ACL hängt an der Ressource und passt für wenige Ressourcen mit ungewöhnlichen Ausnahmen. RBAC weist Rechte Rollen zu und skaliert besser, wenn viele Benutzer dieselben Aufgaben haben. Identity and Access Management (IAM) ist die übergeordnete Disziplin, die Identitäten, Rollen und Richtlinien verwaltet und darunter oft ACLs nutzt. In der Praxis kombiniert man sie: Rollen für den Großteil der Zugriffe, ACLs für Ausnahmen.
Häufige ACL-Fehler
- Falsche Regelreihenfolge. Bei Systemen mit "erster Treffer gewinnt" macht ein weites Erlauben oberhalb eines speziellen Verweigerns das Verweigern wirkungslos.
- Den Rückweg vergessen. Erlaubt man bei einer zustandslosen Netzwerk-ACL eingehende Anfragen ohne die passende ausgehende Regel, hängen die Verbindungen.
- Zugriff für "alle" vergeben. Eine öffentliche Gruppe an einem Bucket macht dessen Inhalt für jeden sichtbar. Prüfen Sie bei einem Audit zuerst solche Freigaben.
- Die Maske ignorieren. Ein POSIX-Eintrag kann großzügig aussehen und trotzdem von der Maske begrenzt sein.
- Einträge anhäufen. Niemand weiß mehr, warum ein alter Eintrag existiert, und das Entfernen wirkt riskant. Prüfen Sie ACLs regelmäßig und weisen Sie jedem Eintrag einen Verantwortlichen zu.
ACLs, Lasttests und Monitoring
Eine ACL-Änderung ist eine klassische Ursache für plötzliche 401-, 403- oder Timeout-Fehler. Eine Netzwerk-ACL oder Firewall, die Verkehr von unbekannten Adressen verwirft, blockiert auch einen Lasttest: LoadFocus startet Cloud-Instanzen bei Bedarf, deshalb geben Sie vor dem Test die veröffentlichten IP-Bereiche frei. Treten Fehler nur unter Last auf, kann Rate Limiting am Rand die Ursache sein und nicht die Anwendung.
Um Berechtigungsdrift früh zu erkennen, prüfen Sie einen geschützten Endpunkt per API-Monitoring nach Zeitplan und erwarten den passenden Statuscode, oder machen eine einmalige Prüfung mit dem API Status Checker. Unser Leitfaden zur Sicherheit beim Cloud-Testing (auf Englisch) behandelt Zugriffskontrolle für Testumgebungen, API-Sicherheit und API-Zugriff die Seite der Zugangsdaten.
Häufige Fragen zu ACLs
Wofür steht ACL?
ACL steht für Access Control List, auf Deutsch Zugriffssteuerungsliste. Im Netzwerkbereich spricht man auch von einer Netzwerk-ACL (NACL).
Was ist der Unterschied zwischen ACL und Firewall?
Eine Firewall ist ein Gerät oder Dienst, der Datenverkehr filtert. Eine ACL ist die Regelliste, nach der sie oder ein Router entscheidet, was durchgelassen wird. Viele Firewalls werden über ACL-ähnliche Regeln konfiguriert.
Ist eine ACL dasselbe wie RBAC?
Nein. Eine ACL listet Rechte pro Ressource auf, RBAC weist Rechte Rollen zu, die Benutzer dann innehaben. Oft werden beide zusammen eingesetzt.
Sollte ich S3-ACLs verwenden?
In der Regel nicht. Amazon S3 deaktiviert ACLs standardmäßig und empfiehlt stattdessen Richtlinien. Nutzen Sie ACLs nur, wenn Sie den Zugriff für jedes Objekt einzeln steuern müssen.
Sind Netzwerk-ACLs zustandsbehaftet?
In AWS nicht. Eine Netzwerk-ACL bewertet jedes Paket für sich, Sie brauchen also Regeln für beide Richtungen. Security Groups sind zustandsbehaftet und erlauben Antworten automatisch.
Verwandte Begriffe
Verwandte LoadFocus-Tools
Setze dieses Konzept mit LoadFocus in die Praxis um, derselben Plattform, die alles antreibt, was du gerade gelesen hast.