在不实现安全过滤器的情况下,隐藏spark属性,使其不显示在spark web ui中

epfja78i  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(374)

位于http://:4040的应用程序web ui在“环境”选项卡中列出spark属性。将显示通过spark-defaults.conf、sparkconf或命令行显式指定的所有值。但是,出于安全原因,我不希望我的cassandra密码显示在webui中。是否有某种开关来确保某些Spark特性不会显示??
请注意,我看到一些建议实现安全过滤器并使用spark.ui.filters设置引用类的解决方案。我希望避免这种复杂性。

ipakzgxi

ipakzgxi1#

我认为在以前的版本中,没有通用的解决方案来隐藏sparkwebui的自定义属性。
我假设您使用的是spark 2.0或更低版本(我还没有在2.0中看到下面描述的特性),因为2.0.1支持对“******”进行密码预处理。
在“spark环境”页面上检查“发布spark-16796可见密码”
当我们查看apachespark源代码并进行一些调查时,我们可以看到一些如何在sparkwebui中“隐藏”属性的处理过程。
默认情况下,环境页附加在初始化中 attachTab(new EnvironmentTab(this)) [第71行]
environmentpage将属性呈现给 EnvironmentPage 作为web gui中的选项卡:

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
}

我们可以看到每个密钥都包含“password”(顺便说一句:在master分支中,他们还使用关键字“secret”过滤密钥,检查您是否感兴趣)
我现在不能测试,但你可以尝试更新Spark。例如sparksubmitarguments.scala in mergeDefaultSparkProperties() 将考虑 spark.cassandra.auth.password 作为Spark和填充 sparkProperties (与 removePass 预处理)。
在web gui的environmenttab中,一天结束时,该属性应显示为 **** .

相关问题