SparkSQL ThriftServer 安全相关功能的现状分析

简介: SparkSQL Thrift Server 是 Spark SQL基于 Apache Hive的 HiveServer2开发的,通过SparkSQL Thrift Server 可以使 Spark SQL支持 JDBC/ODBC 的连接方式,用户可以通过 JDBC and ODBC 协议,在Spark上执行 SQL。

SparkSQL Thrift Server

SparkSQL Thrift Server 是 Spark SQL基于 Apache Hive的 HiveServer2开发的,通过SparkSQL Thrift Server 可以使 Spark SQL支持 JDBC/ODBC 的连接方式,用户可以通过 JDBC and ODBC 协议,在Spark上执行 SQL.

ThriftServer的安全

HiveServer2 和 SparkSQL 的Thrift Server的安全主要包含以下两方面内容:

  • 认证(Authentication):

    认证就是验证用户的身份,就是我们通常说的登录
  • 授权(Authorization):

    授权就是验证用户是否有权限进行特定的操作,有时也叫鉴权。
    

ThriftServer 认证

Apache Hive HiveServer2 支持的认证

  • Kerberos authentication
    Kerberos authentication 是 Hadoop 强安全认证的一个重要方式, 在Thrift client 和 HiveServer2 之间,HiveServer2 和 Kerberos 的 HDFS 之间都是支持 Kerberos 的;
  • LDAP authentication
    在 Thrift client 和 HiveServer2 之间认证时,LDAP authentication 也是支持的;
  • Pluggable Authentication
    在 Thrift client 和 HiveServer2 之间的认证还可以通过实现 Pluggable authentication进行自定义的 Authentication,根据 HiveServer2 实现自己的 Provider 即可

Apache SparkSQL ThriftServer 的认证

理论上, Spark SQL Thrift Server 支持 Hive Server2 的所有的认证。(笔者测试了 Spark 2.1.1 的 Kerberos 支持是可以的)

ThriftServer 授权

Apache Hive HiveServer2 的认证

默认的 Hive Authorization

Hive 早期的授权方式,不安全。

Storage-based Authorization

Storage-based authorization 是基于 HDFS 文件的权限进行认证的, 一般授权可以控制的级别是 databases, tables 和 partitions,但是 Hive的 Grant/Revoke 是无效的

SQL standard-based Authorization

SQL standard-based Authorization 是在 Hive Metastore 中存储了权限的元数据信息,ThriftServer 可以通过读取对应的信息进行授权管理。这种场景下. Grant/Revoke 的 SQL 命令管理方式也是支持的。

Apache Sentry Authorization

Apache Sentry 也是一款不错的授权管理组件,由 Cloudera 主要维护,用户可以通过 HUE 和 Hive命令执行 grant/revoke SQL 语句。
老版本的 Sentry 基于 Hive 上的 Semantic Analyzer Hook, V2 基于 Hive Authorization Factory,也就是 SQL standard-based Authorization。

Spark Thrift Server 的授权

Storage-based Authorization

Storage-based Authorization 是依赖于 HDFS 上的文件权限的,Spark Thrift Server 可以使用, 但是 Spark Thrift Server 不支持 impersonation(类似hive.server2.enable.doAs=true),所以,用户通过Kerberos认证后,ThriftServer 只能以ThriftServer的身份去执行具体的查询
https://issues.apache.org/jira/browse/SPARK-5159

这个问题修复后,最好可以配合 Sentry 这种 Sentry-HDFS permission sync 一起用,在 HDFS 文件的权限 和 Warehouse 权限。

SQL standard-based Authorization

对于 SQL standard-based Authorization (Apache Sentry Authorization), Spark Thrift Server 不支持 SQL standard-based 认证。但是,社区中已经有相应的patch。

https://issues.apache.org/jira/browse/SPARK-8321
https://github.com/apache/spark/pull/11045

