Secrets.yml与ENV变量与选项?

时间:2016-05-27 14:35:05

标签: ruby-on-rails ubuntu

作为一名没有CS学位的新手,它是区分最佳实践与惯例与安全风险的难点。

我将secrets.yml.rbenv-vars结合用于我的rails应用程序,因为它似乎很容易。我知道我可以使用像费加罗这样的东西基本上做同样的事情,但什么是最好的做法和最安全的?对于开发,我只需将我的密钥直接放在secrets.yml中,并使用env-vars进行生产设置。

有人可以解释1)使用env-vars的原因而不仅仅是使用secrets.yml(假设它的git-ignored!SO链接受到欢迎)2)哪种是最佳实践和常见约定?

1 个答案:

答案 0 :(得分:1)

两者都很常见。从安全角度来看,如果有人能够访问您的环境变量,他们可能会访问您的代码。代码运行后,无论哪种方式,值都在内存中。

您将看到,默认情况下,secrets.yml配置为从生产环境中获取SECRET_KEY_BASE:

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

有一个很好的理由是应用程序在生产中运行。使用此功能可以更改密钥,并重新启动应用程序,而无需修改任何文件。对于在Cloud Foundry,Heroku等中运行的应用程序,这可能非常方便。