Jenkins 的用戶權限管理和Jenkins憑證管理


Jenkins 的用戶權限管理和Jenkins憑證管理


一: Jenkins的用戶權限管理

jenkins 的用戶權限取決於所綁定的角色。如果該角色(如role1)在某個項目(如apple01)上擁有某些權限(如讀,創建,刪除等),那么,所有和該角色綁定的用戶,則擁有該角色相同的權限


1.1 安裝角色綁定插件, 配置授權策略

我們可以利用Role-based Authorization Strategy 插件來管理Jenkins用戶權


image-20220210200329953


點擊 Manage Jenkins,然后找到 Configure Global Security

image-20220210200612177


進入權限全局配置( Configure Global Security)后,在Authentication 配置部分,將授權策略修改為Role-Based Strategy, 如果沒有該選項,則重新安裝插件,重啟Jenkins

image-20220210200838912


點擊Save 保存配置

image-20220210201130442


1.2 創建角色

點擊Manage Jenkins ,找到Manage and Assign Roles 管理和分配角色選項

image-20220210201301964


點擊Manage Role ,進行管理角色,添加角色,或者修改角色權限

image-20220210201500856


角色介紹:

Global roles(全局角色):管理員等高級用戶可以創建基於全局的角色

Project roles(項目角色): 針對某個或者某些項目的角色 ,在老版本里,項目角色叫做project roles

Slave roles(奴隸角色):節點相關的權限


我們添加以下三個角色:

baseRole:該角色為全局角色。這個角色需要綁定Overall下面的Read權限,是為了給所有用戶綁定最基本的Jenkins問權限。注意:如果不給后續用戶綁定這個角色,會報錯誤:用戶名 is missing the Overall/Read permission

role1:該角色為項目角色。使用正則表達式綁定"apple.*",意思是只能操作apple開頭的項目。

role2:該角色也為項目角色。綁定"orange.*",意思是只能操作orange開頭的項目。


在管理角色頁面的全局角色配置(Global roles) 部分, 在Role to add 欄添加角色.

添加baseRole 角色,點擊Add 添加

image-20220210202057501


為baseRole 添加全局可讀權限(將baseRole行的Overall 欄下的Read欄勾選)

image-20220210202405957


添加第一個項目角色,為角色匹配項目(正則匹配),表明該角色在那些項目擁有權限

image-20220210202853196


為第一個項目角色勾選權限,並添加第二個項目角色,勾選權限

image-20220210203139870

image-20220210203229250


添加完角色后,點擊Save 保存

image-20220210203344535


1.3 創建用戶

點擊Manage Jenkins ,然后點擊Manage Uers ,用戶管理

image-20220210203445473


點擊Create User , 創建角色

image-20220210203553181


創建兩個用戶,Tom和Jerry

image-20220210203753664

image-20220210203904981

image-20220210203914340


1.4 給用戶分配角色

用戶分配(綁定)了角色后,就擁有了角色所擁有的權限


點擊Manage Jenkins ,然后點擊Manage and Assign Roles ,然后點擊 Assign Roles,進行角色分配

image-20220210204703053

image-20220210204723461


將用戶Tom 和 Jerry 加入到全局角色分配列表中

image-20220210204922696

image-20220210205004377


為Tom 和Jerry 分配全局角色,baseRole

image-20220210205111744


將Tom 和Jerry 用戶加入到 項目角色分配列表中

image-20220210205204281

image-20220210205307576


為Tom 和Jerry 分配項目角色.Tom 和Role1 綁定, Jerry 和 Role2綁定.這樣,

Tom用戶只能查看到 apple 開頭的項目

Jerry用戶只能查看到orange開頭的項目

image-20220210205548508


點擊Save保存

image-20220210205627795


1.5 創建項目,測試權限

以管理員賬創建兩個項目,分別為apple01 和orange01


點New Item,新建項目

image-20220210210125444


image-20220210210348083

image-20220210210431663

image-20220210210504561

image-20220210210519601


分別使用不同用戶登錄,

Tom 用戶登錄只能看到 apple01項目

Jerry用戶登錄只能看到orange01 項目

image-20220210210636210

image-20220210210822197

image-20220210210910179



二: Jenkins 憑證管理

