角色

项目负责人

背景

随着公司对大数据资产访问控制的严格管理,需要对访问大数据资产的用户进行鉴权,公司有各种大数据应用产品, horizon报表查询系统,api调用,superset即席查询,邮件推送等,后端的计算存储引擎也有多种,包括impala, hive,clickhouse,tidb,mysql,trino,如何在应用层查询鉴权成为一个问题。

解决方案

  1. 改造公司的数据应用产品(horizon,superset),在查询发出前对查询sql进行染色,增加操作用户名, 查询sql统一发生到大数据gateway
  2. 分别改造hive/impala查询引擎代码,增加ckproxy,mysqlproxy,改造trino代码,拦截查询sql,解析用户名,sql操作类型,sql数据库表
  3. 开发数据资产管理系统,同时提供用户授权和鉴权api
  4. 在查询引擎代理层调用鉴权api进行鉴权

项目架构

jiagou

数据资产管理系统技术

后端技术架构

  1. 开发语言: java
  2. 开发框架: springboot2.5.0,mybatis-plus
  3. 数据库: mysql5.7
  4. 打包工具: gradle
  5. 接入工具: openResty

前端技术架构

  1. 开发语言: html,css,javascript,vue3
  2. 开发框架: element-plus
  3. 打包工具: webback

查询引擎代理技术

  1. impala/hive 修改引擎源代码,重新编译
  2. clickhouse 采用chproxy代理,解析sql并鉴权
  3. mysql 采用mycat代理,修改源码,解析sql并鉴权