如何对hive的权限设置

2020-05-14 10:11发布

5条回答
若梦
2楼 · 2020-05-14 10:11

Hive的权限需要在hive-site.xml文件中设置才会起作用,配置默认的是false,需要把hive.security.authorization.enabled设置为true,并对不同的用户设置不同的权限,例如select ,drop等的操作


像风没有归宿
3楼 · 2020-05-14 10:35

眼下hive支持简单的权限管理,默认情况下是不开启。这样全部的用户都具有同样的权限。同一时候也是超级管理员。也就对hive中的全部表都有查看和修改的权利,这样是不符合一般数据仓库的安全原则的。Hive能够是基于元数据的权限管理。

金喆
4楼 · 2020-05-14 12:51

基于CDH5.x的Hive权限配置

1、打开权限控制,默认是没有限制的

set hive.security.authorization.enabled=true;

2、配置默认权限

1 hive.security.authorization.createtable.owner.grants = ALL  
2 hive.security.authorization.createtable.role.grants = admin_role:ALL  
3 hive.security.authorization.createtable.user.grants = user1,user2:select;user3:create

在Cloudera Manager中配置

hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)
hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)

复制代码

  
    hive.security.authorization.enabled  
    true  
  
    
    hive.security.authorization.createtable.owner.grants    
    ALL  
  
    
    hive.security.authorization.task.factory    
    org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl  

复制代码

 

3、创建角色

CREATE ROLE test_role;

 

分配用户到角色

GRANT ROLE test_role TO USER mllib;

 

如出现FAILED: SemanticException The current builtin authorization in Hive is incomplete and disabled.这个异常。

解决方案:

配置

 

set hive.security.authorization.task.factory = org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl;

 

4、分配权限

基于角色:

 

GRANT CREATE ON DATABASE default TO group test_role;  
GRANT SELECT on table authorization_test to group test_role;  
GRANT DROP on table authorization_test to group test_role;  
GRANT ALL on table authorization_test to group test_role;

 

基于用户:

GRANT CREATE ON DATABASE default TO user mllib;  
GRANT SELECT on table authorization_test to user mllib;  
GRANT DROP on table authorization_test to user mllib;  
GRANT ALL on table authorization_test to user mllib;

 

分配创建数据库的权限

GRANT CREATE  TO user root;

 

5、查看权限分配

 

SHOW GRANT user mllib ON DATABASE default;     
SHOW GRANT group test_role ON DATABASE default;

 

6、删除权限

revoke all on database spark from user mllib;

 

7、HIVE支持以下权限:
权限名称 含义
ALL      :  所有权限
ALTER  :  允许修改元数据(modify metadata data of object)---表信息数据
UPDATE  :  允许修改物理数据(modify physical data of object)---实际数据
CREATE  :  允许进行Create操作
DROP  :  允许进行DROP操作
INDEX  :  允许建索引(目前还没有实现)
LOCK  :  当出现并发的使用允许用户进行LOCK和UNLOCK操作
SELECT  :  允许用户进行SELECT操作
SHOW_DATABASE : 允许用户查看可用的数据库


8、登录hive元数据库,可以发现以下表:
Db_privs:记录了User/Role在DB上的权限
Tbl_privs:记录了User/Role在table上的权限
Tbl_col_privs:记录了User/Role在table column上的权限
Roles:记录了所有创建的role
Role_map:记录了User与Role的对应关系


我的网名不再改
5楼 · 2021-11-10 13:50

hive有两种类型的权限控制方式:


一。通过Hcatcalog API访问hive数据的方式,实际是通过访问metastore元数据的形式访问hive数据,这类有MapReduce,impala,pig,Spark SQL,hive Command line等方式,基于这种方式的权限控制称为:Storage Based Authorization in the Metastore Server。


二。通过hiveserver2的方式访问hive数据,基于这种方式的权限控制称之为:SQL Standards Based Authorization in HiveServer2


第一种方式的权限控制其实通过控制用户在HDFS上的权限来实现的,需要借助hdfs的命令setfacl,实现此种方式需要在hive中配置以下配置项:


  hive.security.metastore.authorization.manager

  org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProvider

  authorization manager class name to be used in the metastore for authorization.

  The user defined authorization class should implement interface

  org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider.

 

 

 

  hive.security.metastore.authenticator.manager

  org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator

  authenticator manager class name to be used in the metastore for authentication.

  The user defined authenticator should implement interface 

  org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider.

 

 

  hive.metastore.pre.event.listeners

 

  pre-event listener classes to be loaded on the metastore side to run code

  whenever databases, tables, and partitions are created, altered, or dropped.

  Set to org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener

  if metastore-side authorization is desired.

 

而后使用setfacl为用户在hive数仓路径分配权限,例如:


#授予test对warehouse文件夹rwx权限


hadoop fs -setfacl -m user:test:rwx /user/hive/warehouse


#授予hivegrp对warehouse文件夹rwx权限


hadoo fs -setfacl -m group:hivegrp:rwx /user/hive/warehouse


第二种方式也需要修改hive-site.xml配置文件:


  hive.security.authorization.enabled

  true

  hive.security.authorization.createtable.owner.grants

  ALL

  hive.security.authorization.task.factory

 org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl

  hive.users.in.admin.role

  hdfs

