天天看點

[Jenkins權限]-多團隊如何共用一個Jekins

一、背景

需求是Job/Item隔離。即各個團隊可以建立自己的job/item,别人無法看到。

ps:我全文用了Job一詞,在Jenkins中其實是Item

ps:自己研究了幾天,從一開始以為Jenkins權限支援的不好,到 Role-based Authorization Strategy插件,再到LDAP、組權限等,其實發現最簡單的就在眼皮下。

二、步驟

  1. 安裝插件 Matrix Authorization Strategy Plugin
  2. 進入 Configure Global Security (全局安全配置) > 在Authorization子產品下 > 選擇“項目矩陣授權政策”
    [Jenkins權限]-多團隊如何共用一個Jekins
  3. 将登入使用者的Job檢視、建立權限加上。

    第一行是匿名使用者,也就是沒登入的使用者的權限,第二行是授權使用者,就是登入的使用者。這樣配置後,使用者登入之後就可以看到自己有權限的job,也可以建立。

    下圖是我用admin賬号進行的全局操作,也就是下面的權限會追加到所有job中,類似與統一授權,謹慎使用。

    [Jenkins權限]-多團隊如何共用一個Jekins
    假設我們有一個團隊A的使用者qq,它是所在團隊的管理者,那麼它就可以建立自己需要的job,例如job-a。那麼job-a的配置頁中也會出現一個權限配置頁面,并預設的把自己添加進去,如下圖。
    [Jenkins權限]-多團隊如何共用一個Jekins
    此時,job-a隻有admin和使用者qq可以看到,同時qq可以自己拉人進來。

三、關于group、組。

  1. 添加人員的時候“Add user or group”,我們會想,是不是可以按組添加,答案是肯定的,可以。那這個group來自哪裡呢?
  2. 其實,這個group是對應賬号體系的,我文中選擇的是Jenkins自有的賬号體系。你也可以選擇LDAP或者GItlab體系,這些裡面都有組。
  3. 選擇GItlab體系,配置插件,讓jenkins登入時直接打開gitlab登入頁,實作單點。那麼這時候,組就是gitlab中的group。
  4. 選擇LDAP,那麼你可以在LDAP中添加組,在組中添加成員。在jenkins的ldap配置時,可以選擇組成員的搜尋方法:一是從group裡加成員,二是從使用者屬性裡配置。
    [Jenkins權限]-多團隊如何共用一個Jekins

四、Gitlab單點

Gitlab和Jenkins可以通過配置插件,實作使用Gitlab賬号單點登入。效果是:登入Gitlab後,打開Jenkins已經登入,沒登入直接打開Jenkins會跳轉到Gitlab登入頁,輸入賬号密碼,跳轉會Jenkins

五、Role-based Authorization Strategy

這個插件也是基于上述的安全矩陣進行權限控制的,這個ACL(通路控制清單)是Jenkins權限控制的基礎。

插件的優點是可以基于角色控制、可以通過正規表達式對一批Job進行權限管理。

插件的缺點是隻能由admin來管理,不能讓團隊自己管理,且團隊建立的Job必須符合表達式,否則建立之後也看不到。

2020.8.11更新

團隊協作,還需要憑證的隔離,請看我的這篇文章:

[Jenkins權限]-多團隊如何隔離憑證,隐藏憑證,不讓别人看到

繼續閱讀