2014-11-04 46 views
1

我正在構建一個基於私有git存儲庫的持續集成部署。我的項目在資源目錄中包含一個未版本化的PK文件。當我手動部署時,這工作正常,我確保私鑰的副本位於任何工作站的路徑上。何處存儲用於持續集成(CI)部署的私鑰?

現在我正在從存儲庫進行部署,我很好奇在哪裏存儲密鑰。這是一個私人回購,我想我可以只是版本的PK,但我寧願不,如果有替代品。

任何提示或技巧?

更新:很抱歉,PK是Google API使用的服務帳戶。所以它必須在運行時提供給Java API庫。例如:

public void startGoogleDrive() { 
    HttpTransport httpTransport = new NetHttpTransport(); 
    JacksonFactory jsonFactory = new JacksonFactory(); 
    GoogleCredential credential = new GoogleCredential.Builder() 
      .setTransport(httpTransport) 
      .setJsonFactory(jsonFactory) 
      .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
      .setServiceAccountScopes(Arrays.asList(DriveScopes.DRIVE)) 
      .setServiceAccountUser(userEmail) 
      .setServiceAccountPrivateKeyFromP12File(
        new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH)) // <- private key file 
      .build(); 
} 

回答

2

是的,在Git存儲庫中保存憑據或其他敏感數據幾乎總是一個壞主意。

唯一的好做法,其中我知道的版本的東西如私鑰將它們放在一個configuration management政策的私人倉庫,如CFEnginePuppetAnsibleChefSalt。當配置管理系統守護進程運行時,它可以從存儲庫創建或更新密鑰。然後,如果偶然完成,即使這可能導致可能被濫用的鑰匙。

我個人不會將該密鑰保存在項目的源代碼庫中。當有人需要查看代碼但無法訪問密鑰時,您可能還會發現一個案例。理想情況下,密鑰應單獨部署到應用程序服務器,無論是手動還是通過配置管理系統。

+0

感謝您的修改答案並提醒Ed – Sam 2014-11-04 21:13:18

相關問題