Jenkins的素材來自於gitlab,那么Jenkins是如何獲取到gitlab的數據呢?其實也是通過本地git復制遠程gitlab 的方式.整個過程如下:

開發人員將代碼推送到本地git 然后和遠端的gitlab服務器復制,這樣遠端的gitlab服務器就獲取到了開發人員本地的git數據

然后,Jenkins服務器的本地git 復制遠端gitlab服務器的數據,通過git插件推送給Jenkins服務

image-20220210213805622


憑據可以用來存儲需要密文保護的數據庫密碼、Gitlab密碼信息、Docker私有倉庫密碼等,以便Jenkins可以和這些第三方的應用進行交互。


2.1 安裝Credentials Binding 插件

要在Jenkins使用憑證管理功能,需要安裝Credentials Binding插件

image-20220210214201109


點擊Manage Jenkins,然后能找到Manage Credentials 和 憑據配置,如果沒有,重新安裝插件並重啟

image-20220210214616215


2.2 安裝git插件和git工具

在安裝插件頁面,搜索git,安裝Git插件

image-20220210215451010


Jenkins服務器安裝Git工具

yum -y install git

git --version   #安裝后查看git版本

image-20220210215710076

image-20220210215726746


2.3 Jenkins 的5種憑證類型

在Manage Jenkins 頁,點擊 Manage Credentials

image-20220210214638827


點擊global的下拉菜單,添加憑據

image-20220210214846929

或者先點擊(global)

image-20220210214741796

在點擊Add Credentials

image-20220210214950729


可以添加的憑證有5種

  • Username with password:用戶名和密碼
  • SSH Username with private key: 使用SSH用戶和密鑰
  • Secret file:需要保密的文本文件,使用時Jenkins會將文件復制到一個臨時目錄中,再將文件路徑設置到一個變量中,等構建結束后,所復制的Secret file就會被刪除。
  • Secret text:需要保存的一個加密的文本串,如釘釘機器人或Github的api token
  • Certificate:通過上傳證書文件的方式

常用的憑證類型有:Username with password(用戶密碼)和SSH Username with private key(SSH密鑰)

image-20220210215946535


2.4 創建用戶密碼類型

創建憑證

Jenkins-->Manage Jenkins-->Manage Credentials -->global -->Add Credentials

image-20220210220441288

image-20220210220504425

image-20220210220533643


測試憑證是否可用

創建一個 FreeStyle 項目

New Item --->FreeStyle Project--->確定

image-20220210220657768

image-20220210220742287

image-20220210221046459

image-20220210221213461

image-20220210221330099

image-20220210221725242

image-20220210221748467


點擊Build Now ,開始構建項目

image-20220210222004895


image-20220210222047796


在Jenkins服務器上查看

image-20220210222341789


2.5 SSH 密鑰類型

SSH免密登錄示意圖

image-20220210222423679


在Jenkins服務器上,使用root用戶生成密鑰對

ssh-keygen -t rsa
ls /root/.ssh/
#id_rsa:私鑰文件
#id_rsa.pub:公鑰文件

image-20220210222800615


把生成的公鑰放在Gitlab中

以root賬戶登錄gitlab--->點擊頭像--->Settings->SSH Keys

(或者給zhangsan 用戶也可以,因為zhangsan 用戶的權限是owner)

image-20220210223140780

image-20220210225445211


在生成密鑰對的Jenkins服務器上,復制公鑰內容

image-20220210225324582


在Gitlab上,粘貼公鑰內容

image-20220210225621371

image-20220210225632158


在Jenkins中添加憑證,配置私鑰

Manage Jenkins ---> Manage Credentails --->global --->Add Credentials

image-20220210230029495


注意Username項填寫的是生成密鑰對的用戶

image-20220210230147407


在Jenkins服務器上復制私鑰

image-20220210230312023

image-20220210230411295

image-20220210230422210


測試憑證是否可用

新建"test02"項目->源碼管理->Git,這次要使用Gitlab的SSH連接,並且選擇SSH憑證

image-20220210230557894

image-20220210230721231

image-20220210230825338

image-20220210230836415


同樣嘗試構建項目,如果代碼可以正常拉取,代表憑證配置成功!

image-20220210231010885

image-20220210231047497


同樣,在/var/lib/jenkins/workspace下也可以看到test02的項目

image-20220210231215589


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM