Jenkins 的用戶權限管理和Jenkins憑證管理
一: Jenkins的用戶權限管理
jenkins 的用戶權限取決於所綁定的角色。如果該角色(如role1)在某個項目(如apple01)上擁有某些權限(如讀,創建,刪除等),那么,所有和該角色綁定的用戶,則擁有該角色相同的權限
1.1 安裝角色綁定插件, 配置授權策略
我們可以利用Role-based Authorization Strategy 插件來管理Jenkins用戶權
點擊 Manage Jenkins,然后找到 Configure Global Security
進入權限全局配置( Configure Global Security)后,在Authentication 配置部分,將授權策略修改為Role-Based Strategy, 如果沒有該選項,則重新安裝插件,重啟Jenkins
點擊Save 保存配置
1.2 創建角色
點擊Manage Jenkins ,找到Manage and Assign Roles 管理和分配角色選項
點擊Manage Role ,進行管理角色,添加角色,或者修改角色權限
角色介紹:
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 添加
為baseRole 添加全局可讀權限(將baseRole行的Overall 欄下的Read欄勾選)
添加第一個項目角色,為角色匹配項目(正則匹配),表明該角色在那些項目擁有權限
為第一個項目角色勾選權限,並添加第二個項目角色,勾選權限
添加完角色后,點擊Save 保存
1.3 創建用戶
點擊Manage Jenkins ,然后點擊Manage Uers ,用戶管理
點擊Create User , 創建角色
創建兩個用戶,Tom和Jerry
1.4 給用戶分配角色
用戶分配(綁定)了角色后,就擁有了角色所擁有的權限
點擊Manage Jenkins ,然后點擊Manage and Assign Roles ,然后點擊 Assign Roles,進行角色分配
將用戶Tom 和 Jerry 加入到全局角色分配列表中
為Tom 和Jerry 分配全局角色,baseRole
將Tom 和Jerry 用戶加入到 項目角色分配列表中
為Tom 和Jerry 分配項目角色.Tom 和Role1 綁定, Jerry 和 Role2綁定.這樣,
Tom用戶只能查看到 apple 開頭的項目
Jerry用戶只能查看到orange開頭的項目
點擊Save保存
1.5 創建項目,測試權限
以管理員賬創建兩個項目,分別為apple01 和orange01
點New Item,新建項目
分別使用不同用戶登錄,
Tom 用戶登錄只能看到 apple01項目
Jerry用戶登錄只能看到orange01 項目
二: Jenkins 憑證管理
Jenkins的素材來自於gitlab,那么Jenkins是如何獲取到gitlab的數據呢?其實也是通過本地git復制遠程gitlab 的方式.整個過程如下:
開發人員將代碼推送到本地git 然后和遠端的gitlab服務器復制,這樣遠端的gitlab服務器就獲取到了開發人員本地的git數據
然后,Jenkins服務器的本地git 復制遠端gitlab服務器的數據,通過git插件推送給Jenkins服務
憑據可以用來存儲需要密文保護的數據庫密碼、Gitlab密碼信息、Docker私有倉庫密碼等,以便Jenkins可以和這些第三方的應用進行交互。
2.1 安裝Credentials Binding 插件
要在Jenkins使用憑證管理功能,需要安裝Credentials Binding插件
點擊Manage Jenkins,然后能找到Manage Credentials 和 憑據配置,如果沒有,重新安裝插件並重啟
2.2 安裝git插件和git工具
在安裝插件頁面,搜索git,安裝Git插件
Jenkins服務器安裝Git工具
yum -y install git
git --version #安裝后查看git版本
2.3 Jenkins 的5種憑證類型
在Manage Jenkins 頁,點擊 Manage Credentials
點擊global的下拉菜單,添加憑據
或者先點擊(global)
在點擊Add Credentials
可以添加的憑證有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密鑰)
2.4 創建用戶密碼類型
創建憑證
Jenkins-->Manage Jenkins-->Manage Credentials -->global -->Add Credentials
測試憑證是否可用
創建一個 FreeStyle 項目
New Item --->FreeStyle Project--->確定
點擊Build Now ,開始構建項目
在Jenkins服務器上查看
2.5 SSH 密鑰類型
SSH免密登錄示意圖
在Jenkins服務器上,使用root用戶生成密鑰對
ssh-keygen -t rsa
ls /root/.ssh/
#id_rsa:私鑰文件
#id_rsa.pub:公鑰文件
把生成的公鑰放在Gitlab中
以root賬戶登錄gitlab--->點擊頭像--->Settings->SSH Keys
(或者給zhangsan 用戶也可以,因為zhangsan 用戶的權限是owner)
在生成密鑰對的Jenkins服務器上,復制公鑰內容
在Gitlab上,粘貼公鑰內容
在Jenkins中添加憑證,配置私鑰
Manage Jenkins ---> Manage Credentails --->global --->Add Credentials
注意Username項填寫的是生成密鑰對的用戶
在Jenkins服務器上復制私鑰
測試憑證是否可用
新建"test02"項目->源碼管理->Git,這次要使用Gitlab的SSH連接,並且選擇SSH憑證
同樣嘗試構建項目,如果代碼可以正常拉取,代表憑證配置成功!
同樣,在/var/lib/jenkins/workspace下也可以看到test02的項目