然后进入hive CLI通过grant命令对表、视图、列、分区进行权限控制,需要注意的是create role及drop role等命令是需要admin role才有权限执行的,因此在配置中给hdfs用户以admin role,切换到hdfs用户下进入hive CLI执行grant命令即可。


通过Hue控制Hive访问权限可查看这里。


20200921文 - 做更棒的自己!
6楼 · 2021-11-25 19:22

你是不是想集成hive的元数据库,可以实现多用户,一般在这种情况下 建议集成mysql作为hive的元数据库,如果你需要具体的步骤,可以留下邮箱,我之前写过一份关于这方面的材料可以打给你,另外你在集成mysql作为元数据仓库的时候应该注意 hive配置文件里面的 操作用户配置 在mysql应该存在,另外在mysql里注意要去的匿名用户,否则会报 权限不足异常

相关问题推荐

  • 什么是大数据时代?2021-01-13 21:23
    回答 100

    大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,而这个海量数据的时代则被称为大数据时代。随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。大数据(Big data)通常用来形容一个公司创造的大量非结...

  • 回答 84

    Java和大数据的关系:Java是计算机的一门编程语言;可以用来做很多工作,大数据开发属于其中一种;大数据属于互联网方向,就像现在建立在大数据基础上的AI方向一样,他两不是一个同类,但是属于包含和被包含的关系;Java可以用来做大数据工作,大数据开发或者...

  • 回答 52
    已采纳

    学完大数据可以从事很多工作,比如说:hadoop 研发工程师、大数据研发工程师、大数据分析工程师、数据库工程师、hadoop运维工程师、大数据运维工程师、java大数据工程师、spark工程师等等都是我们可以从事的工作岗位!不同的岗位,所具备的技术知识也是不一样...

  • 回答 29

    简言之,大数据是指大数据集,这些数据集经过计算分析可以用于揭示某个方面相关的模式和趋势。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。大数据的特点:数据量大、数据种类多、 要求实时性强、数据所蕴藏的...

  • 回答 14

    tail -f的时候,发现一个奇怪的现象,首先 我在一个窗口中 tail -f test.txt 然后在另一个窗口中用vim编辑这个文件,增加了几行字符,并保存,这个时候发现第一个窗口中并没有变化,没有将最新的内容显示出来。tail -F,重复上面的实验过程, 发现这次有变化了...

  • 回答 18

    您好针对您的问题,做出以下回答,希望有所帮助!1、大数据行业还是有非常大的人才需求的,对于就业也有不同的岗位可选,比如大数据工程师,大数据运维,大数据架构师,大数据分析师等等,就业难就难在能否找到适合的工作,能否与你的能力和就业预期匹配。2、...

  • 回答 17

    最小的基本单位是Byte应该没多少人不知道吧,下面先按顺序给出所有单位:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB,按照进率1024(2的十次方)计算:1Byte = 8 Bit1 KB = 1,024 Bytes 1 MB = 1,024 KB = 1,048,576 Bytes 1 GB = 1,024 MB = 1,048,576...

  • 回答 33

    大数据的定义。大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据是对大量、动态、能持续的数据,通过运用新系统、新工具、新...

  • 回答 5

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的版本:针对不同的用户,MySQL分为两种不同的版本:MySQL Community Server社区版本,免费,但是Mysql不提供...

  • mysql安装步骤mysql 2022-05-07 18:01
    回答 2

    mysql安装需要先使用yum安装mysql数据库的软件包 ;然后启动数据库服务并运行mysql_secure_installation去除安全隐患,最后登录数据库,便可完成安装

  • 回答 5

    1.查看所有数据库showdatabases;2.查看当前使用的数据库selectdatabase();3.查看数据库使用端口showvariableslike'port';4.查看数据库编码showvariableslike‘%char%’;character_set_client 为客户端编码方式; character_set_connection 为建立连接...

  • 回答 5

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(    `runoob_id` INT UNSIGNED AUTO_INCREMENT,    `runoob_title` VARCHAR(100) NOT NULL,    `runoob_author` VARCHAR(40) NOT NULL,    `submission_date` DATE,    PRI...

  • 回答 9

    学习多久,我觉得看你基础情况。1、如果原来什么语言也没有学过,也没有基础,那我觉得最基础的要先选择一种语言来学习,是VB,C..,pascal,看个人的喜好,一般情况下,选择C语言来学习。2、如果是有过语言的学习,我看应该一个星期差不多,因为语言的理念互通...

  • 回答 7

    添加语句 INSERT插入语句:INSERT INTO 表名 VALUES (‘xx’,‘xx’)不指定插入的列INSERT INTO table_name VALUES (值1, 值2,…)指定插入的列INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)查询插入语句: INSERT INTO 插入表 SELECT * FROM 查...

  • 回答 5

    看你什么岗位吧。如果是后端,只会CRUD。应该是可以找到实习的,不过公司应该不会太好。如果是数据库开发岗位,那这应该是不会找到的。

  • 回答 7

    查找数据列 SELECT column1, column2, … FROM table_name; SELECT column_name(s) FROM table_name 

没有解决我的问题,去提问