前言



前段时间遇到个jenkins登录问题,正好填一下以前写openldap或jenkins留下的坑,介绍一下openldap集成到Jenkins的操作



Jenkins ver. 2.176.2
openldap 2.4.44
Centos 7.2




Openldap相关配置



下方链接为Openldap搭建操作



Openldap重置密码



由于使用个人环境忘记管理员密码,现在演示重置ldap密码操作



<1>生成新密码

slappasswd -s 你要设置的密码

将生成的密码保存,之后会用到

slappasswd -s 1ntoeos

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限



<2>修改olcDatabase={2}hdb.ldif文件
(注意:红框位置)

vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

在此文件的最后一行添加olcRootPW+第一步生成的密码,“:” 和密码之间有空格

由于是重置密码,替换密码为新密码即可

jenkin 接入ldap后无权限 ldap jenkins_配置文件_02



<3>验证配置

slaptest -u

jenkin 接入ldap后无权限 ldap jenkins_配置文件_03

由于收到修改了2个文件,checksum忽略即可,testing succeeded即为成功



<4>重新启动OpenLDAP

systemctl enable slapd;systemctl restart slapd


<5>使用新密码登录

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_04



Openldap创建用户和组



<1>在group这个ou下面创建一个jenkins的ou

jenkin 接入ldap后无权限 ldap jenkins_配置文件_05



jenkin 接入ldap后无权限 ldap jenkins_xml_06



jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_07



jenkin 接入ldap后无权限 ldap jenkins_Jenkins_08



jenkin 接入ldap后无权限 ldap jenkins_配置文件_09



jenkin 接入ldap后无权限 ldap jenkins_Jenkins_10



<2>在jenkins这个ou里面创建3个组
(几个组都可,名称需要明了。目的是为了之后在Jenkins上配置不同权限)
jenkins-admins
jenkins-editors
jenkins-users

jenkin 接入ldap后无权限 ldap jenkins_xml_11



jenkin 接入ldap后无权限 ldap jenkins_Jenkins_12



填写组名,如果有用户可以批量勾选用户

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_13



jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_14



jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_15



jenkin 接入ldap后无权限 ldap jenkins_xml_16



<3>在ou=people下面创建几个账户,配置好邮箱和密码
(如果ldap对接了oa或邮箱,已有用户,可跳过这一步)

如果你已经存在用户,只需要创建组,并为组添加用户即可。直接查看第6步骤。

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_17



jenkin 接入ldap后无权限 ldap jenkins_xml_18



GID号可以在创建用户的时候,选择用户的组

jenkin 接入ldap后无权限 ldap jenkins_Jenkins_19



jenkin 接入ldap后无权限 ldap jenkins_Jenkins_20



jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_21



<5>给用户添加新属性
(如果ldap对接了oa或邮箱,已有用户,可跳过这一步)

添加邮箱

jenkin 接入ldap后无权限 ldap jenkins_Jenkins_22



jenkin 接入ldap后无权限 ldap jenkins_配置文件_23



jenkin 接入ldap后无权限 ldap jenkins_配置文件_24



<6>一个用户设置多个组 或者 为组添加用户

选择一个组,添加新属性 memberuid

jenkin 接入ldap后无权限 ldap jenkins_xml_25



填一个用户

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_26



jenkin 接入ldap后无权限 ldap jenkins_xml_27



修改用户

jenkin 接入ldap后无权限 ldap jenkins_Jenkins_28



可根据需求选择用户添加到右侧,并保存

jenkin 接入ldap后无权限 ldap jenkins_Jenkins_29



jenkin 接入ldap后无权限 ldap jenkins_Jenkins_30



jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_31



Jenkins相关配置



Jenkins账号密码重置:



Jenkins LDAP配置



根据前面的链接,可以我们可以重置admin的密码
而下面演示的是由于ldap配置出现问题,导致ldap账户无法登录的处理方法
(如果仅需要jenkins配置ldap操作,仅查看4~6步内容即可)



<1>找到你的jenkins的主目录

由于不同的环境或安装方式,jenkins存放数据的主目录的位置也不相同。如果要修改配置文件,先要找到数据目录


Linux环境中,Jenkins主目录默认在/root/.jenkins ;
如果你设置了JENKINS_HOME环境变量,主目录即为环境变量所指位置

cat /etc/profile

export JENKINS_HOME=/data/jenkins_home
export PATH=$PATH:$JENKINS_HOME


<2>备份配置文件

cd /data/jekins_home
cp config.xml config.xml_old



<3>重启jenkins

重启jenkins后会生成新的config.xml配置文件

(这时会丢失以前的所有配置的权限和列表,视图)



<4>配置jenkins权限(无需登录)

jenkin 接入ldap后无权限 ldap jenkins_Jenkins_32



jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_33



jenkin 接入ldap后无权限 ldap jenkins_xml_34



<5>配置ldap
输入ldap的ip和端口(123.123.123.123仅为演示,ldap://123.123.123.123:389也可),有域名解析的填写域名即可

root DN:              使用一个adminDN账号用于查询用户
User search base:     用户从哪个范围查找
User search filter:   过滤用户的表达式(通常是以cn或uid筛选)     cn={0}   uid={0}
Group search base:    组从哪个范围查找  
Group search filter:  过滤组的表达式       (&  (cn={0})(objectclass=groupOfUniqueNames))
Manager DN:           管理者的DN
Manager Password:      管理者对应的密码

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_35

or 仅根据uid筛选用户

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_36



<6>配置策略
根据需求配置权限(使用的是第一个ldap配置)

jenkin 接入ldap后无权限 ldap jenkins_Jenkins_37



<7>填入用户

可填入组或单个用户

jenkin 接入ldap后无权限 ldap jenkins_xml_38


下面这种配置权限也不可用,因为用户不存在

jenkin 接入ldap后无权限 ldap jenkins_jenkin 接入ldap后无权限_39



当以cn筛选时,cn名称即为 可填入权限配置的和jenkins可登录的用户名

jenkin 接入ldap后无权限 ldap jenkins_配置文件_40


当以uid筛选时,该cn的user name即为用户名

jenkin 接入ldap后无权限 ldap jenkins_Jenkins_41



策略调整结果

jenkin 接入ldap后无权限 ldap jenkins_xml_42

将用户在ldap里面添加到jenkins-admins这个组,该用户将拥有jenkins-admins这个组的所有权限
也可以直接添加单个用户的权限。为了避免组权限配置异常导致无法登录,可配置添加一个用户为管理员权限




Jenkins视图及配置恢复



前面我们重新配置了ldap,并且可以使用ldap的账户进行登录了。但是由于是新生成的配置文件,所以 以前配置的视图看不到了,接着需要恢复视图及其他配置。

jenkin 接入ldap后无权限 ldap jenkins_xml_43



<1>去jenkins数据目录,调整config.xml

cd /data/jenkins_home/
cat config.xml_old >> config.xml

jenkin 接入ldap后无权限 ldap jenkins_配置文件_44

该截图及其前面的内容即为重新配置ldap后, xml文件新生成的内容
接着需要把旧的配置文件中 ldap配置下方的内容,复制到新的config.xml文件中 ldap配置的下面。



<2>重启jenkins,并再次登录即可

jenkin 接入ldap后无权限 ldap jenkins_xml_45



说明:

如果你的jenkins数据目录平时有备份,直接使用之前权限还正常时的备份的config.xml文件即可,无需前面麻烦的操作,由此可见备份的重要性。