注:本手册以CM&CDH5.7.6为例

1、Hive配置LDAP认证

目前单个Hive Server2只能支持一种客户端认证方式,或者是Kerberos认证,或者是LDAP认证,所以要在一个集群内部同时支持两种认证方式,必须配置两个HiveServer 2

注:目前新版本CDH已经可以同时支持两种认证方式,在CDH5.14.4上已验证过。

1.1、开启“启用LDAP身份验证”

搜索“启用 LDAP 身份验证”改为“true

 各组件配置LDAP认证手册_impala

1.2、配置“LDAP URL

搜索“hive.server2.authentication.ldap.url”添加“ldap://192.168.1.62:389

 各组件配置LDAP认证手册_hue_02

1.3、配置“LDAP BaseDN

搜索“hive.server2.authentication.ldap.baseDN”添加“ou=People,dc=bigdata,dc=hex,dc=com

该配置必须指向用户所在的OrganizationUnit(ou) ,因为Hive会直接使用uid+baseDN作为该用户的dnLDAP中进行查询。

 各组件配置LDAP认证手册_hue_03

1.4、重启Hive等相关服务

配置完成并保存后,重启Hive等相关服务。

 

1.5、其他注意事项

注意1:老的CDH版本可能只能在“hive-site.xml HiveServer2 高级配置代码段”配置如下参数:

<property>

  <name>hive.server2.authentication</name>

  <value>LDAP</value>

</property>

<property>

  <name>hive.server2.authentication.ldap.url</name>

  <value>ldap://192.168.1.62:389</value>

</property>

<property>

  <name>hive.server2.authentication.ldap.baseDN</name>

  <value>ou=People,dc=bigdata,dc=hex,dc=com</value>

</property>

 

 各组件配置LDAP认证手册_hive_04

2、HiveServer2通过LDAP认证测试

通过beeline连接HiveServer2,用户名输入junjie,密码随便输入一个比如000000

执行:beeline-u jdbc:hive2://192.168.1.61:10000/default -n junjie -p 000000

各组件配置LDAP认证手册_hive_05

显示认证失败,再次登录,输入正确密码111111

执行:beeline-u jdbc:hive2://192.168.1.61:10000/default -n junjie -p 111111

各组件配置LDAP认证手册_ldap_06

登录成功,并能进行相关操作,没有权限上的控制。测试成功!

 

3、Impala配置LDAP认证

同一个Impala Daemon是既可支持Kerberos认证,又可支持LDAP认证。

 

3.1、开启“启用 LDAP 身份验证”

搜索“启用 LDAP 身份验证”改为“true”

 各组件配置LDAP认证手册_hive_07

3.2、配置“LDAP URL

搜索“ldap_uri”添加“ldap://192.168.1.62:389

 各组件配置LDAP认证手册_ldap_08

3.3、配置“LDAP BaseDN

搜索“ldap_baseDN”添加“ou=People,dc=bigdata,dc=hex,dc=com

 各组件配置LDAP认证手册_ldap_09

3.4、配置“Impala Daemon 命令行参数高级配置代码段”

没有启用LDAP TLS时搜索“ldap_tls”可以查看是否启用)需要Impala Daemon命令行参数高级配置代码段(安全阀)”添加“-ldap_passwords_in_clear_ok=true

 各组件配置LDAP认证手册_hive_10

3.5、重启Impala等相关服务

配置完成并保存后,重启Impala等相关服务。

 

3.6、其他注意事项

注意1:仅当需要做严格的用户绑定,或用户名不是通过uid指定时,配置“LDAP 模式”。此参数与 LDAP 域和 LDAP BaseDN 相互排斥。

搜索“ldap_bind_pattern”添加“uid=#UID,ou=People,dc=bigdata,dc=hex,dc=com”

 各组件配置LDAP认证手册_ldap_11

4、Impala通过LDAP认证测试

通过impala-shell连接某个daemon,使用用户junjie,随便输入一个密码比如000000

执行:impala-shell-l -i 192.168.1.61:21000 -u junjie

各组件配置LDAP认证手册_hive_12

报错:LDAP凭证不能为非安全连接。可以启用SSL或设置--auth_creds_ok_in_clear

执行:impala-shell-l -i 192.168.1.61:21000 -u junjie --auth_creds_ok_in_clear

各组件配置LDAP认证手册_hive_13

显示认证失败,再次登录,输入正确密码111111

执行:impala-shell-l -i 192.168.1.61:21000 -u junjie --auth_creds_ok_in_clear

各组件配置LDAP认证手册_hue_14

登录成功,并能进行相关操作,没有权限上的控制。测试成功!

 

5、Hue配置LDAP认证

默认情况下,Hue使用内置的数据库存储用户名密码,而且第一个登陆的用户即是Hue的管理员用户,可以用来创建其他用户。

 

5.1、配置“LDAP URL

