sentry 命令_0569-5.15.1-开启Sentry后LOAD DATA异常分析

作者:辉少

1.问题描述

在开启了Sentry的CDH集群中,Hive或Impala的操作会受Sentry的管理,不同的操作需要不同的权限。例如,要在Hive中执行ALTER DATABASE命令,用户需要拥有SERVER或DATABASE的ALL权限。本文是描述关于LOAD DATA的异常,我们先来看看Cloudera官网对于这一块的描述:

fc8d722c98b7daa48a8b21ed80ff45b2.png

具体请参考:

https://www.cloudera.com/documentation/enterprise/5/latest/topics/cm_sg_sentry_service.html#sentry_service

可以看出如果需要LOAD DATA操作,则需要具有ALL或者INSERT权限。本文Fayson描述虽然对于Database赋予了ALL权限,但依旧会报错没有load data 权限异常。

  • 测试环境

1.CM和CDH版本为5.15.1

2.操作系统版本为RedHat7.2

3.集群已启用Kerberos

4.已启用Sentry

以下具体描述该问题,使用以下命令load data到Hive表中,提示user test_sjz does not have privileges for LOAD

use test_sjz;#加载HDFS中数据到hive表load data inpath ‘/user/test_sjz/super_store.csv’ into table super_store;#加载本地数据到hive表load data local inpath ‘/user/test_sjz/super_store.csv’ into table super_store;
affd0ae0b891f8843da0a635ea30311c.png

查看test_sjz 用户组的权限,发现是具有test_sjz 库的all 权限的,即表示test_sjz 能使用load data 命令

show grant role test_sjz;
ef5573c568671d41a7494805eed1d772.png

看到提示另一个异常,提示:this required privileges:Server=server1 ….

,于是尝试给HDFS非/user/ 目录和文件授权后尝试

0d5116f66df78ee6d8ea7888ee246eec.png

发现依旧不能load data。

2.问题解决

原因在于Sentry将检查 LOAD DATA 语句源文件和目标表。需要目标表上的INSERT和源文件上的URI权限.

即需要将Sentry中的URI权限授予用户主目录(/ user / )的活动用户。如果用户需要从HDFS中加载数据的其他目录的数据,则还必须授予用户在Sentry中的URI权限。授权语法如下:

GRANT ALL ON URI “hdfs://namenode:8020/user/ /” TO ROLE ;

注:如果你启用的NameNode的HA,建议使用Nademode 的Nameservice 来代替主机名和端口号,这可确保即使NameNode更改,URI也将保持不变。如下图红线圈出的部分所示:

c8987fdda6bbd6cec01aca543fb7f365.png

登录hive用户,给/user/test_sjz 目录授权后尝试

GRANT ALL ON URI “hdfs://namenode:8020/user/ /” TO ROLE ;
0a88e8a1ad8e4ff4e344589776333ebe.png

然后load data 成功

use test_sjz;#加载HDFS中数据到hive表load data impath ‘/user/test_sjz/super_store.csv’ into table super_store;#加载本地数据到hive表load data local impath ‘/user/test_sjz/super_store.csv’ into table super_store;
75fbebea1a4ae4c315004a174216419c.png

参考文档:

Sentry 的授权模型详细列表:

https://www.cloudera.com/documentation/enterprise/5/latest/topics/cm_sg_sentry_service.html#sentry_service

Load问题参考文档:https://my.cloudera.com/knowledge/Loading-Data-from-Files-into-Tables--HiveServer2-and-Sentry?id=75660

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值