一、概述
由于Hadoop安全模块不存储用户和用户组信息,同时在集群开启kerberos认证后,需要映射Kerberos Principle到linux的用户及用户组,统一管理用户信息的方式有OpenLDAP和AD,而AD是部署在Windows上的,本文主要介绍在linux环境下OpenLDAP的安装及部署。
二、Server端安装与配置
2.1 安装介质
$ yum install -y openldap openldap-clients openldap-servers migrationtools
查看版本
在2.4以前的版本中,OpenLDAP使用slapd.conf配置文件来进行服务器的配置,而2.4开始则使用slapd.d目录保存细分后的各种配置,数据存储位置在/etc/openldap/slapd.d。
2.2 设置OpenLDAP管理员密码
$ [root@wgqcasappun05 ~]# slappasswd -s wangkuan {SSHA}nNKPLICNp05v/eh27DquhJZkmsaCSgUx
上述加密后的字段需要保存下来,后面配置文件中会用到。
2.3 配置文件修改
[root@wgqcasappun05slapd.d]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
修改内容:
olcSuffix: dc=hadoop,dc=com
olcRootDN:cn=Manager,dc=hadoop,dc=com
添加内容:
olcRootPW:{SSHA}nNKPLICNp05v/eh27DquhJZkmsaCSgUx
说明,cn=Manager中的Manager表示OpenLDAP管理员的用户名,而olcRootPW:为开始通过slappasswd生成的密码,需注意格式的严谨,“:”后必须有空格,否则会因格式错误导致认证失败!
[root@wgqcasappun05 cn=config]# cat olcDatabase\=\{2\}hdb.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Useldapmodify.
# CRC32 17630c65
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=hadoop,dc=com
olcRootDN:cn=Manager,dc=hadoop,dc=com
olcRootPW:{SSHA}nNKPLICNp05v/eh27DQuhJZkmsaCSgUx
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givennameeq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID:c8b8daea-16cd-1039-9fc3-01f93c3094e1
creatorsName: cn=config
createTimestamp: 20190530022423Z
entryCSN:20190530022423.917195Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20190530022423Z
2.4 修改验证
[root@wgqcasappun05cn=config]#vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
修改内容:
olcAccess: {0}to * bydn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" readby dn.base="cn=Manager,dc=hadoop,dc=com" read by * none
[root@wgqcasappun05 ~]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
# AUTO-GENERATED FILE - DO
NOT EDIT!! Use ldapmodify.
# CRC32 2dc3347a
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=had