一千萬個為什麽

搜索

Ansible - 私人git存儲庫 - SSH代理轉發與復制私人SSH密鑰



我最近開始和Ansible一起玩,看起來非常好。我沒有太多的DevOps經驗,從來沒有真正處理任何復雜的情況。我開始創建我的Ansible手冊來替換我當前的部署工具 - 部署PHP。不幸的是,我被困在克隆git庫中。現在,我知道我需要添加一個公用密鑰才能訪問git存儲庫,這就是我的問題。

我應該使用SSH代理轉發(這種方式我可以使用本地SSH密鑰),還是應該在我的可靠項目中存儲私有SSH密鑰(加密,添加到源代碼管理)並將其使用Ansible復制到我的目標節點?我知道這個問題可能非常廣泛,所以我感興趣的是這兩種方法的安全含義。

轉載註明原文: Ansible - 私人git存儲庫 - SSH代理轉發與復制私人SSH密鑰

一共有 4 個回答:

如果你的git repos是一個私人github,你可以使用 github方法(部署密鑰非常強大)。

如果您的回購站不在github上托管,或者他們不提供只讀部署密鑰功能,那麽您提到的兩個選項都是有價值的。

單一的DevOps家夥

如果你是這個項目的唯一工作人員,並且你的機器/機器是你唯一可以運行的人(沒有像詹金斯和朋友那樣的CD工具),那麽你可以使用代理轉發選項:很可能你忘記你的私鑰不加密。

小團隊

如果你是一組在同一個Ansible手冊上工作的人或者多個運行手冊的人,那麽你有兩個選擇:

我絕不會把我個人的私鑰放在任何可能不安全的地方。保險櫃加密與使用它的人一樣好,並且在明文中有很多密鑰/密碼:)

我應該使用SSH代理轉發(這種方式我可以使用我的本地   SSH密鑰)

是的,那可能是一個選擇

我應該存儲私人SSH密鑰(加密,添加到源代碼管理)   在我的可靠項目中,並使用Ansible將其復制到我的目標節點?

沒有

https://serverfault.com/questions/823956/ansible-security-best-practices

For servers, don't allow root access via ssh at all. Many audits scoff at this.

For ansible, let every admin use their own personal account on each target server, and let them sudo with passwords. This way 沒有 password is shared between two people. You can check who did what on each server. It's up to you if personal accounts allow login on password, ssh key only, or require both.

總之,使用帶密碼的ssh密鑰。讓每個用戶使用他們自己的ssh密鑰。切勿允許通過ssh訪問sudo。

在一種情況下,您可以講述您的私鑰:如果您配置您的存儲庫以便它只允許讀取特定密鑰,並且您不必擔心存儲庫可公開讀取。在這種情況下,您可以輕松存儲您的私鑰 - 顯然,無需密碼即可使用一次性密鑰。但正如我所說,只有當您對該存儲庫的公開訪問權限時才有效。

如果情況並非如此,那麽您可能會陷入SSH代理程序。這是不理想的,因為 root 可以使用套接字,但是如果您處於一種仁慈的環境中(即任何地方都沒有可攻擊的web服務器),那麽它應該是可以的。