2016-10-28 2 views
4

http://:4040のアプリケーションWeb UIには、「環境」タブのSparkプロパティがリストされています。 spark-defaults.conf、SparkConf、またはコマンドラインで明示的に指定されたすべての値が表示されます。 しかし、セキュリティ上の理由から、私はCassandraのパスワードをWeb UIに表示したくありません。特定のスパークプロパティが表示されないようにするためのスイッチがありますか?セキュリティフィルタを実装せずにスパークWeb UIにスパークプロパティを表示しないようにする

セキュリティフィルタを実装し、クラスを参照するためにspark.ui.filters設定を使用することをお勧めします。私はこの複雑さを避けることを望んでいます。

+0

casaandraパスワードのキー名は何ですか? – VladoDemcak

+0

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

+0

あなたのソリューションはスパーク2.0.1と同じように見えます – VladoDemcak

答えて

2

以前のリリースのWebUIからカスタムプロパティを隠す方法はありません。

2.0.1はパスワードの前処理が「*****」に対応しているため、あなたは2.0以降のsparkを使用していると仮定しています。

チェック発行SPARK-16796 Visible passwords on Spark environment page

我々はApacheのスパークソースコードに見てみると、いくつかの調査を行うと、我々はスパークウェブでプロパティを「非表示」にする方法いくつかの処理を見ることができますui。

SparkUI デフォルト環境ページが初期化attachTab(new EnvironmentTab(this))内に装着されているようライン71]

EnvironmentPageは、ウェブGUIのタブとしてEnvironmentPageにプロパティをレンダリングする:すべてのプロパティは、いくつかの種類なしでレンダリングさ

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

sparkProperties - removePassで提供される機能を除いて、前処理を隠しています。

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

私たちは、「パスワード」を含むすべてのキーを見ることができるように:私は今、テストすることはできません

(BTWマスターブランチに、彼らはまた、キーワード「秘密」check if u are interested inでキーをフィルタリング)が、Uスパークの更新を試みることができます。そうです。 SparkSubmitArguments.scalamergeDefaultSparkProperties()とすると、spark.cassandra.auth.passwordはスパークとみなされ、sparkPropertiesremovePassの前処理あり)と見なされます。

そして、Web GUIのEnvironmentTabで一日の終わりに、このプロパティは****として表示されます。

関連する問題