ruby-on-rails - 在 master.key 损坏的情况下,Rails 新凭据会产生更大的风险吗?

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

直到现在,我都以通常的方式处理我的应用程序 secret :

  • 开发中 :我的 secret 未加密地存储在我的 secrets.yml 文件中。 secrets.yml 文件没有提交到 Github 和
    留在我的电脑上。

    根据 AWS 推荐,我的角色允许我拥有特定于开发的 key 。这允许将我的开发 key 限制为与生产 key 具有不同范围的某些功能。
  • 生产中 :我的 key 存储在 Heroku 上并像 ENV["AWS_SES_KEY"] 一样被调用在 config/environments/production.rb .

  • 我非常喜欢它,因为如果我的计算机被盗,可以在 AWS 上删除随后损坏的开发 key ,而无需接触生产 key 。并且由于开发 key 可以限制在 AWS 的特定范围内,它可以防止任何危险的更改(完整的存储桶删除......)

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

    我在新凭据功能上缺少什么吗?有什么办法可以避免上述问题?

    仍然使用 secrets.yml 会很棒用于开发 key 和 credentials.yml.enc对于生产 key ,它是如何设计的?

    最佳答案

    release notes对于 Rails 5.2.0 状态, future 的意图是替换 secrets.ymlsecrets.yml.enccredentials.yml.enc :

    This will eventually replace Rails.application.secrets and the encrypted secrets introduced in Rails 5.1.


    credentials.yml.enc 有很明显的意义仅用于包含生产凭据,因为 Rails 建议在其中不包含特定于环境的 key ; IE。,
    # don't do this
    development:
      # ...
    
    production:
      # ...
    

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

    关于ruby-on-rails - 在 master.key 损坏的情况下,Rails 新凭据会产生更大的风险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50847451/

    相关文章:

    ruby-on-rails - 有人可以用清晰、简单的术语向我解释 collection_select 吗?

    ruby-on-rails - 使用 rbenv 和 rails 5.2 修复 'Your Ruby version is 2.4.4, but your Gemfile specified 2.5.1' 错误

    ruby-on-rails - 用于生产环境的 Rails 5.2 加密凭据

    ruby-on-rails - 显示带有表单错误的事件存储验证错误

    javascript - 带 Airbrake 的 Rails 应用程序 - 401 未经授权

    mysql - 是否需要在 Ruby on Rails 中迁移数据库?

    ruby-on-rails - 如何将 angularjs 资源用于 rails/RESTful 路由?

    ruby-on-rails - rails 3不适用于Windows 7

    ruby-on-rails - ActiveRecord::ConcurrentMigrationError:使用 mysql2 和 Rails 5.2

    rails-activestorage - ActiveStorage 获取脏对象,说明图像是否已更改