Jenkins在Devops体系中算是重要的一个环节了,通过它帮助运维人员实现产品快速打包发布等功能。而面对它又存在着一个问题就是帐号的权限,认证问题。通过它整合ldap认证可以实现按ldap分组用户登陆到系统中;但是对于项目的权限细分又需要通过插件来划分。
上一次的jenkins与ldap认证中并没有完成分组认证的功能,而本文则记录如何实现分组过滤登陆认证。配置Jenkins与ldap的连接,需要注意几个地方。
- 重点,安装完Jenkins后备份一下config.xml配置文件,防止出错恢复。
- 安装相应的插件方可启动ldap认证功能。
- 配置ldap前先把jenkins的管理用户在ldap平台上添加,不然无法管理员登陆系统。
配置过程
安装Jenkins可以选择安装相应的插件,或者进入后台后再安装。
打开管理---配置全局安全---选择ldap,配置如下图。
用户搜索过滤器:
(&(uid={0})(memberof=cn=jenkins,ou=group,dc=sotemalltest,dc=com))
通过它实现了指定的ldap组下的用户才可以登陆到jenkins下。
特别说明
因为我在/etc/hosts文件中添加了sotemalltest.com
对应的Ip解析,所以这里才可以访问到。
问题
为什么openldap日志里会有以下提示信息?
5d6cd00a conn=1963 op=74 SRCH attr=cn
5d6cd00a <= mdb_equality_candidates: (member) not indexed
5d6cd00a <= mdb_equality_candidates: (uniqueMember) not indexed
5d6cd00a <= mdb_equality_candidates: (memberUid) not indexed
5d6cd00a conn=1963 op=74 SEARCH RESULT tag=101 err=0 nentries=1 text=
从上面的信息中可以看到登陆成功后却还有提示字段没有索引到的提示。
查看当前Ldap服务中哪些字段有索引的。
[root@ldap ~]# docker exec openldap slapcat -n 0 | grep olcDbIndex
olcDbIndex: uid eq
olcDbIndex: mail eq
olcDbIndex: memberOf eq
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
olcDbIndex: objectClass eq
说明
- 上图中6位置,
uid
这里其它也可以是cn
或者displayname
.
上面的日志信息说明,匹配到一个attr=cn (个人理解,就是那个uid),而后面还有提示几个字段,但是这几个字段默认是会搜索的。所以我们自己指定一个,因为知道通过这个字段(&(uid={0}))
就可以搜索出来了,没必要再去匹配其它的搜索条件。这里指的是上图中第4个红色标记处。