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相關的測試賬戶和組
- group這個ou下面創建一個jenkins的ou。
- 在jenkins這個ou里面創建3個組,名為jenkins-admins,jenkins-editors,jenkins-users。
- 在ou=people下面創建4個賬戶,名為admin,test01,test02,test03,配置好郵箱和密碼。
- 在三個組上面添加對應的用戶, 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種類授權策略:
- 任何用戶可以做任何事(沒有任何限制)
- 安全矩陣
- 登錄用戶可以做任何事
- 遺留模式
- 項目矩陣授權策略
我們選擇項目矩陣授權策略,具體操作步驟: 選擇【jenkins】 -> 【系統管理】-> 【全局安全設置 】,選擇項目矩陣授權策略。
然后在全局的安全設置頁面給我們的三個組添加進去,並配置下各個組的權限。
配置如下圖的權限設置
這是一個全局的配置,特定組只能按照最小的權限授權,額外的權限可以在具體的項目權限矩陣里面在添加。
如果用戶在ldap里面添加到jenkins-admins這個組,就是擁有所有的權限了,這個組一般只能運維人員和部門老大加入。
如果用戶在ldap里面添加到了jenkins-editors這個組,就擁有上圖勾選的權限,這個組的成員可以完成jenkins配置項的修改。這個組一般不對任何人開放,可能給前段或者后端的開發老大開下。
如果用戶在ldap里面添加到了jenkins-users這個組,就擁有了read權限,這個read是jenkins里面的很基礎的權限,沒有這個權限就登不進jenkins的,這個組一般是開發人員加入。
上面只是一個全局層面的一個權限設置, 對於一個開發人員來說, 他能發布的項目只能是他負責的項目的,這個時候還是需要在具體的jenkins項目配置里面開啟項目安全這個選項,並添加特定的具體的開發到這個列表里面,並授予權限。
這樣就可以詳細給用戶授權了。