背景:我司为解决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请求到服务端。
具体方案如下:
- System Access Control权限认证采用ranger方案。
- 基于Password Authenticator接口开发ranger账号密码认证逻辑。
- 部署nginx做请求转发。
下面分别介绍下各步骤的具体实现:
1.配置权限认证
第一步配置属性文件: