cdh集成ldap

主要参考的服务的网址:
经过测试,如果根据腾讯云中的这个文档中的指示,把hiveadmin当成是hive的超级用户的话,会出现sentry赋权有问题的情况(那个hue中的加号(添加role)出不来),所以后面出现hiveadmin用户的情况,这里后面都需要变成hive,就可以了
03-Active Directory的使用与验证: https://mp.weixin.qq.com/s?__biz=MzI4OTY3MTUyNg==&mid=2247492951&idx=1&sn=57d4d77e185cd6e8cd132088555c1df0&chksm=ec29355edb5ebc48f0d60602dac54c66503db1830780ff42f84ff1394b995c8d2905c1898dca&scene=21#wechat_redirect
04-如何在RedHat7上配置OpenLDAP客户端及集成SSSD服务和集成SSH登录:https://mp.weixin.qq.com/s?__biz=MzI4OTY3MTUyNg==&mid=2247492976&idx=1&sn=d55c4704cd8d8af4be376b5582b5f30a&chksm=ec293579db5ebc6f351195d194988ec5039e48c1695543df4e015b3f676c8d236cf55133709c&scene=21#wechat_redirect
05-如何为Hive集成AD认证:https://mp.weixin.qq.com/s?__biz=MzI4OTY3MTUyNg==&mid=2247492990&idx=1&sn=b962ba568a47130b20d5bd9a27ded9a0&chksm=ec293577db5ebc61ef4550fe15f66a161c91565cb767069fb00439f66b319c688a7c4258e9a1&scene=21#wechat_redirect
06-如何为Impala集成AD认证 :https://mp.weixin.qq.com/s?__biz=MzI4OTY3MTUyNg==&mid=2247493000&idx=1&sn=db62f4f50e9d11fce8b47ff841ce7ff0&chksm=ec293581db5ebc97b12fa8385bf03e62cfc5b2d1a04086b55ccc04ce94780ccea0f03074f687&scene=21#wechat_redirect
07-如何为Hue集成AD认证:https://cloud.tencent.com/developer/article/1357110
cloudera 地址: http://100.115.128.235:6382/cmf/login
hue地址: http://100.115.128.235:6395/hue/
4.导出AD文件的文档
http://mp.weixin.qq.com/s?__biz=MzI4OTY3MTUyNg==&mid=2247492976&idx=1&sn=d55c4704cd8d8af4be376b5582b5f30a&chksm=ec293579db5ebc6f351195d194988ec5039e48c1695543df4e015b3f676c8d236cf55133709c&scene=21#wechat_redirect
可以直接一次安装所有需要的服务:yum -y install openldap-clients sssd authconfig nss-pam-ldapd sssd-ad
yum -y install sssd authconfig nss-pam-ldapd sssd-ad

  1. yum -y install openldap-clients
    修改/etc/openldap/ldap.conf配置
    cdh集成ldap_第1张图片
    TLS_CACERTDIR /etc/openldap/cacerts
    URI ldap://10.27.70.141
    BASE ou=BITEST,dc=zmoffice,dc=com

Turning this off breaks GSSAPI used with krb5 when rdns = false

SASL_NOCANON on
2.利用ldapsearch查看是否能看到对应的用户信息
ldapsearch -b “ou=BITEST,dc=zmoffice,dc=com” -D "[email protected]" -w Aa123456 | grep bi_user.bi
-D 后的是用户名还有对一个的域名, -w后带密码,查询的是ldap中是否有bi_user.bi这个用户
cdh集成ldap_第2张图片安装sssd服务:yum -y install sssd authconfig nss-pam-ldapd sssd-ad
在命令行使用authconfig命令初始化sssd服务并生成sssd.conf文件
authconfig --enablesssd --enablesssdauth --enablerfc2307bis --enableldap --enableldapauth --disableforcelegacy --enableldaptls --disablekrb5 --ldapserver ldap://10.27.70.141 --ldapbasedn “ou=BITEST,dc=zmoffice,dc=com” --enablemkhomedir --update
初始化/etc/sssd/sssd.conf 文件,没有这个文件就自己建立一个,并把文件权限修改下:chmod 600 /etc/sssd/sssd.conf
把用authconfig自动配置的sssd.conf文件修改成跟咱们对接的ldap AD域对应的环境,修改后的配置如下
[domain/default]
autofs_provider = ldap
ldap_schema = ad
ldap_search_base = ou=BITEST,dc=zmoffice,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://10.27.70.141
ldap_id_use_start_tls = True
ldap_tls_reqcert = allow
cache_credentials = True
ldap_tls_cacertdir = /etc/openldap/cacerts

