2016-08-02 31 views
0

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

0

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

+0

Wie greife ich auf das Dateisystem als Benutzer, der Zugriff auf bestimmte Verzeichnisse hat? – user3375401

0

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
+0

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) –