Die Autorisierung definiert, was ein authentifizierter Benutzer tun kann. Während die Authentifizierung die Identität bestätigt, steuert die Autorisierung den Zugriff auf Ressourcen und Aktionen. In diesem Leitfaden werden Vorlagen, Implementierungen und Best Practices für den Aufbau robuster Berechtigungssysteme vorgestellt.
Authentifizierung vs. Autorisierung
Authentifizierung
Antwort: „Wer bist du?“ Verifiziert die Identität anhand von Anmeldeinformationen.
Autorisierung
Antwort: „Was können Sie tun?“ Legt Berechtigungen fest, nachdem die Identität bestätigt wurde.
Praxisbeispiel
Benutzer meldet sich an (Authentifizierung). Das System prüft, ob Sie auf das Admin-Panel zugreifen können (Autorisierung).
Warum Autorisierung wichtig ist
Ohne ordnungsgemäße Zugriffskontrolle kann jeder authentifizierte Benutzer auf jede Ressource zugreifen. Sensible Daten werden offengelegt, destruktive Maßnahmen werden möglich. Die Autorisierung schützt kritische Daten und Vorgänge.
Zugangskontrollmodelle
ACL (Zugriffskontrollliste)
Liste, die definiert, wer auf jede Ressource zugreifen kann. Einfach, lässt sich aber nicht gut auf komplexe Systeme skalieren.
RBAC (Rollenbasierte Zugriffskontrolle)
Den Rollen zugewiesene Berechtigungen, den Benutzern zugewiesene Rollen. Hierarchische Struktur. Am häufigsten verwendetes Modell.
ABAC (Attributbasierte Zugriffskontrolle)
Entscheidungen basierend auf Attributen: Benutzer, Ressource, Umgebung. Flexibel, aber komplex.
ReBAC (Beziehungsbasierte Zugriffskontrolle)
Basierend auf Beziehungen zwischen Entitäten. „Sie können es bearbeiten, wenn Sie es besitzen.“ Wird von Sansibar (Google) verwendet.
RBAC im Detail
Komponenten
- Benutzer: Personen oder Systeme, die darauf zugreifen.
- Rollen: Berechtigungssätze (Administrator, Editor, Betrachter).
- Berechtigungen: Zulässige Aktionen (Erstellen, Lesen, Aktualisieren, Löschen).
- Funktionen: Geschützte Objekte (Beiträge, Benutzer, Einstellungen).
Rollenhierarchie
Rollen können von anderen erben. Der Administrator erbt vom Editor, der vom Viewer erbt. Reduziert Duplikate.
Strukturbeispiel
| Scrollen | Berechtigungen | Geltungsbereich |
|---|---|---|
| Admin | erstellen, lesen, aktualisieren, löschen | Alle Ressourcen |
| Herausgeber | erstellen, lesen, aktualisieren | Inhalt |
| Betrachter | lesen | Öffentlicher Inhalt |
RBAC-Implementierung
Datenbank
Tabellen für Benutzer, Rollen, Berechtigungen und Beziehungen (user_roles, role_permissions).
Verifizierungs-Middleware
Vor der Aktion prüft die Middleware, ob der Benutzer über die erforderliche Berechtigung verfügt.
Dekorateure/Wächter
In modernen Frameworks Annotationen, die Routen oder Methoden schützen.
Berechtigungs-Caching
Vermeiden Sie es, bei jeder Anfrage die Bank zu konsultieren. Benutzerberechtigungen in Token oder Redis zwischenspeichern.
ABAC: Erweiterte Flexibilität
Wann zu verwenden
Wenn RBAC nicht ausdrucksstark genug ist. Regeln hängen vom dynamischen Kontext ab.
Richtlinienbeispiele
- Sie können es bearbeiten, wenn Sie der Autor des Dokuments sind.
- Sie können darauf zugreifen, wenn Sie in derselben Abteilung sind.
- Sie können genehmigen, wenn der Betrag unter Ihrem Limit liegt.
###XACML
Standard zum Ausdrücken von ABAC-Richtlinien. XML-basiert, wird in Unternehmensumgebungen verwendet.
Berechtigungen auf Ressourcenebene
Sicherheit auf Zeilenebene
Kontrolle durch Registrierung. Der Benutzer sieht nur seine eigenen Daten. PostgreSQL wird nativ unterstützt.
Sicherheit auf Spaltenebene
Feldkontrolle. Bestimmte Felder sind nur für bestimmte Rollen sichtbar.
Mandantenfähigkeit
Isolation zwischen Mietern. Jede Organisation greift nur auf ihre Daten zu.
Betriebssystemberechtigungen
iOS
Der Zugriff auf Kamera, Standort und Fotos erfordert die ausdrückliche Genehmigung des Benutzers. Info.plist definiert Beschreibungen.
###Android
Im Manifest deklarierte Berechtigungen. Gefährliche Berechtigungen erfordern eine Laufzeiteinwilligung.
Gute Praktiken
- Bestellen Sie zum Zeitpunkt der Nutzung, nicht im Voraus.
- Erklären Sie, warum Sie es brauchen.
- Bei Ablehnung ordnungsgemäß ausführen.
Token und Ansprüche
JWT-Ansprüche
Token kann Berechtigungsansprüche enthalten. Der Server validiert ohne Rücksprache mit der Bank.
Bereiche in OAuth
Sie definieren, auf welche Ressourcen der Token zugreifen kann. read:users, write:posts.
Pflege
Große Token wirken sich auf die Leistung aus. Balance zwischen Inline-Ansprüchen und Beratung.
Autorisierung in APIs
Überprüfung durch Endpunkt
Jeder Endpunkt prüft vor der Ausführung eine bestimmte Berechtigung.
Ressourcenserver
Der API-Server validiert Token und autorisiert basierend auf Bereichen und Ansprüchen.
Policy Decision Point (PDP)
Zentraler Dienst, der über Berechtigungen entscheidet. Ein Beispiel ist Open Policy Agent (OPA).
Implementierungsmuster
Standardmäßig ablehnen
Den Zugriff verweigern, es sei denn, dies ist ausdrücklich erlaubt. Ausfallsicher.
Geringstes Privileg
Mindestzuschuss erforderlich. Der Benutzer kann nur das, was er braucht.
Aufgabenteilung
Kritische Aufgaben erfordern mehrere Personen. Niemand macht alles alleine.
Überwachung und Protokollierung
Entscheidungen aufzeichnen
Protokoll darüber, wer versucht hat, auf was zuzugreifen und ob dies erlaubt oder verweigert wurde.
Anomalieerkennung
Verdächtige Muster: viele Ablehnungen, Zugriff außerhalb der Geschäftszeiten, Rechteausweitung.
Compliance
Vorschriften erfordern einen Prüfpfad. DSGVO, SOX, HIPAA.
Häufige Fehler
Verifizierung nur im Frontend
Das Backend sollte immer überprüfen. Frontend ist manipulierbar.
Rollen fest codiert
Es macht die Evolution schwierig. Nutzen Sie flexible Konfigurationen.
Übermäßige Berechtigungen
Geben Sie der Einfachheit halber mehr Zugriff als nötig. Prinzip der geringsten Privilegien.
Mangel an Tests
Schlecht getestete Berechtigungen schaffen Lücken. Testen Sie Zugriffsszenarien.
Tools und Bibliotheken
Kasbin
Autorisierungsbibliothek mit Unterstützung für mehrere Modelle (RBAC, ABAC, ACL).
Open Policy Agent (OPA)
Richtlinien-Engine. Berechtigungsentscheidungen als Code.
Auth0 FGA
Feingranulare Autorisierung. Modell ähnlich dem Sansibar von Google.
Ory Keto
Von Sansibar inspirierte Open-Source-Implementierung.
Mandantenfähigkeit und Autorisierung
Isolation
Mieter greifen nicht gegenseitig auf die Daten zu. Prüfung aller Abfragen.
Rollen nach Mandant
Benutzer können in verschiedenen Organisationen unterschiedliche Rollen haben.
Super Admin
Mandantenübergreifender Zugriff für den Plattformbetrieb. Mit äußerster Vorsicht verwenden.
Fazit
Eine gut implementierte Autorisierung schützt Daten und stellt sicher, dass Benutzer nur das tun, was sie tun sollen. Wählen Sie ein geeignetes Modell (für die meisten RBAC), implementieren Sie es standardmäßig mit „Deny“, testen Sie es gründlich und prüfen Sie den Zugriff. Sicherheit ist ein fortlaufender Prozess und keine einmalige Konfiguration.
##FAQs
1) Ist RBAC für die meisten Fälle ausreichend? Ja. RBAC bedient die meisten Anwendungen gut. ABAC ist für komplexere Szenarien gedacht.
2) Wo werden Berechtigungen gespeichert? Datenbank zur Quelle der Wahrheit. Cache (JWT-Ansprüche, Redis) für Leistung.
3) Wie gehe ich mit verweigerter Erlaubnis um? Geben Sie 403 Forbidden mit allgemeiner Nachricht zurück. Geben Sie keine Richtliniendetails preis.
4) Benötige ich einen separaten Autorisierungsdienst? Bei großen Systemen kann es sich lohnen. Für kleinere Apps reicht die integrierte Bibliothek.
5) Wie teste ich die Autorisierung? Automatisierte Tests, die den erlaubten und verweigerten Zugriff nach Rolle/Berechtigung prüfen.
Lesen Sie auch
- Autorisierung und Berechtigungen – Best Practices-Grundlagen
- Autorisierung und Berechtigungen: Best Practices, die unbefugten Zugriff verhindern
- Anwendungsauthentifizierung: Vollständiger Sicherheits- und UX-Leitfaden
- Einführung in Deno: Praktischer Leitfaden für die moderne Entwicklung
- Cloud Native Security: Sicherung von Kubernetes-Infrastrukturen
- Serveraktionen in Next.js: Mutationen, ohne nur dafür eine API zu pflegen
