Wie Sie den Hadoop-Client in einem sicheren (Kerberos-) Cluster an die Benutzer-korrekten Anmeldeinformationen übergeben

9

Ich habe ein Hadoop (CDH412) Cluster-Setup, das für die Authentifizierung und Autorisierung mit Kerberos aktiviert wurde. Ich habe alles gut (Hdfs, Mapred, Tierpfleger, HBase, Bienenstock, etc.). Ich habe jedoch ein Problem mit dem Zugriff auf hdfs Daten aus einer Java App.

Meine Java-App ist ein Dienst, der im Hintergrund ausgeführt wird. Aus diesem Grund kann kein Passwort eingegeben werden, ich muss eine Keytab-Datei verwenden. Sollte kein Problem sein. Es funktioniert gut, wenn ich zuerst ein 'kinit' mache, ala ...

%Vor%

Wenn ich jedoch versuche, dies in Java-Code zu tun (ich habe gelesen, dass LoginContext.logon dasselbe tut wie das kinit), schlägt es fehl.

Um zu versuchen, dies zu testen, habe ich das folgende Code-Snippet geschrieben ....

%Vor%

Meine jaas.conf Datei sieht so aus .....

%Vor%

Wenn ich den obigen Java-Code ausführe, scheint die LoginContext.login korrekt zu funktionieren .... Ich bekomme eine Debug-Anweisung, die

sagt %Vor%

Wenn der Code versucht, die HDFS-Datei (fs.open) zu öffnen, schlägt die App jedoch mit einer PriviledgedActionException fehl, die besagt:

%Vor%

Es versucht also, "fred" (meine Linux-Anmeldung) zu verwenden, um auf diese Dateien zuzugreifen, anstatt auf meine Hauptinformationen aus der Keytab-Datei. Wenn ich ein kinit zuerst mache, funktioniert es gut .... aber soll nicht auch LoginContext dasselbe machen?

Hinweis: Dies ist eine ActiveDirectory "Version" von Kerberos. Es verwendet keine Vertrauensstellungen ... nur direkt zu ActiveDirectory.

    
Wanderer 18.01.2013, 13:18
quelle

1 Antwort

0

Ich werde das für unsere Active Directory-Implementierung verantwortlich machen. Ich habe das mit einem MIT Kerberos gemacht und es hat gut funktioniert. Geschlossen.

    
Wanderer 03.04.2013, 17:31
quelle