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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章