ldap配置系列二:jenkins集成ldap


ldap配置系列二:jenkins集成ldap

jenkins簡介

jenkins是一個獨立的、開放源碼的自動化服務器,它可以用於自動化與構建、測試、交付或部署軟件相關的各種任務。

jenkins官方文檔: https://jenkins.io/doc/

jenkins安裝

jenkins下載地址: https://jenkins.io/download/

# jdk1.8下載
[root@VM_0_15_centos local]# wget http://download.linuxpanda.tech/java/jdk-8u172-linux-x64.tar.gz
[root@VM_0_15_centos local]# tar xf jdk-8u172-linux-x64.tar.gz 
[root@VM_0_15_centos local]# cd jdk1.8.0_172/

# jenkins安裝
[root@VM_0_15_centos local]# yum install https://pkg.jenkins.io/redhat/jenkins-2.141-1.1.noarch.rpm

# 配置修改
[root@VM_0_15_centos ~]# vim /etc/sysconfig/jenkins
JENKINS_JAVA_CMD="/usr/local/jdk1.8.0_172/bin/java"
# 防火牆放行
[root@VM_0_15_centos ~]# firewall-cmd --permanent --add-port=8080/tcp 
[root@VM_0_15_centos ~]# firewall-cmd --reload
# 重啟jenkins
[root@VM_0_15_centos ~]# systemctl restart jenkins
[root@VM_0_15_centos ~]# systemctl status jenkins
[root@VM_0_15_centos ~]# netstat -tunlp  |grep 8080

# 訪問對應的外網 
# jenkins.linuxpanda.tech:8080 安裝必要的插件。

 注意: 我在我的centos7服務器上面直接yum install jenkins是有問題,訪問不了,yum install 特定的rpm包就可以了。 暫時不知道哪里的情況。

安裝完畢后的主頁為 :

 ldap准備

如果沒有ldap服務器,可以參考 https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_52_ldap.html , 這里我使用ldapadmin.exe 這個小軟件去管理ldap。

添加jenkins相關的測試賬戶和組

  1. group這個ou下面創建一個jenkins的ou。
  2. 在jenkins這個ou里面創建3個組,名為jenkins-admins,jenkins-editors,jenkins-users。
  3. 在ou=people下面創建4個賬戶,名為admin,test01,test02,test03,配置好郵箱和密碼。
  4. 在三個組上面添加對應的用戶, jenkins-admins組添加admin,test01用戶, jenkins-editors組添加test02用戶,jenkins-users組添加test03用戶。

最終的組織圖如下: 

 

jenkins集成ldap的配置

選擇【jenkins】 -> 【系統管理】-> 【全局安全設置】

配置ldap為如下

 注意: 我上面的密碼admin測試使用的密碼為oracle。

關於ldap查詢使用

# 查詢所有用戶
[root@VM_0_15_centos ~]# ldapsearch  -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=people,dc=linuxpanda,dc=tech" 
# 查詢特定用戶
[root@VM_0_15_centos ~]# ldapsearch  -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=people,dc=linuxpanda,dc=tech" "uid=test01"
dn: uid=test01,ou=people,dc=linuxpanda,dc=tech
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
gidNumber: 0
givenName: test01
sn: test01
displayName:: 5rWL6K+VMQ== uid: test01
homeDirectory: /home/test01
loginShell: /bin/bash
mail: test01@linuxpanda.tech
cn:: 5rWL6K+VMQ==
uidNumber: 55545
userPassword:: e1NIQX1ReE5rdGtVUHhIek52Mm9pQmQvYkc2NjNsQkk9

# 組查詢
[root@VM_0_15_centos ~]# ldapsearch  -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=jenkins,ou=group,dc=linuxpanda,dc=tech"  

# 獲取對應的組
[root@VM_0_15_centos ~]# ldapsearch  -LLL -w oracle -x -H ldap://ldap.linuxpanda.tech:389 -D"cn=admin,dc=linuxpanda,dc=tech" -b "ou=jenkins,ou=group,dc=linuxpanda,dc=tech"  "(& (cn=jenkins-admins) (| (objectclass=groupOfNames) (objectclass=groupOfUniqueNames) (objectclass=posixGroup)))"
dn: cn=jenkins-admins,ou=jenkins,ou=group,dc=linuxpanda,dc=tech
objectClass: posixGroup
objectClass: top
cn: jenkins-admins
memberUid: test01
memberUid: admin
gidNumber: 40109

ldap配置完畢了, 還是在說說ldap配合jenkins里面的用戶權限和權限分配的事情吧, 不然只是ldap集成到jenkins也沒有啥用啊,哈哈。

jenkins和ldap如何解決用戶權限和授權問題

這個采用全局項目安全矩陣+項目安全矩陣+ldap認證組合來實現復雜的權限管理。

jenkins里面安裝完畢默認推薦的插件后,提供有5種類授權策略:

  1. 任何用戶可以做任何事(沒有任何限制)
  2. 安全矩陣
  3. 登錄用戶可以做任何事
  4. 遺留模式
  5. 項目矩陣授權策略

我們選擇項目矩陣授權策略,具體操作步驟: 選擇【jenkins】 -> 【系統管理】-> 【全局安全設置 】,選擇項目矩陣授權策略。

然后在全局的安全設置頁面給我們的三個組添加進去,並配置下各個組的權限。

配置如下圖的權限設置

這是一個全局的配置,特定組只能按照最小的權限授權,額外的權限可以在具體的項目權限矩陣里面在添加。 

如果用戶在ldap里面添加到jenkins-admins這個組,就是擁有所有的權限了,這個組一般只能運維人員和部門老大加入。

如果用戶在ldap里面添加到了jenkins-editors這個組,就擁有上圖勾選的權限,這個組的成員可以完成jenkins配置項的修改。這個組一般不對任何人開放,可能給前段或者后端的開發老大開下。

如果用戶在ldap里面添加到了jenkins-users這個組,就擁有了read權限,這個read是jenkins里面的很基礎的權限,沒有這個權限就登不進jenkins的,這個組一般是開發人員加入。 

 

上面只是一個全局層面的一個權限設置, 對於一個開發人員來說, 他能發布的項目只能是他負責的項目的,這個時候還是需要在具體的jenkins項目配置里面開啟項目安全這個選項,並添加特定的具體的開發到這個列表里面,並授予權限。

 

 

這樣就可以詳細給用戶授權了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM