IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 基于ranger的presto账号权限管理及事件监听方案 -> 正文阅读

[大数据]基于ranger的presto账号权限管理及事件监听方案

背景:我司为解决hive数据分析慢问题,部署了presto 347版本集群。同时即席分析平台采用开源产品superset 1.0版本。

为满足公司业务场景,需开发以下功能解决认证及审计等问题。

  • jdbc等连接方式(开发同学专用)需验证ranger账号密码并通过ranger进行库表权限验证。
  • superset登录(数据分析同学使用)需验证公司sso账号,且superset端所有同学共用一个presto数据源连接,需单独设计权限认证方式。
  • 开发事件监听器,用于用户SQL查询情况审计等。

一、账号密码认证

经调研presto支持Password Authenticator接口的开发,可以在createAuthenticatedPrincipal()方法中实现自己的认证逻辑,最终返回

Principal对象用于之后的?System Access Control权限验证。经调研presto 347版本已支持 ranger的权限验证,ranger最低版本为2.0.0。

还有一个问题就是通过 presto jdbc传输密码必须开启https认证。我们为规避繁琐的服务端证书认证环节采用nginx做转发的方案完成。

即客户端开启ssl认证,nginx安装证书接收https请求并转发http请求到服务端。

具体方案如下:

  1. System Access Control权限认证采用ranger方案。
  2. 基于Password Authenticator接口开发ranger账号密码认证逻辑。
  3. 部署nginx做请求转发。

下面分别介绍下各步骤的具体实现:

1.配置权限认证

第一步配置属性文件:

?

第二步在Presto中安装Presto Plugin,这个网上有很多教程这里就不详细介绍了。很多同学公司原来只有hive集群,现在搭建了presto集群想和原有的hive库表权限共用。

我们发现阿里是自己实现了逻辑让presto和hive一起去读取presto中的hive权限,这个方案也不错。我们的方案是同步一份ranger中历史的hive权限到presto空间中,

然后在权限系统中开发统一申请接口,为新用户同时开通两份相同的权限到ranger的两个空间中。好处是特殊情况下我们可以给同一个用户对hive和presto开通不同的访问权限。

2.账号密码认证

?

这里需要自己开发插件并注册到presto中。

首先需要在pom文件中引入presto-spi依赖

?

每个插件标识一个入口点:Plugin接口的一个实现?。这个类名通过标准 Java ServiceLoader接口提供给 Presto?:类路径包含在?META-INF/services目录下的以io.prestosql.spi.Plugin命名的资源文件。该文件的内容是一行列出插件类的名称:com.example.authenticator.RangerPasswordAuthenticatorPlugin。

需要实现一个plugin接口:

工厂类实现PasswordAuthenticatorFactory接口:

核心认证类实现PasswordAuthenticator接口:

最终返回一个带用户名的Principal:new BasicPrincipal(username),该用户名用于第一步中的权限认证。

插件开发完需要注册到presto中:

<1>添加配置文件:

<2>在plugin目录下创建名为ranger-password-authenticator的目录,并把相关依赖包放入。这里有个注意点就是presto打包时需要使用assembly把相关依赖都打到包里。

3.nginx请求转发

nginx conf文件内容如下:

我们是把证书安装到了nginx服务器,通过nginx解析https请求并转发http请求到presto coordinator 上。

二、superset连接认证

为让公司同学更方便使用superset平台,我们需开发公司sso账号登录功能,这一步已完成了用户的身份认证。同样为方便同学们使用superset平台查询presto

离线数据,我们默认为用户建好了统一的数据源连接,但是该连接的账号及密码经过Password Authenticator认证后无法控制住用户库表权限,因为server端

无法识别具体的连接用户。经过我们调研,superset本身支持模拟presto用户,这样我们就可以在Password Authenticator中为superset用户预留一个口子,

通过连接中的唯一复杂密码作为token来识别superset的连接。

具体方案如下:

1.superset模拟用户连接并开启https连接。

2.Password Authenticator接口单独处理superset连接。

3.System Access Control权限认证还是走ranger方案就好了。

下面分别介绍下各步骤的具体实现:

1.superset数据源配置

?

开启模拟用户,并配置连接协议为https。

2.单独处理superset请求

这块还是在上面的presto-password-authenticator插件中的createAuthenticatedPrincipal方法里实现就好了。

3.System Access Control

因为上面经过模拟用户presto server已经能拿到登录superset的用户了,而且经过自己的逻辑已成功的把登录用户信息转发给了System Access Control模块,所以权限验证模块逻辑不需要做任何改动。

三、SQL审计

经调研,presto支持自定义的事件监听器的开发。基于该接口我们可以开发自定义日志记录、调试以及性能分析插件。我们借助该功能可以实现多事件下查询作业的指标收集、格式化、持久化工作,持久化的目的地为MySQL。

事件监听器的开发和上面的密码验证器的插件开发相似,这里有些环节就简单说一下吧。

同样需要在services里注册插件实现类,事件监听器工厂类中的getName方法返回的名字和配置文件中要一致。

事件监听器类需要实现事件监听器接口,并根据需求重写queryCreated,queryCompleted,splitCompleted等方法。

?

Presto 支持为以下事件调用的自定义事件侦听器:

  • queryCreated 查询创建
  • queryCompleted 查询完成(成功或失败)
  • splitCompleted 拆分完成(成功或失败)

此功能支持开发自定义日志记录、调试和性能分析插件。

我们这里是做sql的一个审计所以只实现了queryCompleted方法,核心逻辑如下。

插件写完注册方法和上面的密码验证器也是一样的。

经过上面两个presto插件的开发我们就完成了密码登录验证及SQL审计等功能,presto是插件化架构所以开发部署还是相对简单的,

有些复杂的是完整一套的权限账号及审计方案的制定,希望本文能给当前正在基于presto搭建公司离线加速分析系统的同学提供一定帮助。

禁止转载。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:40:01  更:2021-08-12 16:40:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:18:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码