如果master.key损坏,Rails新凭据会产生更大的风险?

时间:2018-06-13 22:58:17

标签: ruby-on-rails ruby-on-rails-5.2

到现在为止,我一直在处理我的app秘密:

  • 在开发中:我的秘密以未加密的方式存储在我的secrets.yml文件中。 secrets.yml文件未提交给Github和 留在我的电脑上。

    根据AWS的推荐,我有一些角色可以让我拥有开发特定的密钥。这允许将我的开发键限制为具有与生产键不同的范围的某些功能。

  • 正在制作:我的密钥存储在Heroku上,并在ENV["AWS_SES_KEY"]中称为config/environments/production.rb

我非常喜欢它,因为在我的计算机被盗的情况下,可以在AWS上删除随后变为损坏的开发密钥而无需触摸生产密钥。并且因为开发密钥可以限制在AWS的某个操作范围,所以它可以防止任何危险的更改(完整的桶擦除......)

现在我们有凭据,如果我没有弄错,所有密钥(开发和生产)都在同一个加密文件中。主密钥是现在播种到Heroku的唯一环境密钥。虽然我仍然需要本地密钥才能访问凭据。然后,如果我的计算机被盗,开发和生产密钥都会损坏,并且可能会为我的生产应用程序带来更高的风险。

新凭据功能是否缺少某些内容?有什么方法可以避免上述问题吗?

对于生产密钥,仍然使用secrets.yml和生成密钥credentials.yml.enc会有什么用呢?

1 个答案:

答案 0 :(得分:0)

正如Rails 5.2.0的release notes所述,未来的意图是将secrets.ymlsecrets.yml.enc替换为credentials.yml.enc

  

这最终将取代Rails.application.secrets和Rails 5.1中引入的加密机密。

有一个非常明确的含义,credentials.yml.enc仅包含生产凭证,这是因为Rails建议中不要包含特定于环境的密钥。即

# don't do this
development:
  # ...

production:
  # ...

至于config/master.key“腐败”风险,我不确定如何解决。只有在生产模式下运行时才需要主密钥。您还可以将主密钥存储在RAILS_MASTER_KEY环境变量中。在开发中,仅当您要编辑credentials.yml.enc时才需要主密钥。