General

debug_level = 7
enumerate = false
case_sensitive = false
cache_credentials = true
min_id = 100

Providers

full_name_format = %1$s
fallback_homedir = /home/%u
default_shell = /bin/bash
ldap_id_mapping = True
ldap_user_search_base = ou=BITEST,dc=zmoffice,dc=com
#ldap_group_search_base = ou=BIGDATA,dc=zmoffice,dc=com

LDAP Class settings

ldap_user_object_class = user
ldap_user_principal = userPrincipalName
ldap_user_name = sAMAccountName
ldap_user_gecos = displayName
ldap_group_object_class = group
ldap_group_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory

LDAP connection settings

ldap_uri = ldap://10.27.70.141
ldap_default_bind_dn = [email protected]
ldap_default_authtok_type = password
ldap_default_authtok = Aa123456
[sssd]
services = nss, pam, autofs
config_file_version = 2
domains = default
[nss]
homedir_substring = /home
reconnection_retries = 3
[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]
[secrets]
[session_recording]
注意这个sssd.conf最后一行是必须有个空行,ldap_default_bind_dn为用户的登陆,由于是用AD把用户做一个拼接,所以才采取[email protected]这种方式。10.27.70.141这个地址是运维帮忙映射的window AD服务器的地址, AD服务可支持ldaps方式访问,启用TLS后访问端口为636,默认的389为未启用TLS的访问端口。这里面没配置端口,也是可以的。
3.让九歌导出windows AD的证书
http://mp.weixin.qq.com/s?__biz=MzI4OTY3MTUyNg==&mid=2247492976&idx=1&sn=d55c4704cd8d8af4be376b5582b5f30a&chksm=ec293579db5ebc6f351195d194988ec5039e48c1695543df4e015b3f676c8d236cf55133709c&scene=21#wechat_redirect
导出的文件是对应我们ou的证书 BITEST的证书,例如:导出的文件名字是 zmoffice-HLBDC-CA.p12
把这个文件拷贝到 /etc/openldap/cacerts 目录,把 zmoffice-HLBDC-CA.p12文件转换成pem的格式
命令:openssl pkcs12 -in zmoffice-HLBDC-CA.p12 -out server.pem
Enter Import Password:(密码为空,导出zmoffice-HLBDC-CA.p12 文件是设置的密码是Zmlearn12)
MAC verified OK
Enter PEM pass phrase:(设置密码123456)
Verifying - Enter PEM pass phrase:(确认123456)
[root@cdh02 cacerts]# ll
4.执行cacertdir_rehash命令创建证书软连
执行:cacertdir_rehash /etc/openldap/cacerts/
cdh集成ldap_第3张图片
5. 修改完sssd.conf配置文件后重启sssd服务,在重启前可以删除sssd的缓存数据
rm -f /var/lib/sss/db/cache_default.ldb #这个cache_default.ldb的文件是和上面[domain/default]中的default项对应的。
启动:systemctl restart sssd 由于autoconfig命令后会自动的启动sssd服务。
常用的命令:
systemctl restart sssd
systemctl enable sssd
systemctl start sssd
systemctl status sssd
systemctl stop sssd
6.测试一个oldap中存在的用户
[root@生产-大数据.testhadoop-05:sssd]# id bi_user1
uid=967433625(bi_user1) gid=967400513(domain users) groups=967400513(domain users),967433244(bigdata)
这就证明可以从ldap中拉取用户。
下面就是准备ldap中的用户:cdh安装的服务会默认的创建hive,yarn,hdfs等用户,但是这些用户在ldap中是不存在的,而在sentry控制权限的时候只认hive用户,所以需要在ldap中创建一个hive的用户。
我是用的ldap admin的前端工具来管理ldap中的用户的信息,所以创建 test_ldap用户,test组,用来测试。
cdh集成ldap_第4张图片
之前的测试的时候得出一个结论:在sentry和hue结合后,如果在hue中test的不是在test_ldap的组中的话,就会出现赋权的问题。所以保证一个铁律:hue中用户以及用户所属的组一定要和linux中,或者是ldap中的组是对应的关系。这点非常重要,非常重要,非常重要。

