Max*_*nce 5 ruby-on-rails ruby-on-rails-5.2
直到现在,我仍以通常的方式处理我的应用程序秘密:
开发中:我的机密未加密地存储在secrets.yml文件中。secrets.yml文件未提交到Github并保留在我的计算机上。
根据AWS建议,我的角色可以让我拥有特定于开发的密钥。这样可以将我的开发键限制为某些功能,这些功能的范围与生产键不同。
ENV["AWS_SES_KEY"]在Windows中一样调用config/environments/production.rb。我非常喜欢它,因为万一我的计算机被盗了,可以在AWS上擦除开发密钥,然后这些密钥会损坏,而无需触摸生产密钥。并且由于开发密钥可以限制在AWS的特定操作范围内,因此可以防止任何危险的更改(完全删除存储桶...)
现在我们有了凭据,如果我没记错的话,所有密钥(开发和生产)都在同一个加密文件中。主密钥是现在播种到Heroku的唯一环境密钥。虽然我仍然需要在本地使用此密钥才能访问凭据。然后,如果我的计算机被盗,开发密钥和生产密钥都将损坏,并可能对我的生产应用程序产生更高的风险。
我的新凭证功能是否缺少某些功能?有什么办法可以避免上述问题?
仍secrets.yml用于开发人员密钥和credentials.yml.enc生产密钥的功能是什么,这是什么目的?
正如Rails 5.2.0 的发行说明所述,未来的目的是将secrets.yml和替换secrets.yml.enc为credentials.yml.enc:
这最终将取代 Rails.application.secrets 和 Rails 5.1 中引入的加密密钥。
有一种非常明确的感觉,即credentials.yml.enc仅包含生产凭据,因为 Rails 建议不要在其中包含环境特定的密钥;IE,
# don't do this
development:
# ...
production:
# ...
Run Code Online (Sandbox Code Playgroud)
至于config/master.key“腐败”风险,我不知道如何回答。仅当在生产模式下运行时才需要主密钥。您还可以将主密钥存储在RAILS_MASTER_KEY环境变量中。在开发过程中,如果您想编辑credentials.yml.enc.