带有 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

&lt;&gt; 是占位符)

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) 中更新附件

Rails 5.2 + Trix + ActiveStorage

在 Rails 5.2 中禁用活动存储

将 Rails 5.2 升级到 6.0.0 后内存泄漏

ruby Rails 5.2枚举新用法