注:本手册以cm&cdh5.7.6为例
目前单个hive server2只能支持一种客户端认证方式,或者是kerberos认证,或者是ldap认证,所以要在一个集群内部同时支持两种认证方式,必须配置两个hiveserver
2。
注:目前新版本cdh已经可以同时支持两种认证方式,在cdh5.14.4上已验证过。
搜索“启用 ldap 身份验证”改为“true”
搜索“hive.server2.authentication.ldap.url”添加“ldap://192.168.1.62:389”
搜索“hive.server2.authentication.ldap.basedn”添加“ou=people,dc=bigdata,dc=hex,dc=com”
该配置必须指向用户所在的organizationunit(ou)
,因为hive会直接使用uid+basedn作为该用户的dn在ldap中进行查询。
配置完成并保存后,重启hive等相关服务。
注意1:老的cdh版本可能只能在“hive-site.xml 的 hiveserver2 高级配置代码段”配置如下参数:
<property>
<name>hive.server2.authentication</name>
<value>ldap</value>
</property>
<name>hive.server2.authentication.ldap.url</name>
<value>ldap://192.168.1.62:389</value>
<name>hive.server2.authentication.ldap.basedn</name>
<value>ou=people,dc=bigdata,dc=hex,dc=com</value>
通过beeline连接hiveserver2,用户名输入junjie,密码随便输入一个比如000000
执行:beeline-u jdbc:hive2://192.168.1.61:10000/default -n junjie -p 000000
显示认证失败,再次登录,输入正确密码111111
执行:beeline-u jdbc:hive2://192.168.1.61:10000/default -n junjie -p 111111
登录成功,并能进行相关操作,没有权限上的控制。测试成功!
同一个impala daemon是既可支持kerberos认证,又可支持ldap认证。
搜索“ldap_uri”添加“ldap://192.168.1.62:389”
搜索“ldap_basedn”添加“ou=people,dc=bigdata,dc=hex,dc=com”
没有启用ldap tls时(搜索“ldap_tls”可以查看是否启用),需要在“impala daemon命令行参数高级配置代码段(安全阀)”添加“-ldap_passwords_in_clear_ok=true”
配置完成并保存后,重启impala等相关服务。
注意1:仅当需要做严格的用户绑定,或用户名不是通过uid指定时,配置“ldap 模式”。此参数与 ldap 域和 ldap basedn 相互排斥。
搜索“ldap_bind_pattern”添加“uid=#uid,ou=people,dc=bigdata,dc=hex,dc=com”
通过impala-shell连接某个daemon,使用用户junjie,随便输入一个密码比如000000
执行:impala-shell-l -i 192.168.1.61:21000 -u junjie
报错:ldap凭证不能为非安全连接。可以启用ssl或设置--auth_creds_ok_in_clear
--auth_creds_ok_in_clear
默认情况下,hue使用内置的数据库存储用户名密码,而且第一个登陆的用户即是hue的管理员用户,可以用来创建其他用户。
搜索“ldap_url”添加“ldap://192.168.1.62:389”
搜索“search_bind_authentication”改为“true”
搜索“base_dn”添加“ou=people,dc=bigdata,dc=hex,dc=com”
搜索“bind_dn”添加“cn=manager,dc=bigdata,dc=hex,dc=com”
搜索“create_users_on_login”修为“false”
搜索“bind_password”添加“123456”
搜索“user_filter”添加“(objectclass=posixaccount)”
搜索“user_name_attr”添加“uid”
搜索“group_filter”添加“(objectclass=posixgroup)”
搜索“group_name_attr”添加“cn”
搜索“group_member_attr”添加“memberuid”
保存所有配置,并重启hue服务。注:在重启前需要之前有登录过hue。
打开hue服务使用第一次登陆的用户名和密码登录。
若要将组信息同步过来,还需要显式地进行ldap组的同步,这样才能将真正的用户组信息取过来。
hue管理ldap用户组的逻辑是用户和组的独立管理,添加ldap用户是不会将对应的组信息获取的;“添加/同步ldap用户”只会添加对应用户或更新已有用户的组信息,其他不存在hue中的其他用户是不会同步过来的;随后在hue中“同步ldap用户/组”时可以将ldap的信息同步过来。
将其中一个ldap账号设为高级管理员权限,因为之后使用ldap方式登录hue,第一次登陆的账号(这里是admin)将无法登录。
</h3>
搜索“backend”修为“desktop.auth.backend.ldapbackend”
如果hive已经设置ldap验证,需在hue中增加以下设置,否则hue无法正常连接hive进行查询。
搜索“hue_safety_valve.ini 的 hue 服务高级配置代码段”添加如下内容:
[desktop]
ldap_username=hue
ldap_password=111111
在hdfs的配置中搜索“core-site.xml 的群集范围高级配置代码段”添加如下内容:
<name>hadoop.proxyuser.hue.hosts</name>
<value>*</value>
<name>hadoop.proxyuser.hue.groups</name>
注:目前cdh版本中这个已经默认配置
在impala的配置中搜索“impala daemon 命令行参数高级配置代码段”添加如下内容:
-authorized_proxy_user_config=hue=*
配置完成并保存后,重启hue等相关服务。
注意1:ldap的user和group的属性根据自己的ldap服务配置的实际情况填入。
打开hue的网页,使用ldap中的用户junjie登录,此时第一次登陆的账号(这里是admin)已经无法再次登录。
进行hive测试:
进行impala测试: