配置在Hive客户端使用用户名和密码认证连接HiveServer
使用场景
在集群已启用Kerberos认证(安全模式)的场景中,在Hive客户端通过Kerberos认证方式连接HiveServer时,需要配置krb5.conf、keytab、hosts等文件,配置错误会导致认证失败,无法访问HiveServer。
MRS 3.6.0-LTS及之后版本,Hive支持在Hive客户端使用用户名和密码方式进行认证连接HiveServer,这种认证方式客户端无需提供Kerberos相关配置,操作简便且兼容Kerberos认证方式。
约束与限制
- 仅集群已启用Kerberos认证(安全模式)支持此功能。
- 用于进行认证的用户必须为在Manager界面的“系统 > 权限 > 用户”中创建的用户。
- HiveServer基于ZooKeeper实现负载均衡,客户端连接HiveServer前会先访问ZooKeeper,因此Hive开启用户名和密码认证功能时ZooKeeper也需要开启此功能。
- 修改SSL参数后需要更新Hive客户端配置。
- 在防暴力破解场景下,密码输错指定次数后锁定机制是按照单个HiveServer实例计算的,默认允许输错5次密码后用户将会被锁定,即同一个用户连接任意一个HiveServer输错5次密码,该账号就会被锁定。如果是基于ZooKeeper实现负载均衡,客户端连接HiveServer前会先连接ZooKeeper,连接ZooKeeper时也是按照单个实例计算密码输入错误次数来锁定账号的,因此在这种场景下,首先会触发ZooKeeper的防暴力破解机制,然后才是Hive的防暴力破解机制。如果要修改Hive用户名和密码认证的防暴力破解相关参数,Hive和ZooKeeper组件的相关参数都需要修改。
操作步骤
- 登录Manager界面,选择“集群 > 服务”,在服务列表中单击“Hive”进入概览页面,选择“ 配置 > 全部配置”。
- 在全部配置界面右上角的搜索框中搜索“hive.basic.authentication.enable”,并修改该参数值为“true”,开启用户名和密码认证功能。
- (可选)在搜索框中搜索表1中的参数,并根据实际需求配置参数值。
表1 Hive基于用户名和密码认证的参数配置 参数
参数描述
默认取值
hive.basic.authentication.cache.lifecycle
开启用户名和密码认证功能时,用于设置认证成功后缓存认证信息的时间,单位为分钟。
5m
hive.basic.authentication.failed.lock.time
开启用户名和密码认证功能时,用于设置账号被锁定时的时长,单位为分钟。
5m
hive.basic.consecutive.authentication.failed.count
开启用户名和密码认证功能时,对于单个HiveServer实例,如果密码连续输入错误达到指定次数,则该账号将被暂时锁定。
5
hive.server2.use.SSL
是否开启SSL通道加密,在使用用户名和密码认证功能时开启可以保障数据传输的安全性。
集群已启用Kerberos认证(安全模式)默认认证方式为Kerberos,使用SASL协议保障数据传输安全性可以不开启该参数。
说明:如果开启SSL通道加密功能,需要更新Hive客户端配置。
false
- 单击“保存”,在弹出窗口单击“确定”保存配置。
- 单击“实例”,勾选所有HiveServer实例,选择“更多 > 重启实例”,输入当前用户密码并单击“确定”重启HiveServer实例。
- 在Manager首页,选择“集群 > 服务”,在服务列表中单击“ZooKeeper”进入概览页面,选择“ 配置 > 全部配置”。
- 在全部配置界面右上角的搜索框中搜索“basicAuthEnabled”,并修改该参数值为“true”,开启ZooKeeper用户名和密码认证功能。
- 单击“保存”,在弹出窗口单击“确定”保存配置。
- 单击“实例”,勾选所有ZooKeeper实例,选择“更多 > 重启实例”,输入当前用户密码并单击“确定”重启ZooKeeper实例。
- 登录安装Hive客户端的节点,执行以下命令登录Hive客户端:
执行以下命令,切换到客户端安装目录:
cd 客户端安装目录执行以下命令配置环境变量:
source bigdata_env
执行以下命令登录Hive客户端:
beeline -n ${username} -p '${password}'
其中${username}和${password}为在Manager页面创建的业务用户名和用户密码。