Jenkins(三): Jenkins安全


 

 


 

Jenkins安全之安全矩陣和項目矩陣

 

Jenkins默認安全權限:登錄用戶可以做任何事情

如圖:Dashboard"系統管理"------>"全局安全配置"

 

 

 

即默認是登錄用戶(所有用戶)可以做任何事,即默認擁有所有權限。

若不修改默認配置,就無法做到:控制用戶對某些項目授予只讀權限,有風險。  

密碼復雜度一定要高。

 

Jenkins的安全矩陣設置

作用:可針對用戶配置只讀權限
缺點:只針對用戶,無法做到:控制某個項目只讀

設置安全矩陣:"系統管理"------>"全局安全配置",如圖,修改為安全矩陣,然后點擊"Add user or group",對Admin和gk用戶做不同的授權策略,Admin擁有所有權限,gk用戶只有read權限,和任務的read權限。設置后點擊保存。

 

 

 此時查看用戶界面

Admin用戶的界面:

 

 

 

gk普通用戶的界面

 

 

 同時,gk用戶只有只讀權限,不能構建。

但是該安全矩陣,點擊任務read的話,默認是所有項目都可read。這是一個缺點,由此引出項目矩陣授權。

 

 

 

Jenkins的項目矩陣授權策略

作用:安全權限可細化到每個項目

關於項目矩陣授權策略的描述:

這個授權模型擴展自"安全矩陣",允許把下面的ACL(訪問控制列表)矩陣附加到每個項目定義中(在Job配置頁面).
這允許你宣布類似這樣的聲明"約翰能夠訪問A,B和C,但是不能訪問D." 查看"安全矩陣"的幫助文檔來了解安全矩陣.

ACL配置是追加的,就是說下面的訪問控制會追加到所有的項目配置中。

第一步:在"系統管理"------>"全局安全配置"中,選擇項目矩陣授權策略。

添加Admin用戶和gk用戶,給與Admin所有權限,給與gk用戶Read權限。然后保存。

 

 

 此時的Admin用戶界面依舊如上,但是gk用戶的界面此刻已經看不到任何項目。

 

 

 

第二步,使用Admin用戶在項目中單獨配置;點擊項目,進入后選擇"配置",然后在"General欄"選擇"啟用項目安全":

添加gk用戶,並授予其所有權限。然后點擊保存,那么gk用戶就擁有該項目的所有權限,如圖:

 

 

 然后切換用戶,使用gk用戶登錄后的界面:有個gk_testShell項目,

 

 

 點擊該項目進入后,擁有該項目的所有權限,如圖

 

 

 

由上可知缺點:在管理方面,不好管理。

上面只是配置了一個項目,若有很多項目,那么就得每個項目去配置,太麻煩。不能針對某一類項目統一配置。即每搞一個項目就要配置一個,不能批量管理。

 

優化:Jenkins安全之基於角色的權限管理

 


 

Jenkins安全之基於角色的權限管理

 

基於角色的管理
  ①權限控制可以細化到項目
  ②而且能批量設置項目權限

 

管理角色前操作

一、基於角色的權限管理需要安裝插件:Role-based

安裝:Jenkins網頁的"系統管理"------》"插件管理"-----》"可選插件"

 在下面尋找"Role-based Authorization Strategy"插件,如圖

 然后點擊安裝。之后安裝界面如圖,然后點擊返回首頁

 划"√"后,頁面會跳轉到重啟界面

 過一會后,會進入重新登錄界面,然后輸入Admin用戶和密碼,進入。

 二、啟動Jenkins的角色管理

"系統管理"----》"全局安全配置"

選擇該策略后,默認權限:admin擁有所有權限,其它用戶無權限。

"系統管理"------>安全"Manage  and  Assign Roles",如圖

在上圖授權中,Admin用戶默認是擁有所有權限的。

而在下圖中,開啟該插件功能后,在未進行任何配置的情況下,使用gk用戶登錄:如圖此時是沒有任何權限的。Admin還是默認擁有所有權限。

 

 

然后開始進行角色配置

關於Manage RolesManage Roles的簡單描述:

       Manage Roles:管理角色----》類似群組設置,在里面創建管理的用戶群,和項目群,並對其設置權限。

  Manage Roles:分配角色----》類似用戶、項目設置,即在里面添加用戶/項目,然后對用戶/項目選擇已創建的群組。都應用保存后,那么該用戶,就擁有個群組中的用戶群組權限,和項目群組中的對應的項目權限。

 

①基於角色的權限管理 "Manage Roles"(群組設置)

Global roles添加一個read組,即下圖中的Global roles 全局角色,可以理解為群組,即admin群組,read群組只給與read只讀權限。

項目角色添加:role:test,Pattern:gk.*

即設置Role角色可以包含的項目。

關於pattern:該模式用於匹配項目名稱(作業、節點、從屬項等)。這意味着您分配給此角色的權限將僅對名稱與此模式匹配的項有效。即會匹配到:

 然后給項目授予權限:

此時,有兩個Item Roles,即test和GK_shell。

 

②給用戶分配全局角色、項目角色(角色/用戶設置)

 進來如圖,其中的read即為Manage roles中的Global Roles設置的群組。 

 如圖,將User用戶gk,添加到read群組中,而read群組的權限為read。應用后刷新gk用戶登錄頁面,如圖,只有讀權限,顯示不了項目權限,然后再接着配置下面的Item roles。

 配置Item Roles,如圖

 然后點擊應用,再次刷新gk用戶界面,則可看到項目

然后點擊該gk_remote項目,進入后可看到擁有該項目的讀寫權限。

 

 

 

總結:

Manage Roles:管理角色----》類似群組設置,在里面創建管理的用戶群,和項目群,並對其設置權限。

Assign Roles:分配角色----》類似用戶、項目設置,即在里面添加用戶/項目,然后對用戶/項目選擇已創建的群組。都應用保存后,那么該用戶,就擁有個群組中的用戶群組權限,和項目群組中的對應的項目權限。

 

 新版的role-base有點bug,每個分配完權限,Manage Roles得應用一下才能生效。

Jenkins權限分配很重要,對於開發人員,最好是提供一個接口,供其調用,后面會講到。

 

 


免責聲明!

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



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