5

到目前为止,我一直在以通常的方式处理我的应用程序机密:

  • 开发中:我的秘密未加密地存储在我的 secrets.yml 文件中。secrets.yml 文件未提交到 Github 并保留在我的计算机上。

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

  • 在生产中:我的密钥存储在 Heroku 上并像ENV["AWS_SES_KEY"]in一样调用config/environments/production.rb

我非常喜欢它,因为万一我的计算机被盗,随后损坏的开发密钥可以在 AWS 上擦除,而无需触摸生产密钥。而且由于开发密钥可以限制在 AWS 的特定范围的操作,它可以防止任何危险的更改(完整的存储桶擦除......)

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

新凭据功能是否缺少我的东西?有什么办法可以避免上述问题?

secrets.yml仍然用于开发密钥和生产密钥会有什么credentials.yml.enc好处,这是它的意图吗?

4

1 回答 1

0

正如 Rails 5.2.0 的发行说明所述,未来的意图是替换secrets.ymland :secrets.yml.enccredentials.yml.enc

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

包含生产凭证的意义非常明确,credentials.yml.enc因为 Rails 建议不要在其中包含特定于环境的密钥;IE,

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

production:
  # ...

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

于 2018-07-06T22:16:43.123 回答