隐藏生产轨道中的钥匙4

时间:2014-12-01 13:29:59

标签: ruby-on-rails api security ruby-on-rails-4 amazon-web-services

我是rails的新手,我正在将代码发送到Amazon Web Services。我想知道,隐藏或加密密钥的最佳方法是什么(例如,对于Mandrill),因此您的应用程序的所有功能都可以在线工作,但您不会暴露任何私钥?

到目前为止,在开发过程中,我将我的密钥保存在我的bash配置文件中并在本地工作正常。

非常感谢您的建议!

3 个答案:

答案 0 :(得分:1)

所以,我想到了使用费加罗的宝石,但我最终使用了sstephenson的rbenv-vars: https://github.com/sstephenson/rbenv-vars

On the Amazon Server, I made a directory:
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/rbenv-vars.git
$ rbenv rehash

Then, on the AWS server, I used vim to create a file:
$ vim .rbenv-vars
$ rake secret in your project directory to get a SECRET_KEY_BASE=place key here

然后我将.rbenv-vars添加到.gitignore。 当然,您不希望将这些密钥发送给Github。

在此文件中,您还可以将密钥放在他们驻留在服务器上的位置以执行其工作。

答案 1 :(得分:0)

看看使用环境变量!这个网站真的帮助我http://railsapps.github.io/rails-environment-variables.html

答案 2 :(得分:0)

通常的做法是设置environment variables。如果你曾经使用过Heroku,你可以在设置面板中看到有一些。

config/secrets.yml中,对于生产环境,设置密钥的默认方法是env var,因为那里有一些erb <%= ... %>代码。你可以在那里更改关键字。

要在每次重新启动终端时设置值,可以将rake secret RAILS_ENV=production命令的值保存在名为.bash_aliases的文件中(仅存在于linux中)或其他一些脚本中在shell启动时调用。

在该文件中,输入:export KEYWORD='whatever the value is'并瞧!

现在,如果你printenv KEYWORD查看存储在名为KEYWORD的env var中的值,它就会在那里。