apache-spark – 隐藏spark属性,使其不显示在spark web UI中,而无需实现安全过滤器

位于http://:4040的应用程序Web UI在“环境”选项卡中列出了Spark属性.将显示通过spark-defaults.conf,SparkConf或命令行显式指定的所有值.但是,出于安全原因,我不希望我的Cassandra密码显示在Web UI中.是否有某种开关来确保不显示某些火花属性?

请注意,我看到一些解决方案建议实现安全过滤器并使用spark.ui.filters设置来引用该类.我希望避免这种复杂性.

最佳答案 我认为没有通用的解决方案如何从以前版本的spark WebUI隐藏自定义属性.

我假设您正在使用spark 2.0或更低版本(我没有看到2.0中描述的功能),因为2.0.1支持将密码预处理为“*****”.

检查问题SPARK-16796 Visible passwords on Spark environment page

当我们看一下apache spark源代码并做一些调查时,我们可以看到一些处理如何在spark web ui中“隐藏”属性.

SparkUI
默认情况下,环境页面附加在初始化attachTab中(新的EnvironmentTab(this))[第71行]

EnvironmentPage将属性作为web 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
}

因为我们可以看到包含“密码”的每个密钥(顺便说一句:在主分支中他们也用关键字“秘密”check if u are interested in过滤密钥)

我现在无法测试,但你可以尝试更新火花.所以,例如. mergeDefaultSparkProperties()中的SparkSubmitArguments.scala将spark.cassandra.auth.password视为spark并填充为sparkProperties(使用removePass预处理).

在一天结束时,在web gui的EnvironmentTab中,这个属性应该显示为****.

点赞