hive metastore 元数据仓库 ranger 管控
之前讨论spark的ranger权限管控问题的时候, 就提到hive server2 ranger插件只对经过hive server2的请求生效, 如果spark等应用直接读取hive metatore, ranger hive插件那就无法管控到了. 业内有一些解法, 可以从组件自身的解析流程入手, 比如解析spark logical plan转化为对应的元数据操作权限请求, 也可以从hive metastore入手限制权限, 不过一直看到的讨论都是hive metastore的权限管控还不成熟. 这次看ranger官方文档, 发现在hive4版本之后, metastore算是正式支持鉴权了. 这时候有另一个问题, hive server2插件还有存在的必要吗?
hive metastore 初始化
hive metastore的初始化init函数信息量非常丰富, 顺着把所有关联的调用函数看下去, 大概就能理解metastore的工作流程了.
hive ranger
其他文档已经把hive server2相关的ranger策略讲得差不多了.
hive 加载外部类的常见方法
hive支持各种外部配置类实现功能, 比如各种hook,权限拦截等. 通用方法如下:
hive 架构
ranger/airflow这类业务辅助型组件的源码还是比较容易看完的, 目标也明确, hive/spark这种正经大数据组件就不是一回事了. 开源社区多少人耕耘了多少年写出来的东西, 代码量和复杂度就不是一个层级的. 日常crud的业务代码, 在这种大规模组件的代码面前, 真是玩具. 多少做大数据治理的, 困于日常搬砖, 就没看过这些组件的源码, 只能滥竽充数的搬砖. 但是打工人也得衡量下, 是否真的有那么多奢侈的时间去把这些看完?
hive-data-format
使用orc格式, 分隔符无关紧要
ranger hive 列脱敏与行筛选
列脱敏和行筛选, 没想到都是数据权限管控的领域, 都是ranger提供的基本功能. 使用起来非常直观, 基本原理以前也看过一些文档了, 实现方案都是改写sql, 但是没看到技术细节没看到代码还是不稳妥. 浏览ranger 鉴权代码的时候, 也没看到怎么改写hive sql的内容, 总觉得世界的迷雾没有破开. 一番搜索, 发现原来底层是hive实现的, ranger基本上只提供了策略的管理和调用. 这套流程嵌入在hive的checkPrivilege鉴权请求流程里, 打得一手好配合.
ranger hive 外表表路径hdfs权限调研
看了各种源码, 还是需要动动手测试下才行, 不然压根不知道各种corner case是怎么回事. get your hands dirty.
ranger hive 测试
ranger hive shou tables 权限问题
ranger-hdfs-hive-测试-tips
开启 ranger hdfs audit 确认需要的 hdfs 权限
ranger-hive-字段权限测试
表g005有字段a和字段b
trino hive
关键文章 A gentle introduction to the Hive connector