Begriff
ABAC (Attribute-Based Access Control)
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
RBAC ("Du bist Admin") ist oft zu grob. Was, wenn der Admin nur während der Arbeitszeit (9-17 Uhr) zugreifen darf? Oder nur, wenn er im Büro (IP-Adresse) sitzt? RBAC scheitert hier ("Rolle Admin_9to5"?). ABAC ist feinkörniger. Es schaut auf Attribute:
- Wer bist du? (Abteilung = IT).
- Was willst du? (Datei = Geheim).
- Wo bist du? (Ort = Berlin).
- Wann ist es? (Zeit = 14:00). Regel: "Zugriff erlaubt WENN (Abteilung == IT) UND (Ort == Büro)." Es ist wie ein intelligenter Türsteher, der nicht nur auf die VIP-Karte schaut, sondern auch kontrolliert, ob du Schuhe trägst.
Merksatz: Ein Zugriffskontrollmodell, bei dem Rechte durch Richtlinien gewährt werden, die Attribute von Benutzern, Ressourcen und der Umgebung kombinieren.
In der Cloud (AWS IAM) ist fast alles ABAC. Policy:
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "my-bucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "1.2.3.4/32"}
}
}
Hier ist die IP-Adresse das Attribut der Umgebung.
1. XACML
Der (schreckliche) XML-Standard für ABAC. Uralt und kompliziert. Heute nutzt man eher OPA (Open Policy Agent) mit der Sprache Rego. (Viel lesbarer).
2. Performance
RBAC ist schnell ("Hat er die Rolle? Ja/Nein"). Lookups in O(1). ABAC ist langsam. Man muss bei jedem Zugriff eine komplexe Logik-Formel auswerten. "Ist Zeit > 9 UND Zeit < 17 UND IP == intern UND...?" Bei Millionen Zugriffen zählt jede Millisekunde.
1. ALFA (Abbreviated Language for Authorization)
XACML als XML-Struktur hat sich in der Praxis als extrem geschwätzig und schlecht wartbar erwiesen. Als Antwort wurde ALFA entwickelt (eine Art Pseudocode, der in XACML kompiliert) und später OASIS-Standard für die Definition von ABAC-Policies. Heute sehen wir vermehrt Policy-As-Code Ansätze (z.B. AWS Cedar oder HashiCorp's Sentinel). Cedar (Open Source in Rust) nutzt SMT-Solver, um mathematisch zu beweisen, dass zwei Policies sich nicht widersprechen oder Lücken haben.
2. Continuous vs. Discontinuous Evaluation
Standard-ABAC ist "discontinuous": Ein User fragt nach dem Download einer Datei. Der PDP (Policy Decision Point) prüft die Attribute (IP=Office, Zeit=10:00), sagt "Ja!", und der Download startet. Was passiert, wenn der Download 2 Stunden dauert, der User das Gebäude verlässt und die IP zu "Starbucks Wi-Fi" wechselt? Die Policy greift ins Leere. Moderne Zero-Trust-Architekturen erfordern Continuous Access Evaluation (CAE). Der PIP (Policy Information Point) streamt live Telemetriedaten (z.B. via Token Binding, Device Posture Updates). Ändert sich der Risikoscore mitten in einer aktiven TCP-Session, trennt der PEP (Policy Enforcement Point) brutal die Verbindung (Session Revocation).
3. Attribute Graph & Entanglement
Wenn Unternehmen ABAC wild skalieren, entsteht oft ein "Attribute Explosion" Problem. "Wie hängt Attribut is_certified_auditor mit dem Tag project:blue zusammen?" Anstatt flacher LDAP-Checks bauen gigantische Deployments (etwa Google's Zanzibar-Derivate) auf Graphdatenbanken auf. Access-Checks werden zu Traversierungen von Relationen-Graphen. Wenn ABAC-Policies komplexe Boolesche Logik mit unstrukturierten Graphendaten vermischen, droht die Evaluationszeit logarithmisch und bei Edge Cases (Zyklische Graphen) exponentiell zu wachsen.
Quick-Check
Ersetzt es RBAC?
Jein. Meistens kombiniert man es. Man nutzt Rollen (RBAC) für das Grobe und Attribute (ABAC) für die Details ("Admin, aber nur für eigene Region").Was ist "Next Generation Access Control"?
Ein Begriff vom NIST, der ABAC noch erweitert um Graphen-Beziehungen. Aber ABAC ist aktuell der Goldstandard für komplexe Security.Warum nicht immer ABAC?
Zu komplex zu verwalten. Wenn niemand mehr versteht, warum der Zugriff verweigert wurde (weil irgendein Attribut "Mondphase" falsch war), leidet die Usability.