Spark Security
Spark目前通过共享密钥支持身份验证。 可以通过spark.authenticate配置参数将身份验证配置为打开。 此参数控制Spark通信协议是否使用共享密钥进行身份验证。 此身份验证是一种基本握手,可确保双方具有相同的共享密钥并允许进行通信。 如果共享密钥不相同,则不允许它们进行通信。 共享密钥创建如下:
- 对于YARN部署上的Spark,将spark.authenticate配置为true将自动处理生成和分发共享密钥。 每个应用程序将使用唯一的共享密钥。
- 对于其他类型的Spark部署,应在每个节点上配置Spark参数spark.authenticate.secret。 所有主人/工人和应用程序都将使用此秘密。
Web UI
可以通过spark.ui.filters设置使用javax servlet过滤器以及通过SSL设置使用https / SSL来保护Spark UI。
Authentication(认证)
如果用户具有不允许其他用户看到的数据,则用户可能希望保护用户界面。用户指定的javax servlet过滤器可以对用户进行身份验证,然后一旦用户登录,Spark就可以将该用户与视图ACL进行比较,以确保他们有权查看UI。配置spark.acls.enable,spark.ui.view.acls和spark.ui.view.acls.groups控制ACL的行为。请注意,启动应用程序的用户始终具有UI的视图访问权限。在YARN上,Spark UI使用标准的YARN Web应用程序代理机制,并将通过任何已安装的Hadoop过滤器进行身份验证。
Spark还支持修改ACL以控制谁有权修改正在运行的Spark应用程序。这包括杀死应用程序或任务等内容。这由configs spark.acls.enable,spark.modify.acls和spark.modify.acls.groups控制。请注意,如果您要对Web UI进行身份验证,那么为了在Web UI上使用kill按钮,可能还需要将修改请求中的用户添加到视图中。在YARN上,传入修改acls并控制谁通过YARN接口修改访问权限。 Spark允许在总是具有查看和修改所有应用程序权限的acls中指定一组管理员。由configs spark.admin.acls和spark.admin.acls.groups控制。这在您可能拥有帮助用户调试应用程序的管理员或支持人员的共享群集上非常有用。
Event Logging
如果您的应用程序正在使用事件日志记录,则应手动创建事件日志所在的目录(spark.eventLog.dir)并在其上设置适当的权限。 如果您希望这些日志文件受到保护,则应将该目录的权限设置为drwxrwxrwxt。 目录的所有者应该是运行历史记录服务器的超级用户,并且组权限应限制为超级用户组。 这将允许所有用户写入目录,但会阻止非特权用户删除或重命名文件,除非他们拥有该文件或目录。 Spark将创建事件日志文件,其权限使得只有用户和组具有读写访问权限。