1. 程式人生 > 實用技巧 >Jenkins通過ldap分組認證登陸

Jenkins通過ldap分組認證登陸

Jenkins在Devops體系中算是重要的一個環節了,通過它幫助運維人員實現產品快速打包釋出等功能。而面對它又存在著一個問題就是帳號的許可權,認證問題。通過它整合ldap認證可以實現按ldap分組使用者登陸到系統中;但是對於專案的許可權細分又需要通過外掛來劃分。

本文記錄如何實現分組過濾登陸認證。配置Jenkins與ldap的連線,需要注意幾個地方。

  • 重點,安裝完Jenkins後備份一下config.xml配置檔案,防止出錯恢復。
  • 安裝相應的外掛方可啟動ldap認證功能。
  • 配置ldap前先把jenkins的管理使用者在ldap平臺上新增,不然無法管理員登陸系統。

開啟管理---配置全域性安全---選擇ldap,配置如下圖:

使用者搜尋過濾器:

(&(uid={0})(memberof=cn=jenkins,ou=group,dc=aihelp,dc=net))

通過它實現了指定的ldap組下的使用者才可以登陸到jenkins下。

特別說明
因為我在/etc/hosts檔案中添加了aihelp.net對應的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

說明

  • 上圖中7位置,uid這裡其它也可以是cn或者displayname.

上面的日誌資訊說明,匹配到一個attr=cn,而後面還有提示幾個欄位,但是這幾個欄位預設是會搜尋的。所以我們自己指定一個,因為知道通過這個欄位(&(uid={0}))就可以搜尋出來了,沒必要再去匹配其它的搜尋條件。這裡指的是上圖中第5個紅色標記處。