2013-06-20 39 views
3

我需要通過Jenkins UI使用登錄的用戶憑證執行Jenkins作業中的少數作業,例如「發佈到生產」。原因是,我們有單獨的支持團隊成員,他們有權訪問生產盒,而不是開發團隊成員。因此,爲了將任何代碼部署到生產環境中,所有Windows Deploy命令(例如,創建,更新文件,文件夾等)都需要使用特定的用戶憑證運行,並且可以訪問Production Box。因此,即使是無法訪問生產箱但是Jenkins Admin的開發團隊成員執行相同的作業,也會因「訪問被拒絕」而導致失敗。只有在支持團隊成員擁有其憑證的情況下,該工作才能成功。我們如何使用其他用戶憑證執行Jenkins作業

我嘗試使用參數化插件,但無法將密碼成功傳遞到包含MSDeploy指令的批處理文件。即使Jenkins控制檯日誌也會顯示在其控制檯輸出中傳遞的參數,這是一個安全問題。

我檢查了基於角色的安全插件,但這並沒有多大幫助。我只需要一個插件,它應該在開始構建作業之前要求用戶提供他們的憑證,並且應該使用用戶憑證來執行作業,以便我的MSDeploy命令能夠在生產框中部署代碼,團隊成員使用他們的憑證構建該作業。我希望有人支持模仿。

現在所有Jenkins Jobs都使用服務帳戶執行,Tomcat服務被配置爲運行Jenkins所在的服務帳戶。

任何幫助,將不勝感激。

回答

6

萬一出現混淆,Jenkins作業將始終以相同的OS用戶身份運行。基於Matrix的安全性適用於登錄到Jenkins服務器並控制創建或啓動作業等功能的用戶。

您可以將作業配置爲使用一組通用生產憑證,然後阻止開發人員調用該作業。

也許更好的方法是將構建代碼的過程與部署代碼的過程分開。下圖(摘自xebia-france項目)演示了我的一些最喜愛的工具RundeckNexus可以與Jenkins集成。

enter image description here

最後,我強烈建議您閱讀以下鏈接:

+0

感謝您的回覆。 「您可以將作業配置爲使用一組通用生產憑證,然後阻止開發人員調用該作業。」不知道我們該怎麼做,因爲開發團隊在Jenkins Web服務器以及Jenkins Web應用程序上都是Admin。我的方案是我想要一個「Release To Production」作業,它在Production Web Server上執行MSDeploy命令。但問題在於,hudson作業使用運行Tomcat服務的服務帳戶的憑據執行,並在其上部署了hudson。此服務帳戶不能訪問prod Web服務器。 – user1233802

+0

@ user1233802如果你的開發人員是詹金斯的管理員,你不能真正限制他們的訪問權限......設置第二個Jenkins僅僅用於部署是可選的,但是在那個階段爲什麼不考慮使用rundeck來分離構建和部署的責任?開發人員可以對Rundeck進行有限的訪問,使其能夠部署到開發和測試系統,但無法訪問生產Rundeck項目。 –

+0

嗯,這可能是一個選項。但理想情況下,我希望在另一個用戶的環境下執行作業,而不是在Tomcat使用Jenkins託管的用戶帳戶環境下執行。我會嘗試rundeck,但是有可能在其他用戶的憑證下執行rundeck作業(這是我感興趣的模擬)或rundeck也使用Tomcat正在使用的用戶帳戶?請幫忙 – user1233802

1

你還可以利用內置在Windows中運行方式或Powershell的InvokeCommand cmdlet,並-Credential運行 - 這兩個都會以純文本的形式存儲用戶名/密碼 - 所以請考慮風險,但這會給您帶來靈活性。

我很驚訝這沒有一個更好的答案在另一臺機器上設置代理作爲另一個服務運行,並將代理定義爲一個特殊的「類型」來提取工作 - 沿着這些線是什麼會期待,但我還沒有看到在詹金斯這樣的實現(我是詹金斯的新手,所以正在尋找答案,並找到了這個線程)。

對於更熟悉Jenkins的人可以考慮的其他東西是當您將自定義路徑設置爲MSBuild時,是否可以將其設置爲runas/user:... msbuild。exe或許?我目前沒有額外的Jenkins服務器來嘗試。

0

嗨,我知道我在這個主題上來遲了,但我只是在這個問題上,解決它很難,所以我想我可能只是分享我設置的。首先要做的事情是:如果你想以「特定用戶」的身份運行Jenkins作業(所有正確的habilitations),最簡單的方法是以該用戶的身份運行Jenkins SLAVE

然後,你可能會很好地絆倒以下內容:你可能想要在Windows 服務相同的Windows機器上運行serveral奴隸。這很好,只要每個奴隸都有他自己的Remote root directory,並且可能也有特定的「標籤」。

一旦設法將您的slave作爲Windows服務運行,啓動服務控制檯(運行services.msc)。編輯新創建的服務屬性,轉到登錄選項卡。選擇「以:此帳戶登錄」並輸入您的帳戶憑證。

乾杯:)

相關問題