jenkins許可權外掛配置
轉載於:https://www.cnblogs.com/Dy1an/p/11202544.html
【05】Jenkins:使用者許可權管理
寫在前面的話
在一個企業研發部門內部,可能存在多個運維人員,而這些運維人員往往負責不同的專案,但是有可能他們用的又是同一個 Jenkins 的不同使用者。那麼我們就希望實現一個需求,能夠不同的使用者登入 Jenkins 以後看到不同的專案。Jenkins 提供了簡單的許可權管理,我們可以在系統管理 --> 全域性安全配置看到:
但是這裡的許可權配置太過簡略,顯然無法滿足我們複製的需求,所以在這個時候引入了 Jenkins 的一個外掛:Role-based Authorization Strategy
外掛:Role-based Authorization Strategy
開啟外掛中心,我們可以搜尋:
重啟 Jenkins 以後,再度開啟:系統管理 --> 全域性安全配置會發現多了我們剛剛外掛的選項
我們選擇該配置,同時在系統管理中出現了新的選項:
準備工作:
1. 將我們的專案複製成如下用於測試:
2. 新建 3 個測試使用者:test / develop / product
開啟:系統管理 --> 管理使用者
終端使用者格式:
配置許可權:
開啟:系統管理 -->Manage and Assign Roles
我們主要使用上面兩種。一個使用者想要進行操作必須要有兩種角色,一種是全域性,一種是 Project:
1. 建立角色:Manage Roles
2. 分配角色:Assign Roles
說明:我們這三個使用者其實代表著三個不同的屬性,為了區分我給他定義了三種不同角色。這樣以後就可以給每個角色授權不一樣的許可權。
當然,我們這裡就給了一個全部的只讀許可權,使用者可以登入,並且修改自己的東西。
3. 建立專案角色:Manage Roles
4. 給使用者分配專案許可權:Assign Roles
說明:我們給使用者分配不同的專案和許可權,便於測試對比。
5. 檢視許可權效果:
test使用者登入後項目:
test使用者專案許可權:
test使用者許可權說明:test 使用者登入後能看到 TEST 開頭的專案,包括資料夾,但是對於專案,test 使用者都只具有執行許可權,而沒有修改和配置的許可權。
develop使用者登入後項目:
develop使用者專案許可權:
develop使用者許可權說明:可以看到,因為我們多配置了 Config 許可權的原因,develop 相比於 test 使用者對於分配給自己許可權的專案多了修改配置許可權。
product使用者登入後項目:
product使用者對於TEST專案許可權:
product使用者對於PRODUCT專案許可權:
product使用者授權說明:我們可以看到,PROCUDT 專案由於授權了 config 許可權,所以使用者能夠修改,TEST 專案沒用 config 許可權,雖然同樣是授權給了 product 使用者,但是也是隻有執行許可權而已。
至此,基本的許可權管理大致完成!
特別注意
在我們設定使用者許可權的時候,預設已經包含了管理員角色:
如果我們一不小心把這個勾去掉了,然後就炸了!
最終的解決辦法是:
1. 停止 Jenkins。
2. 備份/data/jenkins/jenkins-data/config.xml 配置檔案。
3. 修改配置:
<useSecurity>true</useSecurity> # 改為 <useSecurity>false</useSecurity>
4. 刪除許可權配置:建議檔案拿來了使用 nodepad++ 類似的工具修改
刪除:<authorizationStrategy> 標籤及其內部內容。
刪除:<securityRealm> 標籤及其內部內容。
5. 啟動 jenkins,此時不需要使用者名稱密碼,檢視設定:
預設沒有啟動安全,我們需要重新配置我們之前的東西!
小結
Role 外掛相比於系統的雖然完善了不少,但是仍然在很多時候顯得不那麼只能,而且前端似乎並不友好。但沒辦法,這東西沒得挑。