参考文档:https://www.cnblogs.com/daiss314/p/13227180.html

 

一、概念介绍

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,简称为LDAP。LDAP的目录服务其实也是一种数据库系统(Berkeley DB),只是这种数据库是一种树形结构(B Tree),适合读不适合频繁写,不支持事务不能回滚。

我们用LDAP实现多个组件的用户管理,比如把gitlab和jenkins、harbor等组件的用户放在LDAP一起管理,组件只负责权限管理。用户在这些组件登录时都走LDAP的认证,让用户可以用一套用户名密码即可登录所有组件。

LDAP的树形结构的概念理解

从叶子到根的这条“路径”是一条数据,称为条目(Entry),这条数据的全局唯一标识叫做dn

  • dc(Domain Component)是域名的一部分,把完整的域名拆开。
  • ou(Organization Unit)是组织单元。
  • cn(Common Name)一般是用户的名字。
  • uid(User Id)一般是用户登录id。

简单理解就是:dn是 一条记录的详细位置; dc是一个区域(相当于哪颗树);ou是一个组织(相当于哪一个分支);cn/uid(分支上的哪个苹果)。

二、安装ldap服务端

#安装服务端

[root@ldap ~]# yum install -y openldap openldap-clients openldap-servers migrationtools

#配置ldap服务器

