安装
HIVE插件只对使用JDBC方式访问HIVE的请求进行权限管理,HIVE-CLI不受限制!
解压文件ranger-2.1.0-hive-plugin.tar.gz并修改install.properties文件
#ranger admin的路径
POLICY_MGR_URL=http://cdh04:6080
#hive服务名称
REPOSITORY_NAME=hivedev
#hive的安装路径
COMPONENT_INSTALL_DIR_NAME=/opt/cloudera/parcels/CDH/lib/hive
#使用solr作为审计
XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://cdh04:6083/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
XAAUDIT.SOLR.ZOOKEEPER=NONE
XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hive/audit/solr/spool
启动ranger hive插件
[root@ip-10-3-29-166 ranger-2.1.0-hive-plugin]# pwd
/opt/apps/my-ranger/ranger-2.1.0-hive-plugin
[root@ip-10-3-29-166 ranger-2.1.0-hive-plugin]# ./enable-hive-plugin.sh
在/opt/cloudera/parcels/CDH/lib/hive/conf目录下生成五个文件
在/opt/cloudera/parcels/CDH/lib/hive/lib目录下生成两个JAR文件软连接和一个目录软连接
重启hive后,再hiveserver2日志文件中会报错如下:
解决办法如下:
在ranger hive的配置文件目录新建xasecure-audit.xml文件
[root@ip-10-3-29-166 enable]# pwd
/opt/apps/my-ranger/ranger-2.1.0-hive-plugin/install/conf.templates/enable
[root@ip-10-3-29-166 enable]# vim xasecure-audit.xml
<!-- MYSQL的连接地址及用户名端口号,配置同RANGER ADMIN中INSTALL.PROPERTIES的MYSQL配置相同-->
<property>
<name>xasecure.audit.jpa.javax.persistence.jdbc.url</name>
<value>jdbc:mysql://cdh02:3306/ranger</value>
</property>
<property>
<name>xasecure.audit.jpa.javax.persistence.jdbc.user</name>
<value>ranger</value>
</property>
<property>
<name>xasecure.audit.jpa.javax.persistence.jdbc.password</name>
<value>Ranger2.1</value>
</property>
重启hive服务,其实是重启hiverserver2,此时日志文件中报错消失,并且在hive的策略缓存目录中生成文件
[root@ip-10-3-29-166 conf]# ll /etc/ranger/hivedev/policycache/
total 24
-rw-r--r-- 1 hive hive 17745 Apr 23 09:29 hiveServer2_hivedev.json
-rw-r--r-- 1 hive hive 105 Apr 23 09:29 hiveServer2_hivedev_roles.json
web界面也有插件显示
添加hive相关服务
添加详情如下:
利用beeline -u jdbc:hive2://cdh01:10000登录,HIVE-CLI是不受限制的
此时会出现以下异常:
WARN jdbc.HiveConnection: Failed to connect to S0:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://S0:10000: Failed to open new session: java.lang.IllegalArgumentException:
Cannot modify hive.query.redaction.rules at runtime.
It is not in list of params that are allowed to be modified at runtime (state=08S01,code=0)
解决方案
修改/opt/cloudera/parcels/CDH/lib/hive/conf/目录下的hive环境变量文件hive-env.sh,注释export HIVE_OPTS配置
现在直接使用hive命令也可以无验证登录,为避免这种状况,我们需要在hive-site.xml中添加如下参数,只允许beeline用户的方式访问,达到权限验证效果,由于使用CDH,所以在web界面添加:
<property>
<name>hive.security.authenticator.manager</name>
<value>
org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator
</value>
</property>
<property>
<name>hive.security.authorization.manager</name>
<value>
org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory
</value>
</property>
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.conf.restricted.list</name>
<value>
hive.security.authorization.enabled,hive.security.authorization.manager,hive.security.authenticator.manager
</value>
</property>
<property>
<name>hive.server2.map.fair.scheduler.queue</name>
<value>false</value>
</property>
重启hive使配置生效。