Kerberos Authentifizierung und Delegation
Kerberos Delegation ermöglicht es einem Dienst (Service A), im Namen eines Benutzers auf einen anderen Dienst (Service B) zuzugreifen. Dies ist besonders nützlich in Szenarien, in denen ein Front-End-Service (wie ein Webserver) auf einen Back-End-Service (wie eine Datenbank) zugreifen muss, ohne dass der Benutzer seine Anmeldeinformationen an beide Dienste übermitteln muss. Technisch gesehen gibt es zwei Haupttypen der Delegierung: “Constrained Delegation” (beschränkte Delegierung) und “Unconstrained Delegation” (unbeschränkte Delegierung).
Kerberos Delegation
Technische Details der Kerberos-Delegation
1. Unconstrained Delegation (Unbeschränkte Delegierung)
Bei der unbeschränkten Delegierung kann ein Dienst, der das Kerberos-Ticket eines Benutzers erhält, dieses Ticket nutzen, um im Namen des Benutzers auf jeden anderen Dienst im Netzwerk zuzugreifen.
- Schritt 1: Benutzer-Authentifizierung Der Benutzer authentifiziert sich gegenüber dem Kerberos Key Distribution Center (KDC) und erhält ein Ticket Granting Ticket (TGT).
- Schritt 2: TGS-Request Der Benutzer stellt einen Ticket Granting Service (TGS) Request an das KDC, um ein Service Ticket für den Zugriff auf Service A zu erhalten.
- Schritt 3: Übergabe des Service Tickets an Service A Der Benutzer sendet das Service Ticket an Service A.
- Schritt 4: Delegierung durch Service A Service A speichert das TGT des Benutzers (da es unbeschränkte Delegierung nutzt). Wenn Service A auf Service B zugreifen muss, stellt es einen neuen TGS-Request im Namen des Benutzers an das KDC und erhält ein Service Ticket für Service B.
- Schritt 5: Zugriff auf Service B Service A verwendet das erhaltene Service Ticket, um auf Service B zuzugreifen, als wäre es der Benutzer selbst.
2. Constrained Delegation (Beschränkte Delegierung)
Bei der beschränkten Delegierung kann ein Dienst im Namen eines Benutzers nur auf spezifische, vordefinierte Dienste zugreifen.
- Schritt 1: Benutzer-Authentifizierung Wie bei der unbeschränkten Delegierung authentifiziert sich der Benutzer gegenüber dem KDC und erhält ein TGT.
- Schritt 2: TGS-Request Der Benutzer stellt einen TGS-Request, um ein Service Ticket für den Zugriff auf Service A zu erhalten.
- Schritt 3: Übergabe des Service Tickets an Service A Der Benutzer sendet das Service Ticket an Service A.
- Schritt 4: Service A fordert ein Service Ticket für Service B an Service A sendet eine Anfrage an das KDC für ein Service Ticket im Namen des Benutzers für Service B. Bei der beschränkten Delegierung prüft das KDC, ob Service A berechtigt ist, im Namen des Benutzers auf Service B zuzugreifen (basierend auf einer Liste zulässiger Dienste).
- Schritt 5: Zugriff auf Service B Wenn die Berechtigung besteht, erhält Service A ein Service Ticket für Service B und kann dieses nutzen, um auf Service B im Namen des Benutzers zuzugreifen.
Weiterleitung der Zugangsdaten
Bei der Kerberos-Delegierung werden die Zugangsdaten (in Form von Tickets) durch den folgenden Mechanismus weitergeleitet:
- Tickets statt Passwörter: Anstelle des Passworts des Benutzers werden kryptografische Tickets genutzt. Diese Tickets enthalten verschlüsselte Informationen über die Identität des Benutzers und die Berechtigungen, die sie haben.
- Forwardable TGTs (weiterleitbare TGTs): Um Delegierung zu ermöglichen, können TGTs als “forwardable” gekennzeichnet werden. Dies erlaubt es dem Dienst, dieses TGT zu verwenden, um weitere Service Tickets im Namen des Benutzers anzufordern.
- Vertrauensmodell: Das gesamte Modell basiert darauf, dass das KDC als vertrauenswürdiger Mittler fungiert. Es sorgt dafür, dass nur Dienste, die ausdrücklich autorisiert sind, Tickets im Namen eines Benutzers erhalten.
Dieses System ermöglicht eine sichere und skalierbare Methode zur Authentifizierung und Autorisierung in verteilten Systemen, ohne dass Benutzeranmeldeinformationen zwischen Diensten hin- und hergeschickt werden müssen.