Hive权限管理

Posted love-yh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive权限管理相关的知识,希望对你有一定的参考价值。

最近遇到一个hive权限的问题,先简单记录一下,目前自己的理解不一定对,后续根据自己的理解程度更新


一、hive用户的概念

  hive本身没有创建用户的命令,hive的用户就是Linux用户,若当前是用mr用户输入hive,进入hive的shell,则当前hive的用户为mr。

  所以在实际的生产中,容易造成创表和使用表的用户不统一的情况,针对该情况可以使用beeline的方式连接hive,简洁的命令如下,具体的使用方式可以百度查找。

1 beeline -u jdbc:hive2//mysql_IP:port -n username

二、hive数据存储方式

  这里讨论基于MySQL的remote方式,这种方式可以支持多用户的并发模式。

  hiveserver元数据信息是存在MySQL中的,存在MySQL中的元数据信息包括:表的位置、创建时间、数据库相关、表相关关系以及表的一些授权信息等,没有具体的内容;物理表是存在HDFS上的。

  因为数据是存在HDFS上的,创表或导入数据时候,当前用户要对存放数据的HDFS目录要有权限。若没有相关权限,会导致很多操作都会报错。

三、hive权限问题

  1.   在hive-site.xml文件中,开启权限认证,参数如下:
1 hive.security.authorization.enabled  //默认为false
2 hive.security.authorization.createtable.owner.grants

    2.  在用户没有权限的做某项操作的时候,可以通过以下语句赋给用户ALL的权限或者对应的权限。

1 GRATN ALL TO USER username;

  但是这样做,有点力度不够细,比如你想给某个用户赋select、create的权限,别的权限不给,这样上述语句就得执行两遍,当用户多的时候,这种情况尤为繁琐。

  在hive中role(角色)这一概念,可以较好的解决上述问题。可以将不同的权限根据需要赋给对应的role,然后将这个role赋给用户,再将相应的权限赋给这个role,这样用户就可以根据role的权限执行相应操作,这样在权限管理上更加灵活了。

   3.  实际上,所有的Linux系统用户登录hive后,都可以执行Grant/revoke操作,这样假如一个用户没有某一权限了,很简单只需要执行一次grant就行,可以认为hive用户自己管理自己的权限。

  这个可以在hive-site.xml文件中配置hive.semantic.analyzer.hook,然后实现自己的权限控制类,即可。控制类的实现可上网百度。

  配置好上面的配置项后,相当于是设置超级管理员权限,具体的权限根据自己的权限控制类。此时若要新增一个超级管理员用户,可以在hive-site.xml文件的hive.users.in.super.administrator中设置。

 

Ref:

https://www.cnblogs.com/yejibigdata/p/6394719.html

 

以上是关于Hive权限管理的主要内容,如果未能解决你的问题,请参考以下文章

hive权限管理

Hive表权限控制

如何使用Sentry管理Hive外部表权限

0015-如何使用Sentry管理Hive外部表权限

hive整合sentry,impala,hue之后权限管理操作

hive权限用Sentry详细使用测试文档