摘要
1、已安装docker引擎
2、系统centos7
3、可连接外网
服务 | 版本号 |
---|---|
jenkins | 2.235.4 |
openldap | 1.5.0 |
phpldapadmin | 1.5.0 |
(一)目录树概念
-
目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
-
条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
-
对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
-
属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。
(二)DC、UID、OU、CN、SN、DN、RDN
一、安装ldap
1、设置镜像加速源
已经设置完成的,可以略过此步骤
登录阿里云【容器镜像服务】
点击【镜像加速器】,每个人的加速器都不一样,这是阿里云给我们免费提供的
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://rfzmfq61.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2、安装ldap服务
docker run -dit \
-p 389:389 \
-p 636:636 \
-v /opt/ldap/ldap:/var/lib/ldap \
-v /opt/ldap/slapd.d:/etc/ldap/slapd.d \
--name ldap1.5 \
--env LDAP_TLS=false \
--env LDAP_ORGANISATION="pibigstar" \
--env LDAP_DOMAIN="pibigstar.com" \
--env LDAP_ADMIN_PASSWORD="123456" \
--restart always \
--detach osixia/openldap:1.5.0
配置LDAP组织者:LDAP_ORGANISATION
配置LDAP域:LDAP_DOMAIN
配置LDAP密码:LDAP_ADMIN_PASSWORD
默认登录用户名:admin
3、安装web管理工具
docker run -dit \
-p 8000:80 \
--link ldap1.5 \
--name ldap_mgr \
--env PHPLDAPADMIN_HTTPS=false \
--env PHPLDAPADMIN_LDAP_HOSTS=ldap1.5 \
--restart always \
--detach osixia/phpldapadmin
浏览器访问:http://192.168.84.156:8000/
输入用户名和密码
login DN :cn=admin,dc=pibigstar,dc=com
Password: 123456
二、安装jenkins服务
docker run -di --name jenkins2.235 \
-p 8080:8080 \
-p 50000:50000 \
-u root \
-v /opt/jenkins/data:/var/jenkins_home \
--restart always \
jenkins/jenkins:2.235.4
注:50000
端口号是为了以后做映射代理用的,方便以后在k8s集群添加agent
工作节点使用
打开浏览器输入ip:8080
查看密码可以使用很多种方法,我这里是直接看容器启动日志了,或者直接查看界面提示的文件内容
这里可以直接选择【使用admin用户登录】,因为下面设置ldap集成,就不需要默认的系统用户了
三、配置ldap用户数据
1、创建两个组织
部门和人员
2、创建一个gid组
选择【ou=department】—【Create a child entry】
最后层级不能错,一定得先创建GID之后才能创建用户
3、创建用户
选择【ou=personnel】—【Create a child entry】
点击【Create Object】
回到人员详情,接着修改信息
最后添加这个人员的邮箱属性
最后点击底部的【Update Object】
四、jenkins集成ldap
1、安装组件
LDAP Plugin
Role-based Authorization Strategy
2、配置ldap服务
选择【 Manage Jenkins】—>【Configure Global Security】
安全域选择【LDAP】,授权策略选择【任何用户可以做任何事情】,这一步是为了防止ldap配置错误,登录不了服务或者登录无权限,当然了可以修改服务配置也可以做到重置成【jenkins专用用户数据库】初始化配置
root DN:这里的root DN只是指搜索的根,并非LDAP服务器的root dn。由于LDAP数据库的数据组织结构类似一颗大树,而搜索是递归执行的,理论上,我们如果从子节点(而不是根节点)开始搜索,因为缩小了搜索范围那么就可以获得更高的性能。这里的root DN指的就是这个子节点的DN,当然也可以不填,表示从LDAP的根节点开始搜索
User search base:这个配置也是为了缩小LDAP搜索的范围,例如Jenkins系统只允许ou为Admin下的用户才能登陆,那么你这里可以填写ou=Admin,这是一个相对的值,相对于上边的root DN,例如你上边的root DN填写的是dc=domain,dc=com,那么user search base这里填写了ou=Admin,那么登陆用户去LDAP搜索时就只会搜索ou=Admin,dc=domain,dc=com下的用户了
User search filter:这个配置定义登陆的“用户名”对应LDAP中的哪个字段,如果你想用LDAP中的uid作为用户名来登录,那么这里可以配置为uid={0}({0}会自动的替换为用户提交的用户名),如果你想用LDAP中的mail作为用户名来登录,那么这里就需要改为mail={0}。在测试的时候如果提示你user xxx does not exist,而你确定密码输入正确时,就要考虑下输入的用户名是不是这里定义的这个值了
Group search base:参考上边User search base解释
Group search filter:这个配置允许你将过滤器限制为所需的objectClass来提高搜索性能,也就是说可以只搜索用户属性中包含某个objectClass的用户,这就要求你对你的LDAP足够了解,一般我们也不配置
Group membership:没配置,没有详细研究
Manager DN:这个配置在你的LDAP服务器不允许匿名访问的情况下用来做认证(详细的认证过程参考文章ldap落地实战:subversion集成ldap认证中关于LDAP服务器认证过程的讲解),通常DN为cn=admin,dc=domain,dc=com这样
Manager Password:上边配置dn的密码
Display Name LDAP attribute:配置用户的显示名称,一般为显示名称就配置为uid,如果你想显示其他字段属性也可以这里配置,例如mail
Email Address LDAP attribute:配置用户Email对应的字段属性,一般没有修改过的话都是mail,除非你用其他的字段属性来标识用户邮箱,这里可以配置
点击【Test LDAP settings】
属于之前在ldap配置的人员用户名和密码
3、配置管理员
如果公司内存在开发、测试、项目经理,之间的权限都不一样,即可在这里配置权限角色
回到【Manage and Assign Roles】—【Assign Roles】
如果在这里输入一个名字,输入ldap服务中的人员名字,分配角色(admin、developer、test),点击保存后,再查看,会变成中文名字(ldap创建人员是在ou=personnel —>Generic: User Account)
再重新查看人员角色分配,名字已经变成中文
使用liuxueqian,账号登录jenkins,将获得对应权限
完成,整理不易,点个赞吧
ldap备份和还原
备份
ldapsearch -x -b "dc=163,dc=com" -D "uid=authz,ou=Public,dc=163,dc=com" -w "AzdfD863M4" > ldap.20210626.ldif
参数说明:
-x:进行简单的验证
-D:用来绑定服务器的DN
-w:绑定DN的密码
-b:要查询的根节点
authz账号要有"dc=163,dc=com"的查询权限
还原
ldapadd -x -c -D "cn=admin,dc=163,dc=com" -w "smile" -f ldap.20210626.ldif
参数说明:
-c:出错后继续执行程序不终止,默认出错即停止
-f:从文件内读取信息还原,而不是标准输入
还原的DN最好为管理员账号,至少也要有要LDAP的写入权限