到现在为止,我一直在处理我的app秘密:
在开发中:我的秘密以未加密的方式存储在我的secrets.yml文件中。 secrets.yml文件未提交给Github和 留在我的电脑上。
根据AWS的推荐,我有一些角色可以让我拥有开发特定的密钥。这允许将我的开发键限制为具有与生产键不同的范围的某些功能。
ENV["AWS_SES_KEY"]
中称为config/environments/production.rb
。我非常喜欢它,因为在我的计算机被盗的情况下,可以在AWS上删除随后变为损坏的开发密钥而无需触摸生产密钥。并且因为开发密钥可以限制在AWS的某个操作范围,所以它可以防止任何危险的更改(完整的桶擦除......)
现在我们有凭据,如果我没有弄错,所有密钥(开发和生产)都在同一个加密文件中。主密钥是现在播种到Heroku的唯一环境密钥。虽然我仍然需要本地密钥才能访问凭据。然后,如果我的计算机被盗,开发和生产密钥都会损坏,并且可能会为我的生产应用程序带来更高的风险。
新凭据功能是否缺少某些内容?有什么方法可以避免上述问题吗?
对于生产密钥,仍然使用secrets.yml
和生成密钥credentials.yml.enc
会有什么用呢?
答案 0 :(得分:0)
正如Rails 5.2.0的release notes所述,未来的意图是将secrets.yml
和secrets.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
时才需要主密钥。