Jenkins使用者許可權管理-Role-based Authorization Strategy外掛

劉晨[lcxhk_cn]發表於2021-07-01

02-Jenkins使用者許可權管理-Role-based Authorization Strategy外掛

在jenkins的使用過程中,需要給使用者分配只管理特定專案的許可權來保證專案相關人員只能管理對應專案(比如有是三個專案a、b、c,有兩個使用者張三、李四,需求張三隻有管理專案a的許可權,李四隻有管理專案b的許可權,同時張三和李四都有專案c的讀許可權),jenkins自帶的使用者許可權管理無法滿足這樣的需求。因此需要更精細的許可權管理,目前使用比較廣泛的是Role-based Authorization Strategy外掛。

一、準備工作

首先建立兩個使用者張三李四,這裡設定張三為RD,李四為OP

1.1 建立使用者

系統管理-->管理使用者-->新建使用者

1.2 建立專案任務

新建兩個專案project_a、project_b

我這裡是以管理員身份登入的。我的檢視-->新建任務

任務內具體設定,我這裡先忽略。

1.3 安裝外掛

系統管理-->外掛管理-->可選外掛

輸入外掛名稱Role-based Authorization Strategy

如果你已經安裝過該外掛,則在已安裝一欄中可以看到該外掛

二、配置全域性安全策略

系統管理-->全域性安全配置(Configure Global Security)

授權策略選擇Role-Based Strategy

三、管理和分配角色

3.1 配置Manage Roles

系統管理-->Manage and Assign Roles-->Manage Roles

3.1.1 建立全域性角色並授權

新增兩個全域性角色RD(開發)、OP(運維)並授予全域性的Read許可權,這裡如果沒有授權的話,普通使用者登入到jenkins則會提示:使用者沒有Overall/read許可權

3.1.2 建立專案角色並授權

新增兩個專案角色project_a_maneger、project_b_manager,並授權。

Role to add:專案角色名稱

Pattern:專案角色對應的專案,這裡可以用正則匹配一類專案任務。

新增專案角色後授權

我這裡對兩個角色授予管理對應專案的所有許可權

儲存

2.3 配置Assign Roles

系統管理-->Manage and Assign Roles-->Assign Roles

在2.2已經配置好了角色和許可權,那這一步就是給使用者分配角色,或者說是讓上面的配置生效

首先在Global roles裡面新增之前建立的使用者

新增完成後給使用者分配角色,張三為開發人員即RD,李四為運維人員即OP

儲存

這樣就將張三李四兩個人員與2.2裡面設定的全域性角色關聯了起來,現在兩者都有全部/read許可權,可以正常登陸jenkins了,登陸測試一下吧

登陸成功沒有問題。你也可以測試一下將2.2中的Global roles設定裡的全劇角色RD對應的Read許可權去掉,儲存一下,修改配置記得儲存

現在載去嘗試使用張三使用者登入,就會報錯了

由於沒有全域性讀許可權,不會顯示任何內容。

測試結束,記得將全域性角色RD的讀許可權恢復,儲存,接下來接著配置Assign RolesItem roles

在Item roles中新增之前建立的兩個角色張三、李四

新增完成後給使用者分配角色,張三分配project_a_manager的角色 ,李四分配project_b_manage的角色

這樣我麼就將張三李四分別和兩個專案角色關聯起來了,關聯後專案角色的許可權就自動對應到了使用者上面,即project_a_manager這個專案角色能管理專案project_a,而張三有了這個角色後也能管理專案project_a了。儲存配置然後測試一下。

四、 測試

使用張三使用者登入

張三隻能看到專案project_a

使用李四使用者登入

李四隻能看到專案project_b

這樣我們就實現了,不同使用者管理不同專案的目的。

總結一下,使用者許可權的控制其實是依賴於專案角色的許可權控制,也就是專案角色才是核心,專案角色將使用者和專案關聯起來,在專案角色上配置對於專案的許可權。

進階

為了更加明確專案角色許可權,使用者許可權的概念我們再來建立一個專案角色和一個使用者,並且來測試一下正規表示式定義專案角色的Pattern

新建使用者王五,讓王五對於project_a、project_b兩個專案都只有只讀許可權

新建使用者王五

管理角色

系統管理-->Manage and Assign Roles-->Manage Roles

新建一個專案角色lingdao,並使用正則表示該使用者可以管理project_為開頭的專案

Role to add: lingdao

Pattern: project_.*

授權該專案角色只有讀許可權

儲存

Assign Roles(分配角色)

首先在全域性角色中新增使用者王五,我這裡將王五的全域性角色歸屬到OP,你也可以自定義全域性角色,並將王五加入你定義的全域性角色,需要注意的是在新增全域性角色的時候,全域性角色許可權必須有all/Read許可權即全部/Read即所有可讀,文章前文有提到。

在專案角色中新增使用者王五,並將它繫結到專案角色lingdao中

儲存

測試一下

王五登入兩個專案都能看到

點開任意專案,沒有操作選單,即王五除了讀許可權沒有其他許可權。

完成

相關文章