2016-10-28 5 views
4

Die Anwendungs-Webbenutzerschnittstelle unter http: //: 4040 listet Spark-Eigenschaften auf der Registerkarte "Umgebung" auf. Alle Werte, die explizit in der Datei spark-defaults.conf, SparkConf oder der Befehlszeile angegeben sind, werden angezeigt. Aus Sicherheitsgründen möchte ich jedoch nicht, dass mein Cassandra-Passwort in der Webbenutzeroberfläche angezeigt wird. Gibt es eine Art Schalter, um sicherzustellen, dass bestimmte Funkeneigenschaften nicht angezeigt werden ??Ausblenden einer Funke-Eigenschaft von der Anzeige in der Spark-Web-Benutzeroberfläche ohne Implementierung eines Sicherheitsfilters

Bitte beachten Sie, dass ich einige Lösungen sehe, die vorschlagen, einen Sicherheitsfilter zu implementieren und die Einstellung spark.ui.filters für die Klasse zu verwenden. Ich hoffe, diese Komplexität zu vermeiden.

+0

Wie lautet der Schlüsselname für Ihr casaandra-Passwort? – VladoDemcak

+0

@VladoDemcak "spark.cassandra.auth.password" –

+0

sieht aus wie Ihre Lösung kommt mit Funken 2.0.1 – VladoDemcak

Antwort

2

Ich denke, es gibt keine gemeinsame Lösung, wie Sie Ihre benutzerdefinierte Eigenschaft aus Spark WebUI für frühere Versionen ausblenden.

Ich nehme an, Sie verwenden Spark 2.0 oder niedriger (ich habe keine Funktion in 2.0 unten beschrieben), weil 2.0.1 Passwörter Vorverarbeitung zu "*****" unterstützt.

prüfen Ausgabe SPARK-16796 Visible passwords on Spark environment page

Wenn wir einen Blick in Apache Funken Quellcode nehmen und einige Untersuchungen tun können wir einige Verarbeitung sehen, wie zu "verstecken" Eigenschaft in Funken web Ui.

SparkUI standardmäßig ist die Umgebung Seite angebracht innerhalb Initialisierung attachTab(new EnvironmentTab(this)) [line 71]

EnvironmentPage Eigenschaften EnvironmentPage als Register in Web GUI macht als:

def render(request: HttpServletRequest): Seq[Node] = { 
    val runtimeInformationTable = UIUtils.listingTable(
     propertyHeader, jvmRow, listener.jvmInformation, fixedWidth = true) 
    val sparkPropertiesTable = UIUtils.listingTable(
     propertyHeader, propertyRow, listener.sparkProperties.map(removePass), fixedWidth = true) 
    val systemPropertiesTable = UIUtils.listingTable(
     propertyHeader, propertyRow, listener.systemProperties, fixedWidth = true) 
    val classpathEntriesTable = UIUtils.listingTable(
     classPathHeaders, classPathRow, listener.classpathEntries, fixedWidth = true) 
    val content = 
     <span> 
     <h4>Runtime Information</h4> {runtimeInformationTable} 
     <h4>Spark Properties</h4> {sparkPropertiesTable} 
     <h4>System Properties</h4> {systemPropertiesTable} 
     <h4>Classpath Entries</h4> {classpathEntriesTable} 
     </span> 

    UIUtils.headerSparkPage("Environment", content, parent) 
    } 

alle Objekte ohne irgendeine Art gemacht werden, Verbergen der Vorverarbeitung außer sparkProperties - mit der Funktionalität, die in removePass zur Verfügung gestellt wird.

private def removePass(kv: (String, String)): (String, String) = { 
    if (kv._1.toLowerCase.contains("password")) (kv._1, "******") else kv 
} 

wie können wir alle Schlüssel sehen, die „password“ enthält (BTW: in der Master-Zweig sie auch Schlüssel mit Stichwort „Geheimnis“ Filterung check if u are interested in)

Ich kann jetzt nicht getestet, aber u kann versuchen, Funken zu aktualisieren. so z. SparkSubmitArguments.scala in mergeDefaultSparkProperties() wird spark.cassandra.auth.password als Funken betrachten und als sparkProperties (mit removePass Vorverarbeitung) ausfüllen.

Und am Ende des Tages in EnvironmentTab in Web GUI sollte diese Eigenschaft als **** sichtbar sein.

Verwandte Themen