Die UserGroupInformation-Klasse verfügt über eine loginUserFromKeytab-Methode, die den Benutzerprinzipalnamen und den Namen einer Schlüsseltabellendatei verwendet. Sie geben das Service-Prinzipal nicht an. Ich dachte, dass Kerberos den Dienstprinzipal benötigen würde. Kann jemand die Lücken ausfüllen, die mir fehlen?Grundlegendes zur Hadoop-Client-API mit Kerberos
Antwort
Im kerberisierten Cluster gibt es zwei Arten von Konten - einfache Benutzer und Benutzer - Dienste. Aus technischer Sicht sind sie gleich und bestehen aus drei Teilen - primary/instance @ REALM. Aber einfache Benutzer werden authentifiziert, indem sie den prinzipiellen Namen und das Passwort angeben. Es kann so konfiguriert werden, dass es entweder Cluster-KDC verwendet oder auf Active Directory-KDC innerhalb vertrauenswürdiger Beziehungen zugreifen kann. Für Nutzer-Dienste wird Kaytabs Ansatz verwendet. Das bedeutet, dass der Administrator eine Keytab-Datei erstellt, die eine Liste der dafür gültigen Prinzipien enthält. Sie können die Prinzipien innerhalb keytab von erhalten:
klist -kt path_to_keytab
loginUserFromKeytab Verwenden Sie sagen wollen Kerberos-Ticket zu Ihrem aktuellen Benutzer zu einem gewissen Dienst erhalten mit Keytab-Datei. Als Parameter sollten Sie den Pfad zu Keytab und den Namen des Service-Prinzips innerhalb der Keytab angeben. Wenn Sie es gelungen, Ihre aktuellen Benutzer oder die Ausführung Kontext Eigentümer wird das Ticket mit allen notwendigen Berechtigungen erhalten, um auf den Dienst zugreifen
AFAIK der „Login“ Methode ist nur verantwortlich für Erstbenutzer Authentifizierung auf Client-Seite
- zu KDC verbinden
- assert es ist „Kapital“, herausgefordert, reagieren verschlüsseltes Passwort mit (das ist, was in der Keytab-Datei ist)
- abrufen ein Ticket-granting Ticket (TGT) angezeigt, wie
krbtgt/[email protected]
Dann jede und jeder Hadoop API ihre eigene Genehmigung verwalten aber auf Server-Seite
Auftraggeber:
- das TGT zur Verbindungszeit, als Nachweis der Authentifizierung
Service:
- prüfen, ob dieses Prinzip nicht schwarze Liste ist
- zu KDC Verbindung zu prüfen, ob TGT tatsächlich gültig ist, danndie entsprechende Service-Ticket zu erzeugen (so dass eine weitere Client -Dienst Verkehr die Hin- und Rückfahrt zu KDC) überspringen kann
- Prüfung, die „Gruppen“ die Haupt auf einer steckbaren Berechtigungs Bibliothek basierte gehört (siehe HDFS documentation unter „Berechtigungen zum Beispiel> Gruppen Mapping ")
- alle Berechtigungsprüfungen basieren auf Prinzipalnamen und Gruppennamen
PS: der KDC-Teil ist eigentlich viel komplizierter als das, besonders wenn der Principal und der Dienst nicht im * selben * REALM sind, und es wird eine 4-way oder sogar 5-way brawl (dramatis personae: client, KDC zuständig für Client, KDC zuständig für bereichsübergreifendes Vertrauen, KDC zuständig für Service, Service) –
Wie greife ich auf das Dateisystem als Benutzer, der Zugriff auf bestimmte Verzeichnisse hat? – user3375401