策略

2017-10-09 198 views
0

我們目前使用的「nconf中」新公共管理模塊中使用的NodeJS一個JSON配置文件來處理環境的具體配置操作環境的NodeJS具體配置(密鑰等)。這個配置然後被檢入一個git倉庫並被應用程序使用。但是,隨着應用程序的增長,我們發現配置文件現在擁有機密憑證信息。我想找出在每個環境中處理這些憑證配置的好方法。我在許多論壇上讀到過,這些論壇在啓動節點服務器時提供這些憑據作爲環境運行時間參數,而不是將它們存儲在源存儲庫中。這很好,如果你手動啓動服務器,但是我們正在計劃使用dockerized自動化容器部署。在這種情況下,我們必須在某個地方存儲憑據配置,因此需要尋求建議,以解決處理這種情況的好策略。策略

+0

你嘗試創建您的碼頭工人祕密'.env'文件? – imcvampire

+0

我們剛剛開始研究dockerizing應用程序。我沒有親自使用Docker的祕密,但我最初的閱讀表明我們可以創建SECRET鍵/值並通過Docker撰寫將它們注入到應用程序中。我希望能夠一次提供整個配置文件來獲取所有創建和散列的鍵和值。 – Dev

回答

0

我認爲這取決於你使用的基礎設施。例如,如果你使用heroku,你可以在那裏設置ENV_VARS。 相同的,如果您有自己的服務器,你可以設置這些變量,你才知道誰有權訪問該管理員。

0

我已經做了與Heroku的和.ENV節點庫類似的東西。

這個庫時,服務器一旦發現從.ENV文件開始推一組環境變量。

僅在本地環境中創建.env文件,並將其設置在.gitignore文件中,以便它不會上傳到遠程。

.ENV文件看起來像這樣:

AMAZON_CLIENT_ID=ABCDEFG 
AMAZON_CLIENT_SECRET=CATDOGCOW 

我喜歡把我的所有配置變量或常量到一個單一的文件,這樣我就可以找到他們,而不是周圍的代碼普遍。

所以我做了一個名爲config.js,看起來像這樣

require('dotenv').config({silent: true}); 

module.exports = { 
    AMAZON_CLIENT_ID:process.env.AMAZON_CLIENT_ID, 
    AMAZON_CLIENT_SECRET:process.env.AMAZON_CLIENT_SECRET, 
} 

至少在Heroku上,我可以設置手動Heroku的網站上所有的環境變量,我會假設你可以做的文件Docker中類似的東西。

然後你在你的代碼的任何地方使用它像:

var config = require('./config'); 
//some random code 

if(req.query.amzclientid == config.AMAZON_CLIENT_ID) 

我知道這是不是多克,但如果你有興趣知道更多的上述情況,我寫了一個tutorial了。