2012-04-02 100 views
7

我們正在建立Amazon EC2上的IT基礎架構。 假設沿着線的設置: X生產服務器 Ÿ臨時服務器 登錄覈對和監控服務器 生成服務器 顯然,我們有必要有各種服務器相互交談。需要將新版本升級到臨時服務器。日誌整理器需要從生產服務器提取日誌。我們很快意識到我們在管理訪問密鑰方面遇到了麻煩。每個服務器都有自己的密鑰對,可能還有自己的安全組。我們最終將* .pem文件從服務器複製到服務器,這種做法對安全性做出了嘲弄。構建服務器具有登臺服務器的訪問密鑰,以便通過ssh進行連接並推送新的構建版本。該臨時服務器同樣具有生產實例的訪問密鑰(一飲而盡!) 我做了一些廣泛的搜索在網絡上,但想不出真正找到任何人談論來管理這個問題一個明智的方式。與我們處理這個問題類似的設置的人怎麼樣?我們知道我們目前的工作方式是錯誤的。問題是 - 什麼是正確的方式? 感謝您的幫助! 謝謝管理EC2上的實例間訪問

[更新] 我們的情況很複雜,至少構建服務器需要從外部服務器(特別是github)訪問。我們正在使用Jenkins,並且post commit鉤子需要一個可公開訪問的URL。 @rook建議的堡壘方法在這種情況下失敗。

+1

+1好問題。 – rook 2012-04-03 02:14:58

回答

5

的處理,以EC2實例的集合訪問使用Bastion Host一個很好的方法。

您在EC2上使用的所有機器應禁止向互聯網開放SSH訪問,除了堡壘主機。創建一個名爲「Bastion Host」的新安全策略,並且只允許從堡壘到其他所有EC2實例的端口22進入。您的EC2集合使用的所有密鑰都位於堡壘主機上。每個用戶都有自己的帳戶給堡壘主機。這些用戶應該使用受密碼保護的密鑰文件對堡壘進行身份驗證。一旦他們登錄,他們應該可以訪問他們需要的任何密鑰來完成他們的工作。當某人被解僱時,您將他們的用戶賬戶移到堡壘。如果用戶從堡壘複製密鑰,那麼它們將無關緊要,因爲除非首先登錄堡壘,否則他們無法登錄。

+0

謝謝。請參閱我的問題 – anand 2012-04-10 11:06:01

+1

的更新@anand - 這仍然有兩種工作方式:1)GitHub提交掛鉤使用HTTPS,因此不受所有SSH的影響,如果您只是選擇打開端口443詹金斯(但繼續閱讀)。 2)更好的是堅持Rook對此的建議,這需要爲堡壘主機上的構建服務器設置反向代理服務器;這可能是易於還是有點根據環境有關,但GitHub的插件準備爲此,參見[防火牆內詹金斯(https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin #GithubPlugin-Jenkinsinsideafirewall)。 – 2012-04-10 13:45:44

+0

優秀。我目前在我的Jenkins服務器上有反向代理 - 沒有想到將它推入堡壘。謝謝! – anand 2012-04-12 09:39:04

0

創建兩個組密鑰對,一個用於您的臨時服務器,一個用於生產服務器。您可以爲開發人員提供登臺密鑰並將生產密鑰保密。

我會把新的基礎上,以S3和對機器上運行,從您的S3桶拉最新的代碼和安裝他們各自的服務器中perl腳本。這樣,您不必每次都手動將所有構建資源分配給它。您還可以使用某種連續的構建自動化工具來自動執行此過程,這些工具將構建並分別將構建轉儲到您的S3存儲桶。希望這會有所幫助..

+0

謝謝 - 我們已經在將從構建機推出到分段環境(S3或其他)的自動化過程中。由於各種原因,我們希望避免在生產機器上運行輪詢腳本。此外,您的方法仍然意味着將登臺服務器密鑰推送到每個生產實例。創建一個嵌入SSH密鑰的AMI會讓我們感到不舒服。所以密鑰問題的多個副本沒有解決 – anand 2012-04-10 11:12:29