如何向heroku添加API密钥和其他安全内容?

时间:2010-09-21 20:49:27

标签: github heroku

我在某处读过但似乎无法找到将秘密密钥添加到Heroku的位置,而无需将其放入源代码git存储库中?

我猜这有助于在我推入github时保持安全。

我该怎么做才有意义呢?

2 个答案:

答案 0 :(得分:2)

http://docs.heroku.com/config-vars

然后将开发密钥添加到初始化程序:

#config/initializers/keys.rb

development:
  SOME_KEY = 'abc123' #not your production key

testing:
  SOME_KEY = 'abc123' #not your production key

#production:
  #blank

可选择将初始化程序添加到.gitignore。不需要,因为您的生产密钥未存储。

答案 1 :(得分:1)

正如Mark所建议的,最好的方法是Heroku环境变量。您可以阅读关于它们的here

为此,您需要使用Heroku CLI,您需要根据自己的操作系统下载并安装它。不要忘记通过以下三个步骤来设置Heroku CLI:

$ heroku login $ cd ~/myapp $ heroku create (your Heroku app name)

现在是时候设置配置变量了。命令是:

$ heroku config:set <ENVIRONMENT_VARIABLE>=<VALUE>

例如,我要将我的API密钥保存为配置变量:

$ heroku config:set DARKSKY_API_KEY=8e11111111162218d22222222229cc22222c6

,现在该在服务器端代码中使用它了。对于Nodejs,您可以通过以下方式访问它们:

process.env.DARKSKY_API_KEY

像这样:

  const weatherURL =`https://api.darksky.net/forecast/${process.env.DARKSKY_API_KEY}/${latitude},${longitude}?units=si`;

对于其他语言(例如Ruby,Java),请选中此link

您可以通过输入以下内容查看配置变量:

$ heroku config

或删除配置变量:

$ heroku config:unset DARKSKY_API_KEY

此外,我还在考虑一个用于heroku配置变量的.env文件,我们可以在本地对其进行编辑,然后将其上传到heroku。最后,我想出了这个解决方案。

要从heroku本地保存cofig var并能够在文件中本地更改它们,以后需要时可以运行:

$ heroku config | sed 's/: */=/g; /^=/d' >> HEROKU_CONFIG_ENV.env

其中HEROKU_CONFIG_ENV.env只是一个文件名,您可以随意命名。该脚本将HEROKU_CONFIG_ENV.env文件保存在项目的根目录中。

修改密钥后,是时候将它们上传到Heroku并通过运行以下命令来设置heroku配置变量:

$ heroku config:set $(cat HEROKU_CONFIG_ENV.env | sed '/^$/d; /#[[:print:]]*$/d') 

就是这样。