我建立了一个HDP集群,其中包含Spark。我还为群集启用了Kerberos,因此所有服务和用户都必须通过其主体进行身份验证。
这似乎工作正常,所有服务都在运行,并且用户必须先获得有效的Kerberos票证才能访问例如YARN ResourceManager的Web UI。
否则他会收到如下错误消息:
但是,在kinit
之后,用户可以访问该网站。
我现在想做的事情(我认为已经是这样),也是为了保护Spark History Server UI,以便用户必须通过Kerberos票证进行身份验证。实际上每个人都可以在没有身份验证的情
是否有可能这样做?如果是,我该如何配置?
spark.eventLog.dir = hdfs:///spark-history
的实际权限为777
。这里是Ambari HDFS视图的屏幕截图:
答案 0 :(得分:2)
您为Kerberos / SPNEGO重用Hadoop的jetty身份验证过滤器org.apache.hadoop.security.authentication.server.AuthenticationFilter
您可以通过设置Spark的default.conf来完成此操作
spark.ui.filters=org.apache.hadoop.security.authentication.server.AuthenticationFilter
和
spark.org.apache.hadoop.security.authentication.server.AuthenticationFilter.params=
type=kerberos,kerberos.principal=${spnego_principal_name},kerberos.keytab=${spnego_keytab_path}
小心那些替换变量,在Ambari中设置这些值时它们对我不起作用。另外,请考虑添加cookie.domain
和signature.secret.file
,与其他Hadoop SPNEGO配置类似。
显然,这仅在Spark History Server在其类路径中使用Hadoop类运行时才有效 - 因此它不是SMACK-stack的开箱即用解决方案。