专栏首页Hadoop实操4.如何为Hive集成RedHat7的OpenLDAP认证

4.如何为Hive集成RedHat7的OpenLDAP认证

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

Fayson的github:https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的


在前面的文章Fayson讲了《1.如何在RedHat7上安装OpenLDA并配置客户端》、《2.如何在RedHat7中实现OpenLDAP集成SSH登录并使用sssd同步用户》以及《3.如何RedHat7上实现OpenLDAP的主主同步》,在CDH中各个组件如何集成?本篇文章主要介绍如何为Hive集成RedHat7的OpenLDAP。

  • 内容概述

1.测试环境描述

2.Hive集成OpenLDAP

3.Hive集成验证

  • 测试环境

1.RedHat7.3

2.OpenLDAP版本2.4.44

3.CM和CDH版本为5.13.1

4.集群已启用Kerberos

  • 前置条件

1.OpenLDAP已安装且正常使用

2.测试环境描述


  • OpenLDAP服务信息

这里我们将172.31.24.169做为OpenLDAP的主节点,172.31.16.68做为OpenLDAP的备节点,具体RedHat7下OpenLDAP的HA实现可以参考《3.如何RedHat7上实现OpenLDAP的主主同步》

  • Hive服务信息

我们的测试集群安装了两个HiveServer2服务

3.Hive全局配置OpenLDAP


1.登录CM的Web控制台,进入Hive服务,关闭Hive的模拟功能

2.修改LDAP相关配置,通过这里可以进行全局配置,配置后所有的HiveServer2服务均使用该配置

保存配置,回到CM主页根据提示重启相应服务即可。

4.Hive集成OpenLDAP验证


1.testldap用户不存在与操作系统,却存在于OpoenLDAP,可以使用id查看到该用户

操作系统/etc/passwd文件不存在testldap用户

OpenLDAP存在该用户

[root@ip-172-31-6-148 ~]# ldapsearch -D "cn=Manager,dc=fayson,dc=com" -W |grep testldap

(可左右滑动)

在OS上使用id faysontest是可以看到该用户

注意:由于配置SSSD服务,在OS上可以查看到该用户并能使用SSH登录但该用户不存在本地OS的passwd文件中。一旦在OpenLDAP中新建用户,需要保证集群的所有节点上都有这个用户,如果你没启用SSSD,则需要手动在所有节点的OS中创建该用户,否则无法执行Hadoop的MapReduce/Spark/Impala等作业,因为Fayson的环境已经启用了SSSD,可以自动同步用户,所以可以省略该步骤。节点同步LDAP中的用户也可以使用其他商业或者开源工具。

2.通过beeline使用testldap用户分别登录两个HiveServer2服务

都输入错误的用户的密码登录HiveServer2

可以看到用错误的密码登录两个HiveServer2服务均提示“Error validating LDAP user(state=08S01,code=0)”

3.使用正确密码登录两个HiveServer2服务

