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 Roles
的Item 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中
保存
測試一下
王五登錄兩個項目都能看到
點開任意項目,沒有操作菜單,即王五除了讀權限沒有其他權限。
完成