FlinkSQL 的行级权限解决方案及源码

💡 原文中文,约12900字,阅读约需31分钟。
📝

内容提要

FlinkSQL支持不同用户执行相同SQL时,根据用户名和表名查找配置的行级权限条件,重新组装Where条件,实现行级权限控制。源码修改包括新增Parser和ParserImpl类,新增SqlSelect类,封装SecurityContext类,计划支持数据脱敏和开发ranger-flink-plugin。

🎯

关键要点

  • FlinkSQL支持行级权限控制,允许特定用户仅访问授权行数据。
  • 管理员可以配置用户、表和行级权限条件。
  • 用户查询数据时,系统会根据行级权限条件自动过滤数据。
  • FlinkSQL的行级权限方案类似于Hive中的Ranger Row-level Filter方案。
  • 行级权限通过修改Parser和SqlSelect类实现,生成新的Where条件。
  • 系统底层执行SQL时会透明地应用行级权限,用户无需感知。
  • Flink实时数仓领域自研行级权限控制工具,避免依赖Ranger。
  • 测试用例展示了行级权限在不同SQL查询中的应用。
  • 源码修改包括新增Parser、SqlSelect类和封装SecurityContext类。
  • 未来计划支持数据脱敏和开发ranger-flink-plugin。
➡️

继续阅读