策略

2017-10-09 148 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了。