基於LDAP&&Role-based Authorization Strategy實現Jenkins團隊許可權管理

在實際工作中,存在多個團隊都需要Jenkins來實現持續交付,但是又希望不同團隊之間進行隔離,每個項目有自己的view, 只能看到自己項目的jenkins job.

但是,jenkins默認的許可權管理體系不支援用戶組或角色的配置,這裡利用Role-based Authorization Strategy實現上述目的

許可權角色配置

直接跳過插件安裝,介紹如何基於「項目」配置.

1. 啟用 Role-based Authorization Strategy

進入系統管理 > Configure Global Security ,配置如下,此時該策略已啟用

注意:策略啟用之後,不禁止修改!策略之間是獨立的,一旦選擇另外一中策略,當前策略將丟失,包括已生效的配置。

Jenkins-許可權管理-1

2. 創建 Glabal roles 和 Project roles

進入系統管理 > Manage and Assign Roles

Jenkins-許可權管理-2

ManageRoles
– Global roles是對全局的角色控制
– Project roles只針對項目進行控制,所以需要為每個項目單獨添加指定的role (區別於全局,只能有項目相關許可權,沒有jenkins管理許可權配置)
配置job pattern需要注意:prod.代表匹配以prod開頭的內容
例如:如果以dev開頭就寫成 dev.
一定要加上”.”; .*test表示以test結尾的內容項目

Jenkins-許可權管理-3

注意:必須先進行Global roles的配置後方可對Project roles進行配置,可以解為先配置整體性許可權,再按項目分許可權,遵守從大到小許可權控制的原則!

Jenkins-許可權管理-4

3. Roles 配置規則和流程

這裡強制規定項目role配置規則和流程

3.1 為項目/團隊添加 project role

以「demo」項目為例,添加manager和user兩種role

    - role:demo-manager - pattern: "^demo-[a-zA-Z]*"
    - role:demo-user      - pattern: "^demo-[a-zA-Z]*"
  1. 在實際使用中,可以為”項目/團隊”創建兩種role, 甚至一個都可以
  2. pattern是通過「正則表達」匹配為項目創建的jenkins job, 所有命名需要規範,簡單,一個表達式可以匹配多個項目擁有的job.這裡參考”demo”項目

3.2 為項目/團隊成員分配 role

通過以下配置,開發團隊成員就只能看到自己的”demo”項目

Jenkins-許可權管理-5

添加用戶-LDAP

jenkins 默認可以手動添加用戶,由於簡單不做解釋;這裡重點說下企業內部使用LDAP來實現用戶的統一管理,也就是說無須再次創建用戶

Jenkins-許可權管理-7

需要使用LDAP插件,然後在Configure Global Security 頁面進行配置,輸入公司內部LDAP服務資訊。

Jenkins-許可權管理-8

注意

  1. jenkins 默認使用「Jenkins’ own user database」,即自己本身的資料庫,一旦切換,當前配置數據可能丟失,所以切忌隨意修改該配置 !

  2. 在配置LDAP前,一定要記得開啟匿名用戶的 admin 許可權,否則一旦配錯,自己就無法登錄了!

    Jenkins-許可權管理-9