Jenkins的權限控制和Rundeck的遠程認證


1.權限控制的基本設置

 1.1選擇基於角色權限的分配策略

1.2 配置全局權限和項目權限

具體的權限對應關系見下表:

Overall(全局) Credentials(憑證) Slave(節點) Job(任務) View(視圖)
Administer Read RunScripts UploadPlugins ConfigureUpdateCenter Create Update View Delete ManageDomains Configure Delete Create Disconnect Connect Build Create Delete Configure Read Discover Build Workspace Cancel Create Delete Configure Read
管理員(最大) 閱讀 運行腳本 升級插件 配置升級中心 創建 更新 查看 刪除 管理域 配置 刪除 創建 斷開連接 連接 構建 創建 刪除 配置 閱讀 重定向 構建 查看工作區 取消構建 創建 刪除 配置 閱讀

添加項目角色時,需要制定匹配項目的模式,如上圖中的Pattern,官方文檔介紹該選項支持正則表達式,如“Roger-.”表示所有以Roger-開頭的項目,“(?i)roger-.*”表示以roger-開頭的項目並且不區分大小寫,如以ABC開頭的項目可以配置為“ABC|ABC.*”,也可以使用“abc|bcd|efg”直接匹配多個項目。

項目角色與全局角色的區別就是:

項目角色是用來管理項目的,沒有對Jenkins的管理權限。

而全局角色更加側重於對於Jenkins的管理。

1.3 配置完權限后將權限下放到具體的用戶

2.Overall下的read和job下的read的糾結

首先問題的源頭是對於Anonymous的設置

匿名用戶在登錄的時候需要被賦予最基本的Overall的read權限(不然什么也看不見)和Job中的Discover權限:如果匿名用戶(沒有訪問job的權限)直接訪問一個Job的Url將重定向到登陸頁面---這個就是后面的問題所在wget的時候需要帶上用戶名密碼

同樣的為什么之前wget -P命令即便不加user+password也可以直接下載Jenkins,因為之前guest權限或者說匿名用戶的訪問權限中擁有對於Job的讀取權限,不需要登錄就可以直接訪問到,但是由於目前我們做訪問控制所以這個選項鐵定不能選job-read。

3.Rundeck上用wget命令下載Jenkins資源時報403 Forbidden

 沒有進行權限設置之前下載Jenkins的資源用的是下面的命令

在設置了權限之后還是用這個命令Linux就報403錯誤了

本人菜鳥鬧騰了半天也沒有出來,隨即內事百度!

4.查閱官方手冊+stackoverflow

 查找問題先通過百度進行一波過濾。。。若搜索不到明顯的解決方案或者說回答很少立馬轉向google

通過goole我們現在overstackflow上狗刨式搜索了一遍答案,諸如以下:

最后在google搜索的第三個結果中,把我指引到了Jenkins官方文檔手冊如下圖所示

通過簡單的判斷我得出了,因為Jenkins權限控制了之后,遠端wget命令的時候是通過guest用戶來進行訪問的,而guest我們沒有給它設置讀取job的權限,所以應該在遠端將登陸的用戶名和密碼帶上

故得到 --http-user為登陸用戶名 --http-password為密碼

url后面?token是在job中配置的,token作為遠程觸發的一個身份驗證令牌

當然我們目前解決問題的話只需要wget的時候帶上用戶名密碼即可(在Jenkins上建立一個專門用來進行遠程download的用戶),token有需要的話也可以加上

所以rundeck的命令就成了如下的形式

5.解決問題

最終實現用戶權限的下放,並成功與Rundeck實現交互。


免責聲明!

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



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