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實現交互。