zoukankan      html  css  js  c++  java
  • hive 整合ranger

    一、安装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 ID10的这条策略里面修改如下:

     

    上述的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

     

  • 相关阅读:
    HashMap 常问的 9 个问题
    P1855 榨取kkksc03
    Codeforces Round #697 (Div. 3) A. Odd Divisor
    P1474 [USACO2.3]Money System / [USACO07OCT]Cow Cash G
    Codeforces Round #704 (Div. 2) D. Genius's Gambit
    P2800 又上锁妖塔
    P2066 机器分配
    P3399 丝绸之路
    P1351 [NOIP2014 提高组] 联合权值
    P4290 [HAOI2008]玩具取名
  • 原文地址:https://www.cnblogs.com/yjt1993/p/11837568.html
Copyright © 2011-2022 走看看