當(dāng)開始使用Jenkins后摹量,即會提示啟用安全配置涤伐。
插件推薦
插件名 | 作用 |
---|---|
Role-based Authorization Strategy | 基于角色的授權(quán)策略(能夠?yàn)椴煌巧煌?xiàng)目分配不同權(quán)限) |
安全域
即用戶管理,我在實(shí)際使用過程中缨称,選擇了Jenkins專有用戶數(shù)據(jù)庫(不允許用戶注冊)
當(dāng)安全配置出現(xiàn)問題废亭,導(dǎo)致登錄失敗時,解決方法是:
打開config文件具钥,將<useSecurity>true</useSecurity>改為false豆村,刪除<authorizationStrategy>和<securityRealm>內(nèi)容
授權(quán)策略
Jenkins默認(rèn)提供了如下幾種授權(quán)方式:
- 任何用戶可以做任何事(沒有任何限制)
- 安全矩陣:用戶可以操作所授權(quán)的動作,但是所有項(xiàng)目一視同仁
- 登錄用戶可以做任何事
- 遺留模式
- 項(xiàng)目矩陣授權(quán)策略:擴(kuò)展自"安全矩陣"骂删,可以進(jìn)入每個項(xiàng)目中配置安全矩陣
在我們實(shí)際使用的場景中掌动,有多個項(xiàng)目接入到Jenkins進(jìn)行持續(xù)部署的工作四啰,我們希望不同項(xiàng)目的人員是互不可見的,同時有些人員只可以查看構(gòu)建情況粗恢,有些人員能夠手動觸發(fā)構(gòu)建并有權(quán)限修改pipeline腳本柑晒。只有項(xiàng)目矩陣授權(quán)策略
符合我們的需求,但是這種策略需要每個項(xiàng)目眷射、每個用戶都進(jìn)行配置匙赞,非常繁瑣。最終使用了插件Role-based Authorization Strategy
妖碉,實(shí)現(xiàn)基于角色的授權(quán)策略涌庭。
Role-based Authorization Strategy:
(1)在全局安全配置
的授權(quán)策略
中選擇Role-Based Strategy
(2)進(jìn)入系統(tǒng)管理
——Manage and Assign Roles
,進(jìn)入角色權(quán)限配置頁面欧宜,頁面中有3個配置選擇Manage Roles(管理角色權(quán)限)坐榆,Assign Roles(將角色分配給用戶),Role Strategy Macros(通常不需要使用)
(3)Manage Roles:
角色分為3種冗茸,全局角色(Global roles)席镀、項(xiàng)目角色(Project roles)、節(jié)點(diǎn)角色(Slave roles)夏漱,這里主要考慮全局角色和項(xiàng)目角色豪诲。
注:全局角色會覆蓋掉項(xiàng)目角色,如在全局中有讀權(quán)限挂绰,則該角色被允許讀所有項(xiàng)目(不管項(xiàng)目角色里面的設(shè)置)
1.當(dāng)我們需要限制用戶讀/寫權(quán)限都局限在項(xiàng)目的級別屎篱,可以為該角色提供一些有限的權(quán)限(如overall read)
2.添加Project roles時,需要提供項(xiàng)目的pattern扮授,這樣該角色的權(quán)限在匹配上的項(xiàng)目中都生效。pattern是一個正則表達(dá)式专肪,且大小寫敏感刹勃,例如Roger-.\*
能夠匹配所有項(xiàng)目名以"Roger-"開頭的項(xiàng)目。
配置的情況如下圖:
(4)Assign Roles
進(jìn)入assign roles界面嚎尤,可以將user/group同時添加到global roles和item roles中荔仁,為用戶添加相應(yīng)的角色,從而進(jìn)行角色的授權(quán)控制芽死。
例如乏梁,我們有一個用戶test,我們?yōu)槠涮砑恿巳值膎ormal角色和項(xiàng)目的roger角色关贵,如下圖:
因此遇骑,test角色有全局overall的讀權(quán)限(能夠看到基本的頁面),有憑證的讀權(quán)限(能夠看到所有憑證)揖曾,有項(xiàng)目Roger-.*的運(yùn)行落萎、刪除亥啦、編輯的權(quán)限,但是沒有刪除/編輯構(gòu)建歷史的權(quán)限练链。如下為使用test角色登錄后只能查看Roger-test項(xiàng)目翔脱,不能進(jìn)行系統(tǒng)配置、不能添加項(xiàng)目等等:
角色權(quán)限解釋
Overall
Administer | Read |
---|---|
管理員媒鼓,能夠進(jìn)行系統(tǒng)級的配置修改(會賦予角色所有的權(quán)限) | 讀Jenkins的基本頁面 |
Credentials(憑證)
Create | Delete | ManageDomains | Update | View |
---|---|---|---|---|
添加 | 刪除 | 管理憑證的域 | 更新 | 查看(憑證管理頁面) |
Agent(節(jié)點(diǎn))
Build | Configure | Connect | Create | Delete | Disconnect | Provision |
---|---|---|---|---|---|---|
運(yùn)行在節(jié)點(diǎn)上的job | 管理節(jié)點(diǎn) | 連接 | 新建 | 刪除 | 斷開連接 | ? |
Job(任務(wù))
Build | Cancel | Configure | Create | Delete | Discover | Move | Read | Workspace |
---|---|---|---|---|---|---|---|---|
構(gòu)建 | 取消/中止構(gòu)建 | 配置 | 新建(只有全局角色起效) | 刪除任務(wù) | 通過url訪問時不報(bào)404錯誤(比Read的權(quán)限低届吁,如果沒有配置read權(quán)限,仍不能查看到項(xiàng)目的詳細(xì)信息) | 移動任務(wù)所在文件夾(?) | 查看job的基本信息 | 查看job的工作目錄 |
Run(job的構(gòu)建歷史)
Delete | Replay | Update |
---|---|---|
刪除構(gòu)建歷史 | 回放歷史構(gòu)建(不起效绿鸣?) | 為歷史構(gòu)建編輯一些備注信息 |
View(視圖疚沐,只能在視圖中查看有權(quán)限的項(xiàng)目)
Configure | Create | Delete | Read |
---|---|---|---|
編輯 | 新建 | 刪除 | 查看 |
注:如果用戶只有部分項(xiàng)目有權(quán)限但卻有視圖的編輯權(quán)限,可能會導(dǎo)致視圖配置的出現(xiàn)問題
SCM
Tag |
---|
為源代碼打tag(?) |