【Jenkins系列】基于LDAP&&Role-based Authorization Strategy實現Jenkins團隊權限管理
集成LDAP添加企業用戶
jenkins 默認可以手動添加用戶,由于簡單不做解釋;這里重點說下企業內部使用LDAP來實現用戶的統一管理,也就是說無須再次創建用戶

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

注意:
- jenkins 默認使用“Jenkins' own user database”,即自己本身的數據庫,一旦切換,當前配置數據可能丟失,所以切忌隨意修改該配置 !
- 在配置LDAP前,一定要記得開啟匿名用戶的 admin 權限,否則一旦配錯,自己就無法登錄了!

權限角色配置
在實際工作中,存在多個團隊都需要Jenkins來實現持續交付,但是又希望不同團隊之間進行隔離,每個項目有自己的view, 只能看到自己項目的jenkins job.
但是,jenkins默認的權限管理體系不支持用戶組或角色的配置,這里利用Role-based Authorization Strategy實現上述目的

1. 啟用Role-based Authorization Strategy
進入系統管理 > Configure Global Security ,配置如下,此時該策略已啟用
注意:策略啟用之后,不禁止修改!策略之間是獨立的,一旦選擇另外一中策略,當前策略將丟失,包括已生效的配置。

2. 創建Glabal roles和Project roles
進入系統管理 > Manage and Assign Roles

ManageRoles
- Global roles是對全局的角色控制
- Project roles只針對項目進行控制,所以需要為每個項目單獨添加指定的role (區別于全局,只能有項目相關權限,沒有jenkins管理權限配置)
設置全局角色(全局角色可以對jenkins系統進行設置與項目的操作)
設置項目角色(項目角色只能對項目進行操作)
注意:必須先進行Global roles的配置后方可對Project roles進行配置,可以解為先配置整體性權限,再按項目分權限,遵守從大到小權限控制的原則!
配置job pattern需要注意:prod.*代表匹配以prod開頭的內容
例如:如果以dev開頭就寫成 dev._ 一定要加上"."; ._test表示以test結尾的內容項目
- job_one_manage:job_one的管理人員
- job_one_user:job_one的普通用戶

3. Roles 配置規則和流程
3.1 為項目/團隊添加 project role
以“demo”項目為例,添加manager和user兩種role
- role:demo-manager - pattern: "^demo-[a-zA-Z]*"
- role:demo-user - pattern: "^demo-[a-zA-Z]*"
- 在實際使用中,可以為"項目/團隊"創建兩種role, 甚至一個都可以
- pattern是通過“正則表達”匹配為項目創建的jenkins job, 所有命名需要規范,簡單,一個表達式可以匹配多個項目擁有的job.這里參考"demo"項目
官方文檔介紹該選項支持正則表達式,如Roger-.表示所有以Roger-開頭的項目,
(?i)roger-.* 表示以roger-開頭的項目并且不區分大小寫,如以ABC開頭的項目可以配置為ABC|ABC.* ,也可以使用“abc|bcd|efg”直接匹配多個項目。
與的運算,比如匹配以aa開頭并且不包括abc的字符串:aa[^abc].*
3.2 為項目/團隊成員分配 role
通過以下配置,開發團隊成員就只能看到自己的"demo"項目
4. 查看授權后效果
1.admin用戶進入系統可以看到所有的系統管理權限和所有的項目

2.以user_ops用戶進入系統:可以看到并沒有系統的權限,但是有所有job的管理權限


3.以project_manager用戶進入系統:可以看到也是沒有系統的權限,只有job_one的管理權限

- 以project_user用戶進入系統:可以看到沒有系統的權限,只有job_one的build和查看工作空間的權限



浙公網安備 33010602011771號