LDAP URL : ldap://10.27.70.141
Active Directory:zmoffice.com
7.测试hive的ldap集成
cdh集成ldap_第5张图片 beeline
!connect jdbc:hive2://testhadoop-03:10000/default;user=hive;password=Aa123456
!connect jdbc:hive2://testhadoop-03:10000 这种模式自己输入用户和密码
testhadoop-03是hiveserver2的服务器地址
这里的hive用户就是ldap中创建的用户
cdh集成ldap_第6张图片8.impala集成ldap
cdh集成ldap_第7张图片–ldap_passwords_in_clear_ok
–authorized_proxy_user_config=hive=* (这个需要在后面填上,否则的话就无法连接hive,用户需要是hive用户,首先在ldap中创建hive用户,然后ldap同步过去,在hue中创建一个hive本地组,然后把hive用户加入到hive组中就可以了,不用同步linux中的本地用户)
cdh集成ldap_第8张图片cdh集成ldap_第9张图片测试impala:
impala-shell -i testhadoop-04:21000 -l -u hiveadmin --auth_creds_ok_in_clear
21000为默认的impala的访问的端口,testhadoop4为服务的节点。
测试impala的结果:
cdh集成ldap_第10张图片9.ldap集成hue的服务
07-如何为Hue集成AD认证:https://cloud.tencent.com/developer/article/1357110
hive : Aa123456
test_ldap : Aa123456
流程可以看下
07-如何为Hue集成AD认证:https://cloud.tencent.com/developer/article/1357110
最终的效果就是这样的,流程大体是这样的:先在(身份验证后端选上AllowFirstUserDjangoBackend,利用admin用户登陆进入hue,然后同步ldap中的hive用户,并把hive用户设置成hue的超级用户,也就是管理员,然后在把身份验证后端配置成 )这样,以后就只有ldap的用户才能登陆hue。
cdh集成ldap_第11张图片出现问题以及解决,有的问题可能还未解决:
如何在RedHat7中实现OpenLDAP集成SSH登录并使用sssd同步用户:https://blog.51cto.com/11093860/2161809
1.
出现问题:
ldap_sasl_bind(SIMPLE): Can’t contact LDAP server (-1)
服务器ping不同 ldap服务器的地址。
2. systemctl status sssd出现:
Could not start TLS encryption. TLS: hostname does not match CN in peer certificate
在/etc/sssd/sssd.conf
ldap_tls_reqcert = allow
因为window AD ldap自动的添加了tls
3. systemctl status sshd
pam_ldap(sshd:auth): failed to get password: Authentication failure
4.卸载ldap客户端后,再次安装的时候出现
liblber-2.4.so.2: cannot open shared object file: No such file or directory
参照: https://blog.csdn.net/lj1404536198/article/details/79166200 文档
wget http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.6/x86_64/updates/fastbugs/openldap-2.4.44-21.el7_6.x86_64.rpm 我的是centos7,所以下载这个
wget http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.4/x86_64/updates/fastbugs/openldap-2.4.23-32.el6_4.1.x86_64.rpm 这个是centos6的rpm包
rpm -v --checksig openldap-2.4.44-21.el7_6.x86_64.rpm
rpm -ivh --force --nodeps openldap-2.4.44-21.el7_6.x86_64.rpm
再次执行安装:
yum -y install openldap-clients sssd authconfig nss-pam-ldapd sssd-ad
5.执行authconfig --enablesssd --enablesssdauth --enablerfc2307bis --enableldap --enableldapauth --disableforcelegacy --enableldaptls --disablekrb5 --ldapserver ldap://10.27.70.141 --ldapbasedn “ou=BITEST,dc=zmoffice,dc=com” --enablemkhomedir --update后出现
Job for sssd.service failed because the control process exited with error code. See “systemctl status sssd.service” and “journalctl -xe” for details
出现
Apr 18 16:15:52 testhadoop-02 sssd[31876]: Exiting the SSSD. Could not restart critical service [default].
Apr 18 16:15:52 testhadoop-02 systemd[1]: sssd.service: main process exited, code=exited, status=1/FAILURE
Apr 18 16:15:52 testhadoop-02 systemd[1]: Failed to start System Security Services Daemon.
看这个路径下的日志:因为我的domains是LDAP,所以我的日志是sssd_LDAP.log,如果是默认的就是sssd_default.log
more /var/log/sssd/sssd_LDAP.log
(Thu Apr 18 18:39:42 2019) [sssd[be[LDAP]]] [dp_module_open_lib] (0x0010): Unable to load module [ldap] with path [/usr/lib64/sssd/libsss_ldap.so]: /usr/lib64/sssd/libsss_ldap.so: cannot open shared object file: No such file or directory
把另外机器中的/usr/lib64/sssd/libsss_ldap.so文件拷贝到这台机器的对应目录中,因为我的测试集群是5台机器,其中只有一台机器有问题,因为这台机器重装了。所以把其他几台机器中的对应的文件拷贝到这台机器中就可以了。
6.当配置完ldap的用户信息后,机器上用sssd同步了用户,但是在ldap中把用户加入到别的组后,机器上的用户信息还是没有加入组之前的状态,原因就是sssd是有缓存的,如果更改了ldap中的信息后需要把每个ldap客户端中的sssd中的缓存清除一下就好了
sss_cache -E
systemctl restart sssd
cdh集成ldap_第12张图片7.测试hive启用ldap中的出现问题
Error: Could not open client transport with JDBC Uri: jdbc:hive2://testhadoop-02:10000: Peer indicated failure: Error validating the login (state=08S01,code=0)
在hive的ldap配置中的url的地址写错了,从 ldap://172.31.116.174 改成ldap://10.27.70.141 (这个地址是映射过来的地址,应为生产服务器和ldap的服务器网络不通)
我删除了的东西:
warning: /etc/nslcd.conf saved as /etc/nslcd.conf.rpmsave
warning: /etc/openldap/ldap.conf saved as /etc/openldap/ldap.conf.rpmsave
warning: /etc/security/limits.conf saved as /etc/security/limits.conf.rpmsave
warning: /etc/pam.d/system-auth saved as /etc/pam.d/system-auth.rpmsave
warning: /etc/pam.d/smartcard-auth saved as /etc/pam.d/smartcard-auth.rpmsave
warning: /etc/pam.d/postlogin saved as /etc/pam.d/postlogin.rpmsave
warning: /etc/pam.d/password-auth saved as /etc/pam.d/password-auth.rpmsave
warning: /etc/pam.d/fingerprint-auth saved as /etc/pam.d/fingerprint-auth.rpmsave
warning: /etc/sysconfig/authconfig saved as /etc/sysconfig/authconfig.rpmsave
8.出现问题:
Error while compiling statement: FAILED: SemanticException No valid privileges User hiveadmin does not have privileges for SWITCHDATABASE The required privileges: Server=sentry_server->Db=->Table=±>Column=->action=select->grantOption=false;Server=sentry_server->Db=->Table=±>Column=->action=insert->grantOption=false;Server=sentry_server->Db=->Table=±>Column=->action=alter->grantOption=false;Server=sentry_server->Db=->Table=±>Column=->action=create->grantOption=false;Server=sentry_server->Db=->Table=±>Column=->action=drop->grantOption=false;Server=sentry_server->Db=->Table=±>Column=->action=index->grantOption=false;Server=sentry_server->Db=->Table=±>Column=->action=lock->grantOption=false;
Request: TListSentryRolesRequest(protocol_version:2, requestorUserName:hiveadmin, groupName:bigdata) couldn’t be completed, message: Group bigdata doesn’t exist
因为没有hive组中权限导致的,把这个用户加入到hive组中就好了
9.出现问题: Bad status: 3 (Error validating the login) (code THRIFTTRANSPORT): TTransportException(‘Bad status: 3 (Error validating the login)’,)
在hue中的安全阀中加上ldap中标注的hive的超级用户hiveadmin,以及密码,否则会出现连接错误,(cdh5.X版本的是用 ldap_username来标注的,咱们环境是cdh6.X,环境配置文件/etc/hue/conf/hue.ini 中的相应的配置改成了auth_username )
[desktop]
auth_username=hive
auth_password=Aa123456
app_blacklist=
cdh集成ldap_第13张图片10.如果yarn设置了资源池,hue 客户端在使用时需要设置资源池 set mapred.job.queue.name=root.zm_yarn_pool.production; 否则会出现如下报错。
cdh集成ldap_第14张图片

你可能感兴趣的:(大数据,CDH,LDAP)