通過(guò)本篇你可以學(xué)習(xí)到如下內(nèi)容:pT628資訊網(wǎng)——每日最新資訊28at.com
- RBAC 的基礎(chǔ)知識(shí)。
- Jenkins 的角色權(quán)限插件的使用。
- 實(shí)戰(zhàn):通過(guò)角色來(lái)管理用戶的部署權(quán)限。
一、RBAC
Jenkins 對(duì)權(quán)限的支持是比較弱的,存在以下不足:pT628資訊網(wǎng)——每日最新資訊28at.com
- 有多個(gè)流水線任務(wù),期望不同用戶能看到的任務(wù)不一樣。
- 一個(gè)項(xiàng)目有多套環(huán)境,期望用戶只能部署某些環(huán)境。
- 有的項(xiàng)目只讓用戶有查看權(quán)限,期望不給部署權(quán)限。
針對(duì)上面的不足,Jenkins 可以通過(guò) RBAC 插件的方式來(lái)實(shí)現(xiàn)對(duì)權(quán)限的管控。RBAC 是常見的權(quán)限控制方案。pT628資訊網(wǎng)——每日最新資訊28at.com
RBAC(Role-Based Access Control):基于角色的權(quán)限控制。通過(guò)角色關(guān)聯(lián)用戶,角色關(guān)聯(lián)權(quán)限的方式間接賦予用戶權(quán)限。pT628資訊網(wǎng)——每日最新資訊28at.com
如下圖所示,三個(gè)用戶對(duì)應(yīng)了三種角色,每個(gè)角色關(guān)聯(lián)了不同的部署任務(wù),通過(guò)這種關(guān)聯(lián)方式間接賦予了用戶權(quán)限。pT628資訊網(wǎng)——每日最新資訊28at.com
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
二、角色權(quán)限插件
目前發(fā)現(xiàn)這個(gè)角色權(quán)限插件是比較好用的,推薦給大家使用。pT628資訊網(wǎng)——每日最新資訊28at.com
插件名:Role-based Authorization Strategy。可以到插件管理那里進(jìn)行安裝,如下圖所示:pT628資訊網(wǎng)——每日最新資訊28at.com
角色權(quán)限策略插件pT628資訊網(wǎng)——每日最新資訊28at.com
三、選擇授權(quán)策略
Jenkins 自帶了多種授權(quán)策略,如下圖所示,在全局安全設(shè)置中可以選擇授權(quán)策略。pT628資訊網(wǎng)——每日最新資訊28at.com
對(duì)應(yīng)的訪問(wèn)路徑如下:pT628資訊網(wǎng)——每日最新資訊28at.com
Dashboard->Manage Jenkins->Configure Global Security
當(dāng)我們安裝好 Role-based Authorization Strategy 插件后,就會(huì)出現(xiàn)一個(gè) Role-Base Strategy 授權(quán)策略。pT628資訊網(wǎng)——每日最新資訊28at.com
Jenkins 授權(quán)策略pT628資訊網(wǎng)——每日最新資訊28at.com
下面開始演示如何基于這個(gè)授權(quán)策略來(lái)分配多個(gè)流水線的部署權(quán)限。pT628資訊網(wǎng)——每日最新資訊28at.com
四、創(chuàng)建演示用戶
為了更好的演示角色權(quán)限管理功能,我創(chuàng)建了 3 個(gè)用戶以及 4 個(gè)流水線任務(wù)。pT628資訊網(wǎng)——每日最新資訊28at.com
創(chuàng)建用戶的路徑為:pT628資訊網(wǎng)——每日最新資訊28at.com
http://<你的jenkins地址>:8080/securityRealm/
我在 jenkins 后臺(tái)創(chuàng)建了幾個(gè)用戶:pT628資訊網(wǎng)——每日最新資訊28at.com
- 開發(fā)組長(zhǎng)1:用戶名=passjava-master1
- 測(cè)試組長(zhǎng)1:用戶名=passjava-tester1
- 項(xiàng)目經(jīng)理1:用戶名=passjava-pm1
如下圖所示:pT628資訊網(wǎng)——每日最新資訊28at.com
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
五、創(chuàng)建演示任務(wù)
我創(chuàng)建了 4 個(gè)部署流水線任務(wù),分別對(duì)應(yīng)項(xiàng)目一和項(xiàng)目二的測(cè)試和生產(chǎn)環(huán)境。如下圖所示:pT628資訊網(wǎng)——每日最新資訊28at.com
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
項(xiàng)目一和項(xiàng)目二的測(cè)試和生產(chǎn)環(huán)境pT628資訊網(wǎng)——每日最新資訊28at.com
然后還創(chuàng)建了兩個(gè)分組:正式環(huán)境分組和測(cè)試環(huán)境分組。pT628資訊網(wǎng)——每日最新資訊28at.com
正式環(huán)境分組:demo-prod-envpT628資訊網(wǎng)——每日最新資訊28at.com
- 項(xiàng)目一正式環(huán)境:對(duì)應(yīng) passjava-prod-project1 任務(wù)
- 項(xiàng)目二正式環(huán)境:對(duì)應(yīng) passjava-prod-project2 任務(wù)
測(cè)試環(huán)境分組:demo-test-envpT628資訊網(wǎng)——每日最新資訊28at.com
- 項(xiàng)目一測(cè)試環(huán)境:對(duì)應(yīng) passjava-test-project1 任務(wù)
- 項(xiàng)目二測(cè)試環(huán)境:對(duì)應(yīng) passjava-test-project2 任務(wù)
分組的好處是可以歸類以及可以按組分配權(quán)限。pT628資訊網(wǎng)——每日最新資訊28at.com
六、創(chuàng)建演示角色
6.1 創(chuàng)建角色的頁(yè)面路徑
創(chuàng)建角色的路徑如下圖所示:pT628資訊網(wǎng)——每日最新資訊28at.com
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
創(chuàng)建角色的頁(yè)面路徑pT628資訊網(wǎng)——每日最新資訊28at.com
頁(yè)面地址:http://<你的jenkins服務(wù)ip>:8080/manage/role-strategy/訪問(wèn)路徑:Dashboard->Manage Jenkins->Manage and Assign Roles->Manage Roles
6.2 三種角色
這個(gè)插件可以創(chuàng)建三種角色:pT628資訊網(wǎng)——每日最新資訊28at.com
- Global roles:全局角色,例如管理員、作業(yè)創(chuàng)建者、匿名等,允許在全局基礎(chǔ)上設(shè)置總體、代理、任務(wù)、運(yùn)行、查看和 SCM 權(quán)限。
- Item roles:任務(wù)角色,允許在任務(wù)、分組上設(shè)置特定權(quán)限。
- Agent roles:Agent 角色,本篇用不上。
6.3 全局角色
全局角色適用于 Jenkins 中的任何任務(wù),并覆蓋你在任務(wù)角色中指定的任何內(nèi)容。也就是說(shuō),當(dāng)你在全局角色中授予角色權(quán)限 Job/Read,無(wú)論你在任務(wù)角色中指定什么,都允許該角色讀取所有任務(wù)。pT628資訊網(wǎng)——每日最新資訊28at.com
所以為了分配不同任務(wù)權(quán)限給不同角色,這里對(duì)于全局角色勾選一個(gè) Overall Read 權(quán)限即可。如下圖所示:pT628資訊網(wǎng)——每日最新資訊28at.com
我創(chuàng)建了一個(gè)全局角色:passjava,如下圖所示。pT628資訊網(wǎng)——每日最新資訊28at.com
創(chuàng)建全局角色 passjavapT628資訊網(wǎng)——每日最新資訊28at.com
后續(xù)將上面創(chuàng)建的三個(gè)用戶加到這個(gè) Global 角色中即可。pT628資訊網(wǎng)——每日最新資訊28at.com
注意:如果這三個(gè)用戶不加入到 passjava 角色中的話,后續(xù)這三個(gè)用戶登錄會(huì)提示報(bào)錯(cuò),如下圖所示:pT628資訊網(wǎng)——每日最新資訊28at.com
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
6.4 任務(wù)角色
我創(chuàng)建了三種任務(wù)角色:pT628資訊網(wǎng)——每日最新資訊28at.com
- passjava-master:具有部署項(xiàng)目一和項(xiàng)目二的正式環(huán)境的權(quán)限。
- passjava-tester:具有部署項(xiàng)目一的和項(xiàng)目二的測(cè)試環(huán)境的權(quán)限。
- passjava-pm:具有查看項(xiàng)目一和項(xiàng)目二的正式環(huán)境和測(cè)試環(huán)境的權(quán)限,沒(méi)有部署權(quán)限。
如下圖所示:pT628資訊網(wǎng)——每日最新資訊28at.com
項(xiàng)目角色pT628資訊網(wǎng)——每日最新資訊28at.com
下面解釋下上面的權(quán)限配置:pT628資訊網(wǎng)——每日最新資訊28at.com
- Role:代表角色名稱
- Pattern:代表正則表達(dá)式。例如,如果將該字段設(shè)置為 passjava-prod.*,則該角色將匹配名稱以 passjava-prod 開頭的所有任務(wù),更多匹配規(guī)則可到該插件的官網(wǎng)上查看。點(diǎn)擊藍(lán)色的 passjava-prod.*,則能看到匹配成功的任務(wù):passjava-prod-project1任務(wù) 和 passjava-prod-project2任務(wù),如下圖所示:
正則表達(dá)式匹配成功 項(xiàng)目pT628資訊網(wǎng)——每日最新資訊28at.com
- Job:任務(wù)的權(quán)限,我們勾選 Build(部署),Cancel(取消部署),Read(查看任務(wù))即可。
6.5 分配角色
創(chuàng)建好全局角色和任務(wù)角色,我們就可以將用戶加入到對(duì)應(yīng)的任務(wù)角色中,用戶和角色是多對(duì)多的關(guān)系。比如用戶張三可以具有角色 A 和角色 B 的權(quán)限,角色 A 的權(quán)限也可以給用戶張三和李四。pT628資訊網(wǎng)——每日最新資訊28at.com
6.5.1 分配全局角色
通過(guò) Assign Roles 功能將三個(gè)用戶都加入到 passjava 角色中。pT628資訊網(wǎng)——每日最新資訊28at.com
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
6.5.2 分配項(xiàng)目角色
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
- 開發(fā)組長(zhǎng)具有 passjava-master 權(quán)限,可以部署項(xiàng)目一和項(xiàng)目二的正式環(huán)境。開發(fā)組長(zhǎng)登錄系統(tǒng)后看到的任務(wù)列表如下圖所示:
開發(fā)組長(zhǎng)查看項(xiàng)目列表pT628資訊網(wǎng)——每日最新資訊28at.com
- 項(xiàng)目經(jīng)理具有 passjava-pm 權(quán)限,可以查看項(xiàng)目一和項(xiàng)目二的測(cè)試和正式環(huán)境的部署情況。項(xiàng)目經(jīng)理登錄系統(tǒng)后看到的任務(wù)列表如下圖所示:
圖片pT628資訊網(wǎng)——每日最新資訊28at.com
- 測(cè)試組長(zhǎng)具有 passjava-tester 權(quán)限,可以部署項(xiàng)目一和項(xiàng)目二的測(cè)試環(huán)境。測(cè)試組長(zhǎng)登錄系統(tǒng)后看到的任務(wù)列表如下圖所示:
而是組長(zhǎng)查看項(xiàng)目列表pT628資訊網(wǎng)——每日最新資訊28at.com
可以從上面的結(jié)果看出用戶、角色、權(quán)限分配完成,不同的用戶可以部署不同的環(huán)境。pT628資訊網(wǎng)——每日最新資訊28at.com
七、總結(jié)
通過(guò)本篇的學(xué)習(xí),我們了解了 RBAC 以及角色權(quán)限插件的使用。通過(guò)實(shí)戰(zhàn)掌握了如何配置不同用戶具有不同角色,不同角色具有不同任務(wù)的權(quán)限,從而可以更安全地管理用戶的部署權(quán)限。pT628資訊網(wǎng)——每日最新資訊28at.com
回到最開始提到的 Jenkins 的不足之處我們來(lái)看看解決方案是怎么樣的:pT628資訊網(wǎng)——每日最新資訊28at.com
- 有多個(gè)流水線任務(wù),期望不同用戶能看到的任務(wù)不一樣,解決方案是可以給不同角色分配不同的任務(wù),不同用戶賦予不同角色。如實(shí)戰(zhàn)中的開發(fā)組長(zhǎng)和測(cè)試組長(zhǎng)看到的任務(wù)不一樣。
- 一個(gè)項(xiàng)目有多套環(huán)境,期望用戶只能部署某些環(huán)境,解決方案是對(duì)多套環(huán)境創(chuàng)建對(duì)應(yīng)的多個(gè)任務(wù),多個(gè)角色擁有對(duì)應(yīng)環(huán)境的任務(wù),并對(duì)用戶賦予對(duì)應(yīng)環(huán)境的角色。如實(shí)戰(zhàn)中開發(fā)組長(zhǎng)只能看到正式環(huán)境的任務(wù)。
- 有的項(xiàng)目只讓用戶有查看權(quán)限,期望不給部署權(quán)限,解決方案是添加一個(gè)只能查看對(duì)應(yīng)項(xiàng)目的任務(wù)的角色,并給用戶賦予這個(gè)角色,如實(shí)戰(zhàn)中項(xiàng)目經(jīng)理1只有查看權(quán)限,沒(méi)有部署權(quán)限。
本文鏈接:http://www.www897cc.com/showinfo-26-81868-0.html如果你還不理解 RBAC,看看 Jenkins 如何做到的
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 用C++11打造智能觀察者模式:詳解實(shí)現(xiàn)步驟完整示例代碼
下一篇: 每天都提交代碼,那你知道.git目錄內(nèi)部的秘密嗎?