【问题标题】:Authentication for Spark standalone clusterSpark 独立集群的身份验证
【发布时间】:2018-06-03 04:06:13
【问题描述】:

我有一个在远程服务器上运行的独立 Spark 集群,而且我是 Spark 的新手。默认情况下,似乎没有身份验证方案保护集群主机的 (7077) 端口。任何人都可以简单地将自己的代码提交到集群,没有任何限制。

Spark documentation 声明可以在独立部署模式下使用spark.authenticate.secret 参数进行身份验证,但并未真正详细说明应该如何使用它。

是否可以使用某种共享密钥来阻止任何潜在的攻击者向集群提交任务?谁能解释一下具体是如何配置的?

【问题讨论】:

  • 一种可能是使用 Kerberos,您需要 Kerberos 票证才能提交作业
  • @cricket_007 感谢您的回复。那不需要 YARN 部署而不是独立的 Spark 部署吗?
  • Kerberos 没有绑定到 YARN,所以我不知道。不过,您已经用 Hadoop 标记了这个问题,所以这意味着 YARN 是可用的。一些关于 Spark 安全性的 Cloudera 文档 - cloudera.com/documentation/enterprise/latest/topics/…

标签: security hadoop authentication apache-spark pyspark


【解决方案1】:

有两个部分可以支持身份验证:

  1. 在主服务器和所有从服务器上设置秘密
  2. 向集群提交作业时使用相同的密钥

主从

在集群中的每台服务器上,将以下配置添加到conf/spark-defaults.conf

spark.authenticate.secret      SomeSecretKey

提交工作

当你初始化 spark 上下文时,你也应该添加相同的配置,即:

val conf = new SparkConf()
      .set("spark.authenticate.secret", "SomeSecretKey")
val sc = new SparkContext(conf)

或者如果您使用的是 SparkSession:

val spark = SparkSession.builder()
    .conf("spark.authenticate.secret", "SomeSecretKey")
    .getOrCreate()

【讨论】:

  • 我遇到了类似的问题。独立的 master 和 worker 可以很好地使用 spark-defaults.conf 文件中的 secret。但是,当我尝试在提交时使用 --property-file 选项时,我收到一个错误,必须设置密码。我尝试使用 -conf 选项在属性文件中将其作为 ENV 变量传递。你知道如何从 spark-submit 命令行传递它吗?
  • source 显示: .orElse(Option(secretKey)) .orElse(Option(sparkConf.getenv(ENV_AUTH_SECRET))) .orElse(sparkConf.getOption(SPARK_AUTH_SECRET_CONF)) 添加这些的正确方法是什么提交命令?
  • 如果不使用YARN,两个参数是设置“spark.authenticate true”和“spark.authenticate.secret SomeSecretKey”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
相关资源
最近更新 更多