一、安装hive插件

1、解压安装

#  tar zxvf ranger-2.0.0-SNAPSHOT-hive-plugin.tar.gz -C /data1/hadoop/

2、修改install.properties

POLICY_MGR_URL=http://192.168.4.50:6080

REPOSITORY_NAME=hivedev

COMPONENT_INSTALL_DIR_NAME=/data1/hadoop/hive   #hive安装目录

XAAUDIT.SOLR.ENABLE=true

XAAUDIT.SOLR.URL=http://192.168.4.50:6083/solr/ranger_audits

CUSTOM_USER=hduser

CUSTOM_GROUP=hduser

3、启动hive插件

# sudo ./enable-hive-plugin.sh

启动hive插件以后,默认生成hiveserver2-site.xml文件,或者在已经存在的该文件下添加如下信息:

<property>

<name>hive.security.authorization.enabled</name>

<value>true</value>

</property>

<property>

<name>hive.security.authorization.manager</name>

<value>org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory</value>

</property>

<property>

<name>hive.security.authenticator.manager</name>

<value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>

</property>

<property>

<name>hive.conf.restricted.list</name>

<value>hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager</value>

</property>

4、前台界面配置policy

点击加号添加服务

如果测试连接ok,说明配置成功。

注:我在配置的时候,这里测试连接失败,集群的hiveserver2服务启动,端口也正常监听,在集群内部使用beeline方式连接到集群进行操作时,提示如下错误:

Caused by: java.lang.NoSuchFieldError: REPLLOAD

最后发现是由于hive的版本与ranger hive里面的包版本不一致导致,我使用的hive版本是hive2.x,而ranger2.x对于的hive版本是3.x,所以,在使用的时候要注意版本的问题。

5、配置策略

当创建好服务以后,ranger默认就创建了一些policy,如下:

如果想要添加策略,可以添加右上角的add

6、测试

注意:ranger权限对应hive客户端是没有任何作用的,如果想要对hive客户端做权限认证,则可以使用hive基于sql的安全认证,ranger只是对hiveserver2方式进行权限控制。

(1) 首先使用beeline -u jdbc:hive2://localhost:10000 -n hduser 连接到hive

  • 创建数据库(shanghai),该条语句可以正常执行。
  • 在shanghai库里面创建表(test),则会创建失败,如下:

0: jdbc:hive2://192.168.0.230:10000> create table test(a string);

Error: Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [hduser] does not have [CREATE] privilege on [shanghai/test] (state=42000,code=40000)

提示没有权限

(2) 添加策略,在上图policy ID为10的这条策略里面修改如下:

上述的hduser的新添加的。添加完保存,格一小会,在再beeline模式下执行创建表的测试,看是否成功,当然,这里给了该用户所有的权限,所以,该用户还可以进行insert等操作。

(3) 测试其他用户,比如当前的操作系统上面有一个yjt用户,我想该用户对test表有查询权限,先在beeline模式下测试改用户是否有select权限,如下:

[hduser@yjt ~]$ beeline -u jdbc:hive2://192.168.0.230:10000 -n yjt   #指定登录用户为yjt

0: jdbc:hive2://192.168.0.230:10000> select * from shanghai.test;

