hive+impala+hue+sentry+ldap整合

公司用的cdh版本为5.14,sentry集成的步骤很简单,通过cdh的界面就可以完成了 主要写一些openldap的搭建和phpldap的使用,还有ldap和(hive,impala,hue)的整合。
ldap的具体概念可以参照这篇文章
LDAP概念和原理介绍

我的系统是centos6,所以有些命令centos7的不太一样,总体区别不大。
一.安装OpenLDAP
yum install openldap openldap-clients openldap-servers
安装完直接启动
service slapd start
设置管理员密码
slappasswd -h {SSHA}
然后会让你输入一个明文密码,返回给你一个加密的密码,记住这个返回的密码

使用ldapsearch命令查询管理员的dn:
ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcRootDN=cn=Manager,dc=**,dc=com dn olcRootDN olcRootPW
这里返回的dn是olcDatabase={2}bdb,cn=config,密码等信息也都一并返回。这里有用的是dn和密码的加密方式,比如这里是SSHA,dn是后面修改的Entry DN,而知道密码的加密方式就可以使用该加密方式生成新密码。

使用ldapmodify修改条目

使用下面的命令来修改管理员条目:
ldapmodify -Y EXTERNAL -H ldapi:///

然后输入修改的条目,也就是第1步中获取到的DN:

dn: olcDatabase={2}bdb,cn=config
#这是第1步获取的管理员dn

replace: olcRootPW

olcRootPW: {SSHA}vAYFH48G4IfrpD57gTR/DNZqLHWzR+Fg
#这里是上面slappasswd生成的密码

输入完毕后,按Crtl+D键保存退出交互模式。

如果出现:
modifying entry "olcDatabase={2}bdb,cn=config"

重启服务使修改生效
/etc/init.d/slapd restart

到此就设定好了管理员的密码。可以用客户端去管理openldap了

打算使用phpldapadmin来管理openldap,这个工具使用的人较多,网上文档多,出现问题容易解决。

二.安装phpldapadmin
首先安装Apache和PHP:
yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml

然后安装phpldapadmin:
yum -y install phpldapadmin

httpd与phpldapadmin进行集成:
修改配置文件:
[root@localhost ~]# vim /etc/phpldapadmin/config.php
#397行取消注释,398行添加注释
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

[root@localhost ~]# vim /etc/httpd/conf.d/phpldapadmin.conf

// 修改配置
<IfModule mod_authz_core.c>

Apache 2.4

Require local
        #添加一行内容,指定可访问的ip段(虽然我也不知道为什么,但不填不能运行这管理工具,我就直接写的本地ip)
Require ip 172.31.101.110
</IfModule>
把下面的Deny from all 改为Allow from all

修改完之后启动:
service httpd restart
界面:

hive+impala+hue+sentry+ldap整合

登陆
用户名,默认是 cn=Manager,dc=my-domain,dc=com(这个也可以改的,仿照修改密码的步骤)
密码就输入刚开始设置的密码

登陆进去后,我的管理界面报这个信息:
This base cannot be created with PLA
显示结果如下:
hive+impala+hue+sentry+ldap整合

经过查询,最终总结和处理如下:

1、首先需要在/etc/openldap/目录下,创建一个base.ldif文件,如下所示:
hive+impala+hue+sentry+ldap整合

2、在base.ldif文件中,写入如下信息,为创建初始化根节点做准备工作:
hive+impala+hue+sentry+ldap整合
3、执行ldapadd -f base.ldif -x -D cn=Manager,dc=DouBi,dc=Ren –W 输入之前配置OpenLDAP的密码后,即可完成创建LDAP根节点,如下图所示:
hive+impala+hue+sentry+ldap整合
完成以上操作后,再回到phpldapadmin页面,可以看到,已经正常出现了根节点,并可以创建相关OU、Group、Account等对象,如下图所示:
hive+impala+hue+sentry+ldap整合

三.整合ldap和hive,impala,hue
先用phpldapadmin在ldp创建一个用户去测试:
首先创建一个ou,叫users
hive+impala+hue+sentry+ldap整合

然后再在users下创建一个用户:jiandan
注意,在创建新条目时,一定要选择默认,然后选inetOrgPerson,不要选择什么Posix或者Generic User Account,否则后面验证不通过
按下图选择
hive+impala+hue+sentry+ldap整合
hive+impala+hue+sentry+ldap整合
hive+impala+hue+sentry+ldap整合

首先整合hive:
在cdh里面修改一下配置:
hive+impala+hue+sentry+ldap整合

这张图用的别人的,如果按我的配置,BaseDN则写:
ou=users,dc=my-domain,dc=com
然后用beeline进行测试
hive+impala+hue+sentry+ldap整合
这样就是通过ldap的验证了,如果密码不正确则会:
hive+impala+hue+sentry+ldap整合

然后整合impala:
修改配置,和hive类似:
hive+impala+hue+sentry+ldap整合
不过要在高级代码段里面增加一个参数,因为我们的密码是明文传输,否则imapala启动不了。
重启impala后,我们来测试
hive+impala+hue+sentry+ldap整合
发现已经ok了。

最后我们来整合hue
首先需要配置这些
hive+impala+hue+sentry+ldap整合
这个配置好以后,我们就可以登陆hue了,我们看到登陆的界面已经多了个ldap
hive+impala+hue+sentry+ldap整合

登陆已经可以了,不过登陆进去后会报一些错误:
[文件]
hive+impala+hue+sentry+ldap整合

我们需要配置一些额外的参数从而让hue用户可以代理其他的用户
1.在ldap中创建hue用户
2.hue_safety_valve.ini 的 Hue 服务高级配置代码段(安全阀)中配这些

[beeswax]
close_queries=True
use_sasl=False
auth_username=hue
auth_password=xxxxxxx
[impala]
server_host=datanode1
server_interface=hiveserver2
server_port=21050
query_timeout_s=100
impersonation_enabled=True
auth_username=hue
auth_password=xxxxxxx

在hive和i mpala的core-site.xml 的 Hive 服务高级配置代码段(安全阀)中增加以下配置:

hive+impala+hue+sentry+ldap整合

impala的Impala 命令行参数高级配置代码段(安全阀)中再加上
--authorized_proxy_user_config=hue=*
hive+impala+hue+sentry+ldap整合

然后就不会报这个错误了。

以上就基本完成了ldap和hive impala hue的整合。

下周会继续研究
LDAP和HUE的集成(搜索绑定)
https://blog.csdn.net/u011026329/article/details/79171890

猜你喜欢

转载自blog.51cto.com/xiaolanlan/2378004