2009-11-22 63 views
1

我有多個開發人員正在開發的項目。我們都使用同一個git倉庫。如何將加密信息存儲在公共DVCS存儲庫中?

目前,我不將生產服務器配置存儲在存儲庫中,因爲配置文件包含數據庫憑證。

我想開始將這些配置存儲在存儲庫中,所以我在考慮在將配置文件保存在DVCS中之前對其進行加密。

  1. 你們認爲這個想法是什麼?
  2. 怎麼會這樣做呢?
+0

不完全確定這個過程,但它肯定會涉及合併管理器在某些時候處理這​​些加密(不可合併)的文件。請參閱http://stackoverflow.com/questions/1288480 – VonC 2009-11-22 19:43:07

+0

爲什麼要加密它們?你不相信你的開發者? – liori 2009-11-22 19:55:03

+0

我與來自世界各地的開發人員合作。我個人相信他們,但我不願意被證明是錯誤的。如果我被證明是錯誤的,它會在至少幸運的時間發生,並有可能產生最可怕的後果。我寧願管理自己的不確定性,也不希望相信沒有事情會發生。 – 2009-11-22 19:58:23

回答

5

爲什麼這些祕密需要存儲在公共存儲庫中?

我會使用完全不同的機制來分發這些祕密,只有那些需要訪問它們的管理員才能訪問這些祕密。

+0

像什麼?..... – 2009-11-22 20:31:19

+1

就像一個單獨的回購,只有管理員只訪問整個回購的祕密配置文件。或其他任何系統管理員使用的東西。想到Puppet和它的軟件配置的弟兄們。不過,這在系統管理員領域比編程領域更多。 – ndim 2009-11-22 20:40:17

+0

這可能是一個實際的解決方案,因爲那時我可以版本控制設置,但是它們將與源代碼分開版本化,這是一個問題。 – 2009-11-22 20:47:02

2

我們對配置文件中的密碼進行了加密,應用程序使用在運行時交互輸入的密鑰對它們進行解密。由於我們使用的配置系統,只有配置解析器需要修改;應用程序代碼本身不需要更改。

其主要缺點是我們使用公鑰算法,以便任何人都可以爲配置文件加密一個值,但只有授權用戶才能解密它們。這使得加密值變得更大(我們使用2048位RSA密鑰,並使用Base-64進行編碼),並且在配置文件中有一些醜陋之處。

我們總是小心地將元數據與加密值一起編碼。這標識了加密密鑰,使用的算法以及算法所需的參數。這樣,我們可以優雅地更改鍵或算法,並在一段時間內進行遷移。