搜索“ldap_url”添加“ldap://192.168.1.62:389

 各组件配置LDAP认证手册_hue_15

5.2、开启“使用搜索绑定身份验证”

搜索“search_bind_authentication”改为“true”

 各组件配置LDAP认证手册_ldap_16

5.3、配置“LDAP 搜索基础”

搜索“base_dn”添加“ou=People,dc=bigdata,dc=hex,dc=com

 各组件配置LDAP认证手册_hive_17

5.4、配置“LDAP 绑定用户可分辨名称”

搜索“bind_dn”添加“cn=Manager,dc=bigdata,dc=hex,dc=com

 各组件配置LDAP认证手册_hue_18

5.5、关闭“登录时创建 LDAP 用户”

搜索“create_users_on_login”修为“false”

 各组件配置LDAP认证手册_impala_19

5.6、配置“LDAP 绑定密码”

搜索“bind_password”添加“123456

 各组件配置LDAP认证手册_impala_20

5.7、配置“LDAP 用户筛选”

搜索“user_filter”添加“(objectClass=posixAccount)”

 

5.8、配置“LDAP 用户名属性”

搜索“user_name_attr”添加“uid”

 各组件配置LDAP认证手册_hive_21

5.9、配置“LDAP 组筛选”

搜索“group_filter”添加“(objectClass=posixGroup)”

 

5.10、配置“LDAP 组名称属性”

搜索“group_name_attr”添加“cn”

 各组件配置LDAP认证手册_hue_22

5.11、配置“LDAP 组成员身份属性”

搜索“group_member_attr”添加“memberUid”

 各组件配置LDAP认证手册_impala_23

5.12、添加/同步LDAP用户

保存所有配置,并重启Hue服务。注:在重启前需要之前有登录过HUE。

打开Hue服务使用第一次登陆的用户名和密码登录。

各组件配置LDAP认证手册_ldap_24

若要将组信息同步过来,还需要显式地进行LDAP组的同步,这样才能将真正的用户组信息取过来。

  各组件配置LDAP认证手册_ldap_25

各组件配置LDAP认证手册_impala_26

各组件配置LDAP认证手册_hive_27

 

Hue管理LDAP用户组的逻辑是用户和组的独立管理,添加LDAP用户是不会将对应的组信息获取的;“添加/同步LDAP用户”只会添加对应用户或更新已有用户的组信息,其他不存在Hue中的其他用户是不会同步过来的;随后在Hue中“同步LDAP用户/组”时可以将LDAP的信息同步过来。

各组件配置LDAP认证手册_ldap_28

各组件配置LDAP认证手册_hive_29

将其中一个LDAP账号设为高级管理员权限,因为之后使用LDAP方式登录HUE,第一次登陆的账号(这里是admin)将无法登录。

 

各组件配置LDAP认证手册_hive_30

5.13、修改“身份验证后端”

搜索“backend”修为“desktop.auth.backend.LdapBackend”

 各组件配置LDAP认证手册_hue_31

5.14、配置“hue_safety_valve.ini Hue 服务高级配置代码段”

如果Hive已经设置LDAP验证,需在Hue中增加以下设置,否则Hue无法正常连接Hive进行查询。

搜索“hue_safety_valve.ini 的 Hue 服务高级配置代码段”添加如下内容:

[desktop]

ldap_username=hue

ldap_password=111111

 各组件配置LDAP认证手册_hue_32

5.15HDFS中配置“core-site.xml 的群集范围高级配置代码段”(无需配置)

在HDFS的配置中搜索“core-site.xml 的群集范围高级配置代码段”添加如下内容:

<property>

<name>hadoop.proxyuser.hue.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.hue.groups</name>

<value>*</value>

</property>

各组件配置LDAP认证手册_ldap_33

注:目前CDH版本中这个已经默认配置

 

5.16Impala中配置“Impala Daemon 命令行参数高级配置代码段”(无需配置)

在Impala的配置中搜索“Impala Daemon 命令行参数高级配置代码段”添加如下内容:

-authorized_proxy_user_config=hue=*

各组件配置LDAP认证手册_hive_34

注:目前CDH版本中这个已经默认配置

 

5.17、重启Hue等相关服务

配置完成并保存后,重启Hue等相关服务。

 

5.18、其他注意事项

注意1LDAPusergroup的属性根据自己的LDAP服务配置的实际情况填入。

 

6、Hue通过LDAP认证测试

打开Hue的网页,使用LDAP中的用户junjie登录,此时第一次登陆的账号(这里是admin)已经无法再次登录。

各组件配置LDAP认证手册_impala_35

各组件配置LDAP认证手册_ldap_36

各组件配置LDAP认证手册_hive_37

 

进行Hive测试:

 各组件配置LDAP认证手册_ldap_38

进行Impala测试:

 各组件配置LDAP认证手册_hive_39