如何在Rails中存储全局api密钥

时间:2016-08-30 14:15:20

标签: ruby-on-rails git api credentials api-key

我有一个全局api密钥,用于验证对我的服务器api的请求。

因此api密钥必须存储在我的rails应用程序或服务器上。

快速搜索后,大多数人似乎建议将密钥存储在.yml文件中并将其加载到您的应用程序中。他们声称这是安全的,因为.yml文件没有被检查到git / source控件。

显然你应该将.yml文件添加到.gitignore,否则会添加git。

但如果你这样做,那么如果.yml文件没有签入git并且服务器上不存在,那么如何在部署(capistrano)之后加载文件?

这是一个示例railscast,演示了如何将密钥存储在.yml文件中:

http://railscasts.com/episodes/85-yaml-configuration-file?autoplay=true

2 个答案:

答案 0 :(得分:0)

Capistrano将直接在生产中推送您的secrets.yml文件,而无需通过git

bundle exec cap production setup
  • 另一种解决方案是将您的密钥放入环境变量中:例如,在网络界面中我在cli Heroku上很容易做到这一点(我使用此方法)

  • 有些会谈还说要将你的密钥放在一个单独的git仓库中,并且访问权限非常有限。部署脚本从两个存储库部署

  • 您还可以在密钥文件和真实密钥文件之间创建符号链接(在app_folder / shared / key.yml中)。如this post

  • 中所述

答案 1 :(得分:0)

使用ENV vars是处理配置和机密的最强大,跨平台且安全的方法。

  • 没有意外泄露源代码控制秘密的风险。
  • 没有意外将错误的配置上传到生产的风险。
  • 无需重新部署应用程序即可完成配置更改。
  • 每个开发人员,服务器群集等都可以拥有自己的配置。

https://12factor.net/config