Error: Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [yjt] does not have [SELECT] privilege on [shanghai/test/*] (state=42000,code=40000)

可以发现,yjt这个用户对于shanghai数据库下的test这个表是没有select权限的,添加权限:

还是在上述的策略10里面添加,如下:

上述保存以后,如下:

策略添加完以后,需要等待策略的下发,权限控制才生效。

注意:策略修改完以后,不用重新启动beeline。

说明策略配置成功,那么上述配置了yjt这个用户的select权限,是否该用户真的只有select权限呢?继续测试改用户是否真的只有select权限,所以这里使用该用户insert 一条数据到test表,如下:

额,这还没到权限认证就开始报错了,上述的错误可以看到该用户对应hdfs的目录或者文件没有写权限,从这里也可以看到,还可以使用hdfs的权限认证限制hive用户。修改上述目录或者文件的权限为777(主要为了测试用户是否被hive ranger控制,所以这里设置为777,以排除其他干扰。)

[hduser@yjt conf]$ hadoop fs -setfacl -m user:yjt:rwx hdfs://yjt:9000/hive/warehouse/shanghai.db/test/

上述添加一条ACL。允许yjt所有操作

0: jdbc:hive2://192.168.0.230:10000> insert into table test values("test insert");

Error: Error while compiling statement: FAILED: HiveAccessControlException Permission denied: user [yjt] does not have [UPDATE] privilege on [shanghai/test] (state=42000,code=40000)

这里发现用户没有UPDATE权限,说明配置成功(在ranger里面,其实没有insert权限,只有update权限),接下来,在policy里面添加update权限,看是否可以成功的insert数据。

借鉴:

https://www.jianshu.com/p/d9941b8687b7

hive 整合ranger的更多相关文章

  1. 大数据学习系列之五 ----- Hive整合HBase图文详解

    引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...

  2. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

    前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...

  3. hive整合hbase

    Hive整合HBase后的好处: 通过Hive把数据加载到HBase中,数据源可以是文件也可以是Hive中的表. 通过整合,让HBase支持JOIN.GROUP等SQL查询语法. 通过整合,不仅可完成 ...

  4. 四 Hive整合HBase

    安装环境: hbase版本:hbase-1.4.0-bin.tar.gz hive版本:   apache-hive-1.2.1-bin.tar 注意请使用高一点的hbase版本,不然就算hive和h ...

  5. 创建hive整合hbase的表总结

    [Author]: kwu 创建hive整合hbase的表总结.例如以下两种方式: 1.创建hive表的同步创建hbase的表 CREATE TABLE stage.hbase_news_compan ...

  6. Hbase与hive整合

    //hive与hbase整合create table lectrure.hbase_lecture10(sname string, score int) stored by 'org.apache.h ...

  7. 安装hue及hadoop和hive整合

    环境: centos7 jdk1.8.0_111 Hadoop 2.7.3 Hive1.2.2 hue-3.10.0 Hue安装: 1.下载hue-3.10.0.tgz: https://dl.dro ...

  8. Hive 整合Hbase

    摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询.同时也可以将hive表中的数据映射到Hbase中.     应用 ...

  9. Hbase 与Hive整合

    HBase与Hive的对比 25.1.Hive 25.1.1.数据仓库 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询. 25.1.2. ...

随机推荐

  1. iOS之集成GoogleMap定位、搜索注意事项

    简介: 最近花了些时间看了GoogleMap官方文件并集成到国际版app中,网上关于GoogleMap for iOS的讲解相对Android来说少一点,比较有帮助的几乎全是英文文档.下面是我开发过程 ...

  2. 【转载】PC端微信设置操作快捷键方法

    在电脑上使用微信的时候,有时候我们需要自定义PC版微信快捷键操作,支持自定义微信快捷键设置的有:发送消息快捷键.截屏快捷键.打开微信快捷键以及检测快捷键热键是否与其他软件设置冲突.并且自定义设置PC微 ...

  3. 【转载】C#中List集合使用LastIndexOf判断元素最后一次出现的索引位置

    在C#的List集合操作中,有时候需要判断元素对象在List集合中第一次出现的索引位置信息,此时需要使用到List集合的IndexOf方法来判断,如果元素存在List集合中,则IndexOf方法返回所 ...

  4. 《区块链DAPP开发入门、代码实现、场景应用》笔记5——区块链福利彩票的设计

    笔者一直强调,一定要利用区块链的特点来解决行业存在的问题,并且该问题最好用区块链解决或者说只能用区块链解决.彩票行业就是个例子. 在讲解代码之前,首先讲解一下业务设计,如图6.15所示. 图6.15 ...

  5. 2.在HTML中使用JavaScript

    目录 1. script元素 2. 标签的位置 3.延迟和异步加载 4.嵌入代码与外部代码的区别 5.noscript元素 6. 小结 1. script元素 向HTML中插入JavaScript的主 ...

  6. window.requestAnimationFrame()的使用,处理更流畅的动画效果

    https://blog.csdn.net/w2765006513/article/details/53843169 window.requestAnimationFrame()的使用 2016年12 ...

  7. Mac版StarUML破解方法

    StarUML是用nodejs写的.确切的说是用Electron前端框架写的.新版本中所有的starUML源代码是通过asar工具打包而成.确切的代码位置在“%LOCALAPPDATA%\Progra ...

  8. CentOS 7 使用 firewalld 打开关闭防火墙与端口

    1.firewalld的基本使用启动: systemctl start firewalld关闭: systemctl stop firewalld查看状态: systemctl status fire ...

  9. ajax请求处理概要

    /** *不关心参数传递与参数返回的形式. */ url = ctxPath + '/ccb/xxx '; $.get(url); $.post(url); /** * 常见形式. */ var ur ...

  10. 【Iterm2】item2 ssh保持连接

    profiles -> sessions -> 勾选 When idel, send ASCII code就可以了