[root@ip-172-31-16-68 shell]# beeline 
beeline> !connect jdbc:hive2://ip-172-31-21-83.ap-southeast-1.compute.internal:10000
Connecting to jdbc:hive2://ip-172-31-21-83.ap-southeast-1.compute.internal:10000
Enter username for jdbc:hive2://ip-172-31-21-83.ap-southeast-1.compute.internal:10000: testldap
Enter password for jdbc:hive2://ip-172-31-21-83.ap-southeast-1.compute.internal:10000: ******
Connected to: Apache Hive (version 1.1.0-cdh5.13.1)
Driver: Hive JDBC (version 1.1.0-cdh5.13.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://ip-172-31-21-83.ap-southeast-> show databases;

(可左右滑动)

[root@ip-172-31-16-68 shell]# beeline 
beeline> !connect jdbc:hive2://ip-172-31-16-68.ap-southeast-1.compute.internal:10000
Enter username for jdbc:hive2://ip-172-31-16-68.ap-southeast-1.compute.internal:10000: testldap
Enter password for jdbc:hive2://ip-172-31-16-68.ap-southeast-1.compute.internal:10000: ******
Connected to: Apache Hive (version 1.1.0-cdh5.13.1)
Driver: Hive JDBC (version 1.1.0-cdh5.13.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://ip-172-31-16-68.ap-southeast-> show databases;

(可左右滑动)

通过如上截图,我们可以看到使用正确的密码登录两个HiveServer2服务均能成功。

5.单个HiveServer2集成OpenLDAP


前面的配置可以对所有的HiveServer2服务生效,那么也可以针对单个HiveServer2服务进行配置,操作如下:

1.首先将集群OpenLDAP配置恢复至未集成LDAP状态

2.进入实例页面,我们选择ip-172-31-21-83的HiveServer2进行配置

进入HiveServer2的配置页面

3.添加如下配置

<property>
    <name>hive.server2.authentication</name>
    <value>LDAP</value>
</property>
<property>
    <name>hive.server2.authentication.ldap.url</name>
    <value>ldap://ip-172-31-24-169.ap-southeast-1.compute.internal</value>
</property>
<property>
    <name>hive.server2.authentication.ldap.baseDN</name>
    <value>ou=People,dc=fayson,dc=com</value>
</property>

(可左右滑动)

保存配置,回到CM主页根据提示重启相应服务。

4.验证配置是否生效

使用Beeline连接ip-172-31-21-83的HiveServer2服务

在使用faysontest用户登录190的HiveServer2时输入错误的密码提示”Error validating LDAP user”。使用正确的密码登录显示成功:

使用beeline连接ip-172-31-16-68的HiveServer2服务时,输入正确的用户名和密码提示“Unsupported mechanism type PLAIN”因为Fayson的集群启用了Kerberos

使用Kerberos账号登录ip-172-31-16-68,因为Fayson的集群启用了Hive的负载均衡并配置了Load Banlancer所以连接的是负载均衡所在的服务。

由此可以看出,我们可以针对某个HiveServer2服务配置集成OpenLDAP。

6.总结


  • 确保集群所有节点已配置OpenLDAP集成SSH登录并通过sssd同步用户
  • 通过CM界面可以方便的为Hive服务启用并配置OpenLDAP服务
  • 可以针对某个HiveServer2服务配置集成OpenLDAP,由于HiveServer2不能同时支持Kerberos和LDAP认证,如果在集群需要同时支持两种认证则需要配置多个HiveServer2服务。
  • 一旦集群启用了Kerberos,HiveServer2默认使用Kerberos认证,不需要单独配置。注意这里和OpenLDAP认证的区别。
  • 使用HiveCli命令可以绕过OpenLDAP认证,未确保Hive访问的安全,这里我们可以禁用HiveCLI,具体禁用可以参考Fayson前面讲的《如何在CDH启用Kerberos的情况下安装及使用Sentry(一)》和《如何在CDH启用Kerberos的情况下安装及使用Sentry(二)》。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f),作者:Fayson

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Kerberos环境下使用Haproxy实现HiveServer2负载均衡

    前面Fayson介绍了《如何使用HAProxy实现HiveServer2负载均衡》,本文主要介绍如何使用HAProxy实现Kerberos环境下HiveServ...

    Fayson
  • 2.OpenLDAP集成SSH登录并使用SSSD同步用户

    前面Fayson文章讲《1.如何在CentOS6.5安装OpenLDAP并配置客户端》,安装及配置好OpenLDAP后,如何使用OpenLDAP上的用户登录集群...

    Fayson
  • 0725-5.16.2-如何卸载CDH5.16.2

    Fayson在两年前的文章中介绍过CDH的卸载,参考《0008-如何卸载CDH(附一键卸载github源码)V1.2》,《0609-6.1.0-如何卸载CDH6...

    Fayson
  • 如何在Kerberos环境下使用Haproxy实现HiveServer2负载均衡

    前面Fayson介绍了《如何使用HAProxy实现HiveServer2负载均衡》,本文主要介绍如何使用HAProxy实现Kerberos环境下HiveServ...

    Fayson
  • 如何使用Java连接Kerberos的HBase

    出于CDH集群安全考虑,在CDH集群中增加了Kerberos认证机制。因为HBase的存储系统是基于Hadoop的存储,所以通过HBase客户端访问HBase数...

    Fayson
  • python如何调用字典的key

    使用list()方法将字典中的keys转化为列表,然后通过列表索引值值即可调用指定的key。

    砸漏
  • Spark 实现MySQL update操作

    目前 spark 对 MySQL 的操作只有 Append,Overwrite,ErrorIfExists,Ignore几种表级别的模式,有时我们需要对表进行行...

    UFO
  • python3_装饰器_异常处理

    py3study
  • HW防守 | Linux应急响应基础

    简单说一下,我们为什么会推出关于HW防守的文章,目前关于该行动,会发现越来越多的厂商需求该行动的人员具备分析溯源的能力了。

    Timeline Sec
  • 文件预览——一路躺过来的那些坑

    因为最近项目比较紧,所以dubbo源码系列是顾不上了。 恰巧这周花了几天在做文件预览这块,两三天的时间下来,有过一些走弯路的经验教训(准确说,全都是弯路),在这...

    JackieZheng

扫码关注云+社区

领取腾讯云代金券