总结

  • STS(Spark Thrift Server) 支持 Kerberos Authentication
  • STS 不支持 SQL standard-based Authorization;
    https://github.com/apache/spark/pull/11045
  • STS 支持 Storage-based Authorization, 但是 STS 不支持impersonation (doAs), STS使用这种方式,其实并不能达到完整的授权管理;
  • 当 impersonation 支持后, 如果需要高效的管理,最好进入HDFS 文件和数据库权限同步的机制.

原创文章,如需转载,请先联系作者 dapeng.sdp#alibaba-inc.com
欢迎加入Apache Spark中国技术社区参与更多直播、讨论

image

目录
相关文章
|
存储 缓存 监控
JVM 21 的调优指南:如何进行JVM调优,JVM调优参数
聊聊关于JVM 21的优化指南。这篇文章将会深入探讨如何进行JVM调优,介绍一些关键的JVM调优参数,并提供12个实用的代码示例。由于篇幅较长,我会分几个部分来详细讲解,之前写的也有33篇系列教程JVM调优实战打击也可以去围观。
1260 0
|
SQL HIVE Python
[Hive]HiveServer2配置
HiveServer2(HS2)是一个服务器接口,能使远程客户端执行Hive查询,并且可以检索结果。HiveServer2是HiveServer1的改进版,HiveServer1已经被废弃。
5371 0
|
JSON 数据格式
Feign调用文件下载服务接口实例
Feign调用文件下载服务接口实例
1775 0
Feign调用文件下载服务接口实例
|
人工智能 自然语言处理 API
推荐几个常用免费的文本转语音工具
本文推荐了几款免费的文本转语音工具,包括功能全面的AI易视频、支持多语言的Google TTS、操作便捷的Natural Reader、离线使用的Balabolka以及轻量级的Speech2Go。其中AI易视频特别适合小说转语音,可智能分配角色音色,打造广播剧般的听觉体验。这些工具各具特色,能满足不同场景需求,助力内容创作更高效。
4140 5
|
11月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
792 3
|
机器学习/深度学习 人工智能 物联网
MiniMind:2小时训练出你的专属AI!开源轻量级语言模型,个人GPU轻松搞定
MiniMind 是一个开源的超小型语言模型项目,帮助开发者以极低成本从零开始训练自己的语言模型,最小版本仅需25.8M参数,适合在普通个人GPU上快速训练。
2969 10
MiniMind:2小时训练出你的专属AI!开源轻量级语言模型,个人GPU轻松搞定
|
人工智能 自然语言处理 程序员
通义灵码 AI 程序员使用指南
通义灵码 AI 程序员使用指南
|
人工智能 边缘计算 云计算
2024.11|云计算行业的商业模式创新方法及实践
截至2024年,全球云计算行业迈入全新阶段,从IaaS到大规模AI模型平台,技术与商业模式不断创新。本文分析全球最新技术进展,探讨云计算商业模式创新策略与实践,解析云服务厂商如何通过技术革新实现价值最大化,推动企业数字化与智能化转型。重点讨论AI与云计算的深度融合、边缘计算与去中心化发展、平台化与生态系统建设,以及数据安全与绿色云计算等关键议题。
1258 30
Win11、Win10 怎么让软件运行后台全部显示在任务栏上 win11任务栏展开显示所有软件图标
Win11、Win10 怎么让软件运行后台全部显示在任务栏上 win11任务栏展开显示所有软件图标
815 2
|
前端开发 JavaScript
在JavaScript中,回调函数、Promise和async/await这三种异步处理机制的优缺点
JavaScript的异步处理包括回调函数、Promise和async/await。回调函数简单易懂,但可能导致回调地狱和错误处理困难。Promise通过链式调用改善了这一情况,但仍有回调函数需求和学习成本。async/await提供同步风格代码,增强可读性和错误处理,但需ES8支持,不适用于并发执行。根据项目需求选择合适机制。