####1、问题背景
在Zeppelin连接Spark实现SQLStdBasedAuthorization权限验证一文中说明了使用Zeppelin的jdbc解析器连接Spark Thriftserver的鉴权处理方案,解决通过Thriftserver使用Spark sql的权限问题。
要让Spark全方位提供给不同层次用户使用,开放的使用接口除了Thriftserver(jdbc接口),还有Spark客户端来提供Spark shell(spark-sql)、Spark submit及如zeppelin等第三方工具提交代码的方式,如果不加权限控制则用户可以在代码中使用SQL直接读取库表数据。故本文将讨论解决Spark编程模式中使用代码调用SQL的权限控制处理方案。
下图是本人使用的接口情况:
如图,主要使用的是spark-sql、submit、spark jdbc和第三方工具如zeppelin提交代码的鉴权。
####2、不同接口调用SQL的调研
要让Spark全方位提供鉴权服务,首先需要对不同接口的调用模式进行调研,如下图调研结果所示。