Personal details
| Title | Tokenbasierte Authentifizierung und Autorisierung für verteilte Odysseus-Umgebungen |
| Description | Hintergrund Odysseus ist ein an der Universität Oldenburg entwickeltes Datenstrommanagementsystem. Es ermöglicht die kontinuierliche Verarbeitung von Datenströmen und kann Anfragen auf mehrere miteinander verbundene Odysseus-Knoten verteilen. Weitere Informationen zum System sind unter https://odysseus.uni-oldenburg.de verfügbar. Odysseus besitzt derzeit ein integriertes Benutzermanagement. Benutzerinnen und Benutzer melden sich an einem Odysseus-Knoten an und erhalten abhängig von ihren Rollen und Berechtigungen Zugriff auf Anfragen, Dienste und administrative Funktionen. In einer verteilten Umgebung reicht eine rein lokale Authentifizierung jedoch nicht aus. Ein Odysseus-Knoten kann im Auftrag eines Benutzers Operationen auf einem anderen Knoten ausführen, beispielsweise:
Der entfernte Knoten kennt dabei die ursprüngliche Identität und die Berechtigungen des Benutzers bislang nicht zuverlässig. Daher werden solche Knotenverbindungen in der Praxis häufig mit administrativen Zugangsdaten eingerichtet. Dies führt dazu, dass ein entfernter Aufruf wesentlich mehr Berechtigungen besitzt, als für die jeweilige Operation benötigt werden. Dieses Vorgehen widerspricht dem Prinzip der minimal erforderlichen Berechtigungen. Außerdem kann eine ausgeführte Aktion nicht zuverlässig dem ursprünglich verantwortlichen Benutzer zugeordnet werden. Ziel der Arbeit Ziel der Bachelorarbeit ist die Konzeption und prototypische Implementierung einer tokenbasierten Authentifizierung und Autorisierung für verteilte Odysseus-Umgebungen. Als Referenzimplementierung für die zentrale Benutzerverwaltung, Authentifizierung und Tokenausstellung soll Keycloak untersucht und eingesetzt werden. Die Odysseus-seitige Lösung soll möglichst auf standardisierten Verfahren wie OpenID Connect, OAuth 2.0 und signierten JWT Access Tokens basieren, damit sie nicht unnötig stark an Keycloak gebunden ist. Wenn ein Odysseus-Knoten im Auftrag eines Benutzers auf einen anderen Knoten zugreift, sollen dessen Identität und die für die konkrete Operation erforderlichen Berechtigungen sicher weitergegeben werden. Der entfernte Knoten soll das Token selbstständig prüfen und die Operation nur dann ausführen, wenn die enthaltenen Berechtigungen ausreichen. Dabei sollen weder Benutzerpasswörter zwischen den Knoten übertragen noch dauerhafte Administratorkonten für die Knotenkommunikation verwendet werden. Die zentrale Forschungsfrage lautet: Wie können Identität und Berechtigungen eines Benutzers mithilfe eines zentralen Identity Providers sicher zwischen mehreren Odysseus-Knoten weitergegeben und überprüft werden, ohne pauschale Administratorrechte zu verwenden? Grundidee Keycloak übernimmt als zentraler Identity Provider beziehungsweise Authorization Server insbesondere folgende Aufgaben:
Die Odysseus-Knoten agieren als geschützte Resource Server. Sie validieren eingehende Access Tokens und prüfen anschließend, ob die darin enthaltenen Rollen oder Scopes für die gewünschte Operation ausreichen. Ein beispielhafter Ablauf ist:
Authentifizierung und Autorisierung Die Arbeit soll klar zwischen Authentifizierung und Autorisierung unterscheiden. Authentifizierung Die Authentifizierung stellt fest, welche Person oder welcher Dienst eine Anfrage stellt. Diese Aufgabe soll im Prototyp grundsätzlich durch Keycloak übernommen werden. Das WebStudio verwendet OpenID Connect für die Anmeldung. Für Aufrufe der Odysseus-REST-Schnittstellen werden Access Tokens verwendet. OpenID-Connect-ID-Tokens sollen nicht als Zugriffstoken für die REST-Schnittstellen verwendet werden. Autorisierung Die Autorisierung entscheidet, ob die identifizierte Person oder der Dienst eine konkrete Aktion auf einer bestimmten Odysseus-Ressource ausführen darf. Ein gültiges Access Token allein gewährt daher nicht automatisch Zugriff auf alle Funktionen. Der jeweilige Odysseus-Knoten muss zusätzlich prüfen:
Keycloak liefert Identität und Berechtigungsmerkmale. Die fachliche Auswertung dieser Merkmale bleibt Aufgabe von Odysseus. Direkte Tokenweitergabe und Token Exchange Im Rahmen der Arbeit sollen zwei Ansätze untersucht und miteinander verglichen werden. Direkte Tokenweitergabe Knoten A reicht das vom WebStudio erhaltene Access Token an Knoten B weiter. Dieser Ansatz ist vergleichsweise einfach. Er setzt jedoch voraus, dass das Token auch für Knoten B gültig ist. Außerdem kann es mehr Berechtigungen und Empfänger enthalten, als für den konkreten Aufruf erforderlich sind. Token Exchange Knoten A tauscht das vorhandene Access Token bei Keycloak gegen ein neues Token aus, das für Knoten B und die benötigte Operation ausgestellt wird. Ein solches Token kann beispielsweise folgende Eigenschaften besitzen: audience = odysseus-node-b scopes = queries:create queries:start lifetime = 60 Sekunden Das ursprüngliche Token könnte dagegen zusätzliche Rechte enthalten: queries:create queries:start queries:stop queries:delete users:manage Der Token Exchange ermöglicht somit eine Einschränkung des Empfängers, der Gültigkeitsdauer und der weitergegebenen Berechtigungen. Keycloak unterstützt dafür einen standardisierten Token-Exchange-Mechanismus. Die prototypische Umsetzung soll nach Möglichkeit die direkte Tokenweitergabe als einfache Ausgangslösung und Token Exchange als abgesicherte Variante betrachten. |
| Home institution | Department of Computing Science |
| Associated institutions |
|
| Type of work | practical / application-focused |
| Type of thesis | Bachelor's |
| Author | Dr. Marco Grawunder |
| Status | assigned |
| Problem statement | Aufgabenstellung Im Rahmen der Arbeit sollen insbesondere folgende Aufgaben bearbeitet werden:
Rollen und Berechtigungen Im Rahmen der Arbeit soll ein geeignetes Berechtigungsmodell für ausgewählte Operationen entwickelt werden. Mögliche Scopes sind beispielsweise: queries:read queries:create queries:start queries:stop queries:delete results:read services:read nodes:read nodes:delegate Neben globalen Rollen soll untersucht werden, inwieweit Berechtigungen an konkrete Ressourcen gebunden werden müssen. Ein Benutzer könnte beispielsweise berechtigt sein:
Die Arbeit soll sich auf eine überschaubare Auswahl von Operationen aus dem Lebenszyklus einer verteilten Anfrage konzentrieren. Benutzer- und Dienstidentitäten In einer verteilten Umgebung müssen zwei Arten von Identitäten unterschieden werden:
Keycloak kann Odysseus-Knoten als eigene Clients mit Service Accounts verwalten. Damit kann ein Knoten technische Operationen unter seiner eigenen Identität ausführen. Bei einer delegierten Benutzeroperation soll der Zielknoten dagegen nachvollziehen können:
Diese Trennung ist insbesondere für Autorisierungsentscheidungen, Audit-Logs und die Erkennung einer unzulässigen Rechteausweitung relevant. Tokenvalidierung auf den Odysseus-Knoten Die Odysseus-Knoten sollen Access Tokens lokal anhand der von Keycloak veröffentlichten öffentlichen Schlüssel validieren können. Dadurch ist nicht für jeden REST-Aufruf eine synchrone Anfrage an Keycloak erforderlich. Mindestens folgende Eigenschaften sollen geprüft werden:
Die Validierung kann beispielsweise durch einen Filter der REST-Schnittstelle erfolgen. Nach erfolgreicher Prüfung wird aus den Tokeninformationen ein Odysseus-Sicherheitskontext erzeugt, der von den einzelnen Endpunkten für die Autorisierung verwendet wird. Keycloak-Konfiguration Für den Prototyp soll ein Keycloak-Realm mit mindestens folgenden Clients aufgebaut werden:
Dabei soll untersucht werden:
Die Konfiguration soll reproduzierbar dokumentiert und nach Möglichkeit automatisiert bereitgestellt werden. Sicherheits- und Vertrauensmodell Zu Beginn der Arbeit soll ein Bedrohungs- und Vertrauensmodell entwickelt werden. Dieses soll unter anderem folgende Fragen beantworten:
Insbesondere soll zwischen Delegation und Impersonation unterschieden werden. Ein Odysseus-Knoten darf nicht ohne nachprüfbaren Auftrag beliebig die Identität eines Benutzers annehmen. Beispielhafter Ablauf Ein möglicher Ablauf bei der verteilten Ausführung einer Anfrage ist:
Fragestellungen Die Arbeit soll unter anderem folgende Fragen untersuchen:
Evaluation Der entwickelte Ansatz soll in einer Testumgebung mit Keycloak, WebStudio und mindestens zwei Odysseus-Knoten evaluiert werden. Dabei sollen unter anderem folgende Szenarien untersucht werden:
Mögliche Bewertungskriterien sind:
Abgrenzung Im Mittelpunkt stehen die Authentifizierung über Keycloak und die Delegation von Identität und Berechtigungen zwischen Odysseus-Knoten. Nicht zwingend Bestandteil der Arbeit sind:
Die prototypische Umsetzung kann auf ausgewählte Operationen aus dem Lebenszyklus verteilter Anfragen begrenzt werden. Erwartete Ergebnisse Am Ende der Arbeit sollen vorliegen:
|
| Requirement | Voraussetzungen Hilfreich sind Kenntnisse oder Interesse in folgenden Bereichen:
Kenntnisse über Odysseus, Keycloak, OAuth oder OpenID Connect werden nicht vorausgesetzt und können im Rahmen der Arbeit erworben werden. |
| Created | 16/09/26 |