带有 master.key 的 Rails 5.2 - Heroku 部署
Posted
技术标签:
【中文标题】带有 master.key 的 Rails 5.2 - Heroku 部署【英文标题】:Rails 5.2 with master.key - Heroku deployment 【发布时间】:2018-09-14 15:36:09 【问题描述】:Rails 5.2 通过使用了不起的credentials.yml
引入了加密机密功能。但我正在努力让它与 Heroku 一起工作。
现在是否有任何可用的策略来将 Rails 5.2 应用程序部署到 Heroku?
【问题讨论】:
【参考方案1】:你应该设置环境变量RAILS_MASTER_KEY
,或者在你的heroku web仪表板上,或者使用控制台:
$ heroku config:set RAILS_MASTER_KEY=<your-master-key>
示例:
$ heroku config:set RAILS_MASTER_KEY=123456789
(<
和 >
是占位符)
Rails 将检测此变量并将其用作您的主密钥(而不是在 master.key 文件中查找它)。
【讨论】:
@Gerry Rails 曾经让rails secret
生成新的密钥。有没有办法生成新的主密钥?
@Tallboy 是的,你可以运行bundle exec rails runner "puts ActiveSupport::EncryptedConfiguration.generate_key"
。只需考虑您将无法解密使用以前的密钥加密的任何文件。
我应该使用与生产环境相同的master.key
吗?如果我不希望本地开发人员能够加密我的生产机密怎么办?
@Tallboy 通常是的,您将在生产中使用相同的 master.key。如果您想保持敏感数据的私密性,您可以在服务器中设置环境变量,而不是将它们直接放在您的凭据文件中。
@BKSpureon 不,我只将它们用作占位符。【参考方案2】:
您还可以使用以下命令创建 Heroku RAILS_MASTER_KEY
,其内容为 config/master.key
:
heroku config:set RAILS_MASTER_KEY="$(< config/master.key)"
注意:确保您位于包含 Rails 应用程序的目录中。
【讨论】:
如果密钥与 git repo 中的加密文件一起保存,则没有使用加密机制的目的。如果有人可以访问您的源代码控制,他们会获得您的密钥 @JasonFB 你是对的。这就是为什么你应该使用环境变量,并像上面的例子一样配置它们。您可以在这里查看详细信息:devcenter.heroku.com/articles/…以上是关于带有 master.key 的 Rails 5.2 - Heroku 部署的主要内容,如果未能解决你的问题,请参考以下文章
Rails 5.2 无法使用 Sublime Text 打开 Rails 凭据
如何在 ActiveStorage (Rails 5.2) 中更新附件