2012-01-17 40 views
3

我的Google App Engine應用程序包括我不想簽入源代碼管理(即Git)的特權憑證(如OAuth和cookie簽名密鑰)。使用Google App Engine管理版本控制之外的安全配置JDK

我曾考慮將這些文件作爲系統屬性或環境變量存儲在appengine-web.xml文件中,但是該文件包含了許多其他我想要版本的內容。哪裏可以存儲「祕密」應用程序數據的好地方,以便我可以輕鬆地將其從源代碼控制中排除?

+0

嗨@mustpax,你有沒有找到辦法做到這一點? – Jaap 2015-09-12 17:03:06

回答

0

把這些東西放到另一個文件/目錄中,並用.gitignore排除它們。

+0

我已經瞭解'.gitignore'。我想找出圍繞這一領域的最佳做法。我應該將這些東西存儲在未版本化的Java文件中嗎?有沒有辦法從'appengine-web.xml'包含另一個文件? – mustpax 2012-01-17 23:59:10

+0

我不知道這種情況下的最佳做法,但我會選擇適合您最想存儲的數據的文件格式。可能是您從應用程序加載的XML文件。 – copy 2012-01-18 17:35:25

1

我通常會將憑據存儲在安全存儲庫(只能由超級用戶訪問的文件中),然後生成後生成腳本。在源代碼控制中,我在屬性文件中有一個虛擬密碼,然後在生成後運行後構建腳本,並將虛擬密碼替換爲真實密碼。這樣密碼就不在源代碼控制中,而是在每次構建時顯示出來。這確實取決於自動構建/部署過程,但它非常有效。

0

對於Java,我推薦使用spring-boot的策略externalized configuration。這個想法是一堆配置資源,其中最重要的是覆蓋下面的配置資源。

  1. 命令行參數
  2. 系統性能
  3. 環境變量
  4. 本地配置文件(application.yml或application.properties)
  5. 配置文件在類路徑

無。4通常位於用戶主目錄的隱藏文件夾中,例如~/.myapp/application.yml。只有用戶可以讀取該文件。

對於你的問題,非祕密的,版本控制的屬性直接放在源代碼中(上面的第5項)。祕密也可以放在5中,但是有虛擬值。真正的祕密在運行時從1,2,3或4覆蓋虛擬值。

您可以使用spring-boot或按照相同的策略編寫自己的代碼。