Hive配置LDAP身份认证

  |   0 评论   |   2,514 浏览

Hive的身份认证方式

由参数hive.server2.authentication指定,默认为NONE,表示不进行身份验证

其它可选的认证方式

认证方式说明
LDAPLDAP/AD based authentication
KERBEROSKerberos/GSSAPI authentication
CUSTOM

Custom authentication provider

(Use with property hive.server2.custom.authentication.class)

PAMPluggable authentication module
NOSASLRaw transport


配置LDAP认证

准备工作

安装OpenLDAP

hive-site.xml中配置如下参数

<property>
	<name>hive.security.authorization.enabled</name>
	<value>true</value>
	<description>开启Hive的身份认证功能,默认是false</description>
</property>
<property>
	<name>hive.security.authorization.createtable.owner.grants</name>
	<value>ALL</value>
	<description>表的创建者对该表有ALL的权限</description>
</property>
<property>
	<name>hive.metastore.authorization.storage.checks</name>
	<value>true</value>
	<description>阻止没有权限的用户进行表删除操作。</description>
</property>
<property>
	<name>hive.security.authorization.task.factory</name>
	<value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value>
	<description>创建与DDL授权相关的任务的工厂实现类</description>
</property>
<property>
	<name>hive.server2.authentication</name>
	<value>LDAP</value>
	<description>客户端身份认证方式</description>
</property>
<property>
	<name>hive.server2.authentication.ldap.url</name>
	<value>ldap://hive.cxy7.com:389</value>
	<description>LDAP Url</description>
</property>
<property>
	<name>hive.server2.authentication.ldap.baseDN</name>
	<value>ou=People,dc=jwopt,dc=cn</value>
	<description>LDAP搜索的baseDN</description>
</property>

重启HiveServer2

验证

在Hive的新版本中提供了一个新的命令行工具beeline,老版本的“hive”命令由于存在诸多缺陷已经被废弃

直接调用beeline

beeline -u jdbc:hive2://hive.cxy7.com:10000 -n username -p password --outputformat=tsv2 --showHeader=false

如下图

image.png

使用alias

vim ~/.bashrc
alias hive='beeline -u jdbc:hive2://hive.cxy7.com:10000 -n username -p password --outputformat=tsv2 --showHeader=false'脚本调用

可能出现的问题

Error while compiling statement: FAILED: SemanticException The current builtin authorization in Hive is incomplete and disabled.

hive.security.authorization.task.factory参数的默认值为org.apache.hadoop.hive.ql.parse.authorization.RestrictedHiveAuthorizationTaskFactoryImpl

这个类就比较坑了,不管你执行什么权限操作,都会给你打印除这么一句话,查看一下源码就知道了

不管什么方法,里面就做一件事,调用raiseAuthError()方法

image.png

解决办法

hive-site.xml中配置

<property>
<name>hive.security.authorization.task.factory</name>
<value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value>
<description>创建与DDL授权相关的任务的工厂实现类</description>
</property>


读后有收获可以支付宝请作者喝咖啡