[root@ldap ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif

#配置监视数据库的配置文件

[root@ldap ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif

#配置ldap数据库

/usr/share/openldap-servers/DB_CONFIG.example的文件复制到/var/lib/ldap/DB_CONFIG目录下,并给文件授权ldap属主属组

 

[root@ldap ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

[root@ldap ~]# chown -R ldap.ldap /var/lib/ldap/

#检测配置是否正确

[root@ldap ~]# slaptest -u                                   #输入命令出现succeeded表示验证成功

#启动ldap,并设置开机自启

[root@ldap ~]# systemctl start slapd

[root@ldap ~]# systemctl enable slapd

[root@ldap ~]# ss -antup | egrep "389|636"          检测服务及端口

#启动ldap服务器的配置,需添加以下ldap模式

[root@ldap ~]# ls /etc/openldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}

#创建ldap DIT

[root@ldap schema]# vim /usr/share/migrationtools/migrate_common.ph

修改61行  $NAMINGCONTEXT{'group'} = "ou=Groups";

修改71行   $DEFAULT_MAIL_DOMAIN = "songchen.com";

修改74行  $DEFAULT_BASE = "dc=songchen,dc=com";

修改90行  $EXTENDED_SCHEMA = 1;

 

#生成一个基地,ldif文件为域的DIT 

#切换到migrationtools目录下执行  ./migrate_base.pl > /root/base.ldif

[root@ldap schema]# cd /usr/share/migrationtools/

[root@ldap migrationtools]# ./migrate_base.pl > /root/base.ldif

#将基地上传到ldap数据库中

[root@ldap migrationtools]# ldapadd -x -W -D "cn=auto,dc=songchen,dc=com" -f /root/base.ldif

 

#创建一些用户和组,并迁移到ldap

[root@ldap migrationtools]# mkdir -p /home/guests

[root@ldap migrationtools]# useradd -d /home/guests/test12 test12

[root@ldap migrationtools]# echo 123456 | passwd --stdin test12

#过滤这些用户和组以及/etc/shadow不同文件密码

[root@ldap guests]# getent passwd | tail -n 5

[root@ldap guests]# getent shadow | tail -n 5 > /root/shadow

[root@ldap guests]# getent group | tail -n 5 > /root/groups

#使用migrationtools为这些用户创建ldif文件

切换到migrationtools目录下编辑vim migrate_passwd.pl文件(修改188行,把/etc/shadow换成/root/shadow)

[root@ldap guests]# cd /usr/share/migrationtools

[root@ldap migrationtools]# vim migrate_passwd.pl

 

然后在当前路径下执行下面的命令

[root@ldap migrationtools]# ./migrate_passwd.pl /root/users > users.ldif

[root@ldap migrationtools]# ./migrate_group.pl /root/groups > groups.ldif

 

将这些用户和组ldif文件上传到ldap数据库中

[root@ldap migrationtools]# ldapadd -x -W -D "cn=auto,dc=songchen,dc=com" -f users.ldif

[root@ldap migrationtools]# ldapadd -x -W -D "cn=auto,dc=songchen,dc=com" -f groups.ldif

现在搜索LDAP DIT的所有记录(如果能搜索到就说明安装成功了,至此ldap服务器安装完成(按这个安装只支持uid用户的登录))

[root@ldap migrationtools]# ldapsearch -x -b "dc=songchen,dc=com" -H ldap://192.168.200.150

 

三、电脑端安装客户端

ldapadmin官网下载地址: http://www.ldapadmin.org/download/ldapadmin.html

电脑端下载完成后,点击进入填写ldap服务器地址

 

在ou=people下去创建用户组或用户(右击--new--Group),输入名字就可以点击保存,保存之后如右图所示(或者创建用户)

登录到ldap服务器去查看信息,就可以看到增加的一条信息如图

[root@ldap ~]# ldapsearch -x -b "dc=songchen,dc=com" -H ldap://192.168.200.150

 

这里的信息就是通过ldapadmin客户端添加进来的,到此全部部署完成

 

注意:

如果要开启ssl要修改配置文件,要增加ldaps:///

vi  /etc/sysconfig/slapd

SLAPD_URLS="ldapi:///  ldap:///  ldaps:///"

再重启服务:service slapd restart

四、配置gitlab使用ldap认证

1、登录gitlab服务器,修改gitlab配置文件

[root@gitlab ~]# cd /etc/gitlab

[root@gitlab gitlab]# vim gitlab.rb

 

gitlab配置文件说明:

1.gitlab_rails['ldap_enabled'] = true           #开启ldap认证

2.host  是搭建的ldap服务器的ip,根据实际情况修改;(填写ip地址或域名

3.uid:       可以写cn,也可以写为uid,都能识别(具体为什么没深入研究);

4.bind_dn  openldap域的管理员账号,根据实际情况修改(如 cn=admindc=yhzdc=com

5.password openldap的管理员,根据实际情况修改(如123456

6.active_directory 似乎是针对连接是否是ad域控的标示,因为这部分是域服务器的配置,故为true

7.allow_username_or_email_login 用户登录是否用户名和邮箱都可以,方便用户故配置true;(看个人需求)

8.base   用户列表所在的目录,因为新增的用户都在People下(试验了用户放在Usergitlab检测不到用户,故新建了一个目录People,并将新建的用户移入了该目录下),就这么配置,根据实际情况修改;

注意:下边几行还有个EOS,也需要将注释去掉                  

2、重新加载配置文件并重启服务

重新加载配置

[root@gitlab gitlab]# gitlab-ctl reconfigure

重启gitlab

[root@gitlab gitlab]# gitlab-ctl restart

检查是否能正常获取ldap用户

[root@gitlab gitlab]# gitlab-rake gitlab:ldap:check                                     #正常连接的情况下执行之后能看到用户的列表

3、访问gitlab web界面,用ldap账户登录验证

再次访问web界面,没有问题就会出现LDAP登录选项了,输入LDAP用户密码即可登录

五、配置jenkins使用ldap认证

提示:ldap配置后原管理账户会失效,所以一旦配置错误就无法登录,甚至无法正常访问系统。

         建议对Jenkins配置文件先进行备份,再修改设置。

         Centos7使用rpm安装jenkins的默认目录为:/var/lib/jenkins/

 

1、备份jenkins的配置文件

备份jenkins配置文件:config.xml

[root@jenkins ~]# cp /var/lib/jenkins/config.xml{,.$(date +%F).bak}

2、配置jenkins

登录jenkins-à点击设置à全局安全设置à安全域选择 LDAP

 

配置如下:

授权策略还继续使用Role-Based Strategy策略即可。

保存设置,退出账户测试登录即可。此时jenkins的管理账户已失效。

 

3、测试登录

ldap的yhz账户可以正常登陆

添加项目策略

让ldap的123账户只能看到a-1项目

4、配置ldap失败导致jenkins账户无法登录的解决方法

/var/lib/jenkins/config.xml配置文件中找到这段关于ldap认证的信息

上面的配置不当导致了无法通过ldap认证,而且导致jenkins也无法正常登陆了,可以把上面这段代码修改为如下样子:

   <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">

     <disableSignup>false</disableSignup>

     <enableCaptcha>false</enableCaptcha>

   </securityRealm>

 

重启jenkins服务,即可用jenkins原管理账户登录。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