Wie implementiert man ABAC in einer REST-API ohne zu viel Komplexität?
#1
Ich stecke gerade in einem API-Design fest, weil ich nicht weiß, wie ich mit den Berechtigungen für verschiedene Nutzergruppen umgehen soll. In meinem letzten Projekt habe ich eine recht starre Rollen-basierte Struktur verwendet, aber jetzt brauche ich etwas, das feiner granulierte Zugriffssteuerung ermöglicht. Ich frage mich, ob jemand schon mal mit einem Ansatz für attributbasierte Zugriffskontrolle in einer REST-API experimentiert hat und wie das in der Praxis gelaufen ist.
Zitieren
#2
Ich habe ABAC in einer REST API getestet und es war weniger eine neue Technologie als eine andere Denkweise zum Zugriff. Die Idee mit Attributen aus dem Benutzer Kontext aus dem Resource Kontext und aus der Umgebung klingt gut wenn man feine Kontrolle braucht. In der Praxis war die Integration mit einem Policy Engine wie OPA hilfreich weil klar modellierbare Regeln nötig sind. Man kann Attribute wie Rolle Kontextstandort Zeit oder Objektbesitz nutzen und Entscheidungen dann declarativ festlegen. Die größte Hürde ist die Quelle der Attribute und wie stabil sie im Betrieb bleiben. Wenn der Policy Check jede Anfrage trifft kann das Performance kosten also braucht man Caching und sinnvolle Policy Caching Strategien. Außerdem ergibt sich eine Frage wie viel Sicherheit man wirklich braucht bevor man auf jede Aktion eine Abfrage schickt. Letztlich ist ABAC kein Wunderwerk sondern eine Methode mit Stärken und Kompromissen und es fühlt sich oft so an als müsste man beides kombinieren RBAC für einfache Muster und ABAC für Grenzfälle. Was meinst du wie du Attribute effizient in deinen Flow bringst.
Zitieren
#3
ABAC klingt ja clever aber ich frage mich oft ob es die Komplexität wirklich wert ist. In vielen Projekten reicht RBAC mit fein abgestimmten Rollen oder zumindest eine hybride Lösung. REST APIs sollten sauber argumentieren wer was darf aber zu viele Attribute machen die Schnittstelle schwer vorhersagbar. Ein wichtiger Punkt ist die Quelle der Attribute wie Claims aus dem JWT oder externe Identitätsanbieter und wie robust diese Quellen im Betrieb sind. Wenn Attribute sich ändern kann das zu Inkonsistenzen führen und dann ist das Audit nicht mehr eindeutig. Wie oft ändern sich Attribute wirklich im laufenden Betrieb?
Zitieren
#4
Ich neige zu einem hybriden Ansatz bei dem RBAC den Großteil abdeckt und ABAC nur für Grenzfälle greift. So teilst du die Basiskontrolle durch Rollen und öffnest nur wenn bestimmte Attribute erfüllen musst. In einer REST API bedeuten ABAC Entscheidungen oft dass du einen Policy Check in der Service Schicht platzierst der Attribute aus dem Token aus dem Request zusammen mit Objekt Attributen evaluiert. Der Spagat ist die Policy Sprache verständlich zu halten und gleichzeitig flexibel zu bleiben. Ein zentrales Missverständnis ist dass ABAC alleine alle Probleme löst und dass man mit guten Tests das Verhalten sicherstellen kann.
Zitieren
#5
Was wenn das eigentliche Problem nicht die Zugriffskontrolle ist sondern wie wir API Rechte modellieren und dokumentieren. Vielleicht geht es eher um Transparenz für Client Entwickler und klare Audit Logs als um die feinste Granularität. ABAC kann dann als eine Artefaktlinie erscheinen statt als Lösung. Vielleicht sollte man die Nutzererfahrung und die API Vertragssicherheit in den Vordergrund stellen und ABAC nur implizit wirken lassen statt offen zu policy gate. Oder ist das alles nur eine Verschränkung von Policy und Dokumentation?
Zitieren


[-]
Schnellantwort
Nachricht
Geben Sie hier Ihre Antwort zum Beitrag ein.

Bestätigung
Bitte den Code im Bild in das Feld eingeben. Dies ist nötig, um automatisierte Spambots zu stoppen.
Bestätigung
(Keine Beachtung von Groß- und Kleinschreibung)

Gehe zu: