news 2026/4/10 23:22:52

Ranger-HDFS与Hive配合改造字段级鉴权能力

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ranger-HDFS与Hive配合改造字段级鉴权能力

Apache云原生版本下Hive自身截止3.x是没有任何完整鉴权能力的,业内常说的Hive表级别鉴权,本质上是表Base路径开放了HDFS的权限,且只有Hive自己的使用场景下,受限于HDFS鉴权时,会对路径自身、父路径、祖先路径均需要有权限才能正常访问,因此市场上Ranger提供了Ranger-HDFS插件解决了从 0 到 1 的HDFS路径权限解决方案,通过相对完善的内部逻辑在解决鉴权的同时,也省略了很多鉴权成本。可此时Hive任然没有完整的自带鉴权功能体系,官网上的确存在Hive的授权语句文档,但没有实际使用价值,因为它是残缺的,这就导致最终任然选择采用未经过改造的Apche原生版本hdfs+hive的公司,他们的对标用户,通常都具备着以下几个特点

1、对多租户之间的权限管控能力需求不大,甚至没有2、用户不具备大数据行业技术的深入使用能力,说白了就是有漏洞用户也发现不了,大炮打蚊子,解决一些行业基础的事情,纯骗钱3、提供服务的时候,主观上不给用户开放较为下沉的技术使用环境,比如直接操作hdfs,甚至是不给客户端

开头提到的Hive自带鉴权功能,抛开它的残缺不谈,即使强行使用,对于hdfs来讲,由于其本身的鉴权并不是专属给表,或者结构化数据存在的,而是为了文件存储系统存在,一个视频、一段音乐、一张图片都可以是一个文件,所以hive最多只能实现到元数据层级,且能力非常有限,又没有hdfs的全面支持,也就造成,为了hive的权限管控能够发挥一些作用,但前提需要放开hdfs上表路径权限,其实就是对直接操作hdfs侧的需求一刀切,不然使用者绕过hive,鉴权能力就瞎了,可见它不完全满足商用化

在hdfs对文件的权限中,删除看的是操作用户是否有目标路径父路径的写和执行权限(执行权限在hdfs中意味着访问子路径而不是执行某个脚本这种操作),生成一个新文件看的是操作用户是否有新文件所需存放的目标路径的写和执行权限,读取一个文件看的是操作用户是否有目标文件自身的读权限以及父路径的执行权限,续写一个文件看的也是操作用户是否有目标文件自身写权限以及父路径的执行权限。官方文档-》https://hadoop.apache.ac.cn/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html#Overview

特别说明,hdfs上对同一个文件是可以续写的,只是基本不这样做,而且非本地命令行执行续写需要集群配置支持,由于很容易发生与元数据不一致的问题,所以基本不续写,多数情况直接选择覆盖写。而hdfs的执行权限是访问其下子路径的基本权限,hdfs本身没有执行某个文件的概念,因此当你做任何操作的时候保险起见最好拥有父路径的执行权限

这样的权限能力设计,对于文件系统来讲已经足够,但是对于其他服务就不见得了,尤其是hive这种很多用户已操作表为核心的服务,像上面说的那样给hive数据路径设置一个宽松权限,可只要被使用者越过了hive,那就是一场事故了。spark、kyuubi等等这样的组件也都是绕不开的,把它们放在一起,hdfs本身的鉴权能力就显得不符合生产需要。对此有的人会说,可以使用市面上ranger-hive插件,但其实它也只能做到元数据层面,而且还是只管控了Hiveserver2服务,无法影响到hdfs路径的多用户灵活控制,用hive-cli客户端就能越过它的权限管控,所以它的使用意义不大,没办法完整的支撑需要鉴权多用户场景

至于本篇后面要用到的ranger-hdfs插件,当它存在于你的集群上时,hdfs自己的acl是不优先生效的,只有ranger-hdfs无任何权限策略命中时,默认会回退到hdfs鉴权,而ranger-hdfs鉴权只是具备了满足hive这种多用户场景的潜力,如何调用和适配,还是需要企业自己改造,怎么都绕不开的,毕竟ranger-hdfs也只是鉴权了路径整体的读写,而没到字段,这也是本篇要给大家分享的改造。注意!!本篇只围绕最小改造成本,完成字段鉴权的核心能力,至于更多的扩展,就需要大家自己去完成了

hive自带的权限管控(了解就行没有实际使用意义)

使用hive自带的权限管控,前提需要hive在hdfs上的存储路径权限为755,包括其下的所有表路径,否则鉴权功能通过之后,hive会在读取阶段报错

其次是在hive-site.xml文件中添加如下配置

<!-- 开启鉴权功能,注意!自带的权限能力,在后面使用中当你关闭后再开启,已存在的权限会随着消失 --><property><name>hive.security.authorization.enabled</name><value>true</value></property><!-- 自带鉴权功能的核心类,SQL标准赋权,hive自带的还有其他的!但是矮子里面找高个,也就这个能用一下了 --><property><name>hive.security.authorization.manager</name><value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value></property>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 9:23:47

Python 图形任意角度旋转完整解决方案:原理、实现与可视化展示

在 Python 图像处理、计算机视觉、数据可视化等领域&#xff0c;图形旋转是一项基础且高频的操作。无论是图像矫正、数据图表旋转&#xff0c;还是游戏开发中的精灵动画&#xff0c;都需要实现精准的任意角度旋转&#xff08;含 0-360 整数角度与小数角度&#xff09;。本文将从…

作者头像 李华
网站建设 2026/4/8 8:33:09

当路径规划遇上时间窗:冷链物流那些不得不说的套路

路径规划&#xff0c;车辆路径优化&#xff0c;MATLAB&#xff0c;带时间窗及其他各类需求均可&#xff0c;基于车辆的带时间窗的车辆路径优化VRPTW问题。 冷链物流车辆路径优化&#xff0c;考虑充电桩车辆路径evrp&#xff0c;多配送中心车辆路径优化。 改进遗传算法车辆路径优…

作者头像 李华
网站建设 2026/4/10 21:52:51

4.1 Client-go架构解密:Kubernetes客户端开发核心技术剖析

5.1 Client-go架构解密:Kubernetes客户端开发核心技术剖析 在云原生时代,Kubernetes已经成为容器编排的事实标准。而Client-go作为官方提供的Go语言客户端库,是我们与Kubernetes API交互的核心工具。本节课我们将深入剖析Client-go的架构设计,帮助你全面掌握这个强大的客户…

作者头像 李华
网站建设 2026/4/10 10:06:35

5.1 ChatGPT API 接入实战:让你的应用拥有智能对话能力

5.1 ChatGPT API 接入实战:让你的应用拥有智能对话能力 在AIOps时代,将大语言模型集成到企业应用中已成为提升智能化水平的重要手段。OpenAI的ChatGPT API为开发者提供了简单而强大的接口,可以快速为应用添加智能对话能力。本文将详细介绍如何接入和使用ChatGPT API,并通过…

作者头像 李华