前言
在使用jenkins的過程中,需要為不同的角色分配相應的權限,如果jenkins的用戶數據能和公司現在的帳號系統結合起來那會更好。
關於如何為用戶分組,我推薦使用 role based authorization strategy 這個插件
我的環境如下:
系統:windows 7 x64
進入用戶管理
如果使用的是jenkins內置的用戶數據庫,操作方法如下:
1.使用管理員帳號登錄,選擇 Configure Global Security 就可以打開用戶管理界面
admin沒有overall/Read權限
在授權策略中選擇安全矩陣之后,並沒有為amdin勾選 overall的權限
刷新或者點其它操作就會出現 admin沒有overall/Read權限
解決辦法:
1. 在jenkins的安裝目錄下找到 config.xml,備份一份,並打開
2. 找到 <authorizationStrategy> 節點 ,修改內容如下(兩個配置可選)
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/> 這個權限對應“任何用戶可以做任何事(沒有任何限制)” <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/> 這個權限對應“登錄用戶可以做任何事”
3. 重啟jenkins的服務
內置用戶和權限管理
推薦這篇博客講解jenkins內置的用戶管理比較詳細
用戶管理插件
在插件庫搜索到的安裝量較高的用戶管理有兩個:
Role-based Authorization Strategy:https://plugins.jenkins.io/role-strategy
安裝量:20931
介紹:網上相關的文檔資料較多(推薦使用)
Matrix Authorization Strategy:https://plugins.jenkins.io/matrix-auth
安裝量:131937
介紹:文檔較少,未使用。
Role-based Authorization Strategy
這個章節講解這個插件的使用筆記,插件地址:https://plugins.jenkins.io/role-strategy
安裝完 role based authorization strategy 之后,在系統管理的菜單項中會多出一項 “Manager and Assign Roles”
創建用戶組
1. 選擇 系統管理 - Manager and Assign Roles 中的 mangage Roles 進行創建用戶組
2. 記住要為所有用戶組勾選overall的read權限
我的測試可以只勾選Global roles,而無需在project roles中創建
為用戶分配組
1. 選擇 系統管理 - Manager and Assign Roles 中的 Assign Roles 可以為用戶分組
我也只在Global roles為用戶分配權限,並沒有為特定的項目分配。
使用通配符
在Manager and Assign Roles - Project roles 中可以添加通配符,為不同組指定可以打包那些項,通配符是匹配創建的job名字
我的試驗
1. 在Manage Roles中在Global roles創建用戶組
2. 在Assign Roles 中為具體的用戶分配組,只在global roles下為具體用戶分配組
3 . 如上圖所示,在project roles中並沒有給qingqing_zhao沒有分配權限,但global roles中分配了job_ops權限,所以qingqing_zhao這個用戶擁有job_ops組的權限
4. 而在 anonymous 分配在 job_read 組,這樣無需登錄也可以項目信息,但僅僅可查看job信息,而無權進行任何操作
global roles 和 project roles
global roles全局角色(全局角色可以對jenkins系統進行設置與項目的操作)
project roles項目角色(項目角色只能對項目進行操作)
上述我的試驗中,對qingqing_zhao 這個用戶分配了全局角色權限,所以他也擁有項目的權限,golbal role 的權限大於project roles。
不同用戶的視圖
按照上面的測試,我對用戶分了三個組:admin ,ops ,readonly,下面是這三個組進入jenkins的視圖。
admin組視圖
最高權限組,包括系統和job的管理權限
ops組圖
僅僅可對job(項目)進行操作,包括build ,cancel
readonly 組
只可對job(項目)進行只讀
不同用戶組不同job
總結來說就是在建立job有一定的命名規范,在分配project roles時利用pattern進行過濾(例如:build.* 。表示build開頭號的job都可以訪問)
參考: https://my.oschina.net/boltwu/blog/404893
TODO
利用公司已有帳號系統
Jenkins 使用公司帳號體系或已有帳號進行登錄,利用ldap,不同公司的配置數據不一樣。
我使用的2.32.3版本自帶ldap插件
參考:
http://blog.csdn.net/wanglei_storage/article/details/52935312
用戶權限管理
Jenkins的用戶組管理中的pattern (正規表達式)部分的使用
其他
通過Jenkins copy job 創建新的job 之后不能立即構建
小技巧
web頁url操作jenkins
在web頁就可以重啟或關閉jenkins,操作如下:如果當前登錄的帳號俱備管理員權限,在網址后面加上 /restart就可
http://192.168.70.224:8080/restart
/exit 退出
/reload 重載