“
Hi,朋友。openLooKeng近期带来了许多技术干货,前有安装部署,后有安全认证机制、Hash Join的使用介绍等等,如果您正在使用openLooKeng, 希望这些技术博客能够帮助到您。本期,社区小伙伴将用一个简单的User Case,介绍openLooKeng的行级权限控制。
openLooKeng的行级权限控制
行级权限的作用
通过 Rowfilter 实现对表数据行级别的权限控制:指定特定用户只能访问授权过的行,隐藏未授权的行数据。
Use Case
源数据表:
配置Rowfilter策略:
查询效果:
Rowfilter实现方式
回顾一下openLooKeng的coordinator接收到一个SQL的处理过程:终端用户通过ODBC或者JDBC driver将一个SQL语句发送到coordinator,这时SQL是以文本的形式被接收的。coordinator会解析parse和分析analysis,然后生成query plan。
openLooKeng analysis过程分为两部分:StatementRewrite和StatementAnalyzer。这两部分中都有权限相关的检查。
考虑到:
Rangeradmin侧仅存储鉴权策略,而鉴权逻辑在openLooKeng侧的ranger-plugin中完成。
Rowfilter策略实际就是where条件子句。
所以,在StatementRewrite中将Rowfilter条件子句重写到sql中。
主要的代码修改涉及:
Ranger侧:修改openLooKeng数据源的策略定义,增加行权限策略的配置界面。
openLooKeng侧:增加一个新的rewrite类:RowFilteRewrite,将条件子句加到sql中。
以上便是本期小伙伴带来的分享。如果您也想在社区分享您的文章,欢迎联系openLooKeng小助手。
推荐阅读
CCF BDCI大赛报名中,openLooKeng诚邀您来参加
报名截止时间: 2021年11月20日
openLooKeng
欢迎访问openLooKeng官网
https://openlookeng.io
社区代码仓
https://gitee.com/openlookeng
欢迎关注我们
微信公众号 | openLooKeng
社群助手 | openLooKengoss