【发布时间】:2014-12-17 08:47:09
【问题描述】:
在我最近的一个项目中,我从.gitignoring 开始使用包含机密和环境变量的文件。因此,除了包含第三方机密的文件(例如 Stripe、Twitter API 或 Facebook Graph 或内部 api_keys,也就是 ./config/initializers/secret_token.rb 文件)之外,整个项目都提交给 repo。
现在我正处于项目即将上线的时刻(兴奋!),我需要使用 Capistrano 将所有环境变量移植到生产服务器上,即cap production deploy.
[编辑 4:2018 年] 在 initializers/secret_token.rb 的情况下,很明显 Rails 4.1 有一种处理secrets.yml file 的新方法,它将 :secret_key_base 值拉入生产服务器。在这里,我推荐使用capistrano-secrets-yml gem,它开箱即用,使用起来非常简单。
剩下的是将 API_KEYS、APP_ID 等其他秘密传送到生产服务器而不将任何这些秘密检查到存储库中的方式。如何做到这一点,最推荐/最安全的方式或最佳实践是什么?
注意:随着问题的进展,我将对其进行编辑/我会变得更加清晰。
EDIT1:服务器是 DigitalOcean 上的 Ubuntu/Linux VPS [对 Denise 的回答,如下]。
EDIT2:env_variables/secrets 可以通过 secrets.yml 传递到服务器吗?会话的 Secret_token 毕竟不是唯一的秘密! [在Edit3上回答]
EDIT3:是的!根据blog,可以通过 secrets.yml 发送 API_keys。有时间会分享我的发现。 :-)
【问题讨论】:
标签: ruby-on-rails security capistrano