【问题标题】:Is it safe to commit Rails' credentials.yml.enc file?提交 Rails 的 credentials.yml.enc 文件是否安全?
【发布时间】:2018-05-28 03:26:02
【问题描述】:

我刚刚创建了一个新的 Rails 项目,它附带了这个 credentials.yml.enc 文件。

公开提交是否安全?

【问题讨论】:

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


    【解决方案1】:

    David Heinemeier Hansson 说了什么here

    这些秘密不应该在测试或开发中承受任何形式的攻击。

    据我所知,您不应该在这里保留该死的秘密凭据,然后公开发布是件好事。

    只有在生产环境(和衍生环境,如公开的测试版)中,秘密实际上需要保密。所以我们可以简单地将这个秘密插入到新的平面 credentials.yml.enc 文件中。

    最后他提到:

    注意:我们应该只保留 Rails.secrets 和朋友。 Rails.credentials 设置将是一种新的并发方法。所有新应用都会使用它,但我们不需要破坏现有应用。

    希望它会有所帮助。更多信息,请关注this

    【讨论】:

      【解决方案2】:

      credentials.yml.enc 为什么不呢?这是加密文件,没有密钥就没有任何信息。

      但是master.key你一定要保密!!!它可能会解密您的文件。

      【讨论】:

        【解决方案3】:

        我终于明白了。 请先阅读https://blog.saeloun.com/2019/10/10/rails-6-adds-support-for-multi-environment-credentials.html

        对于testdevelopment 环境,您可以简单地删除master.key,您会发现rails s 效果很好。 您可以运行rails console,然后运行Rails.application.credentials.config 来查看该值。

        但是如果你有一个错误的master.key 并运行rails s,你会得到一个错误。

        但是如果你删除了master.key,你会发现rails s -e production不起作用。

        如果master.key 的值正确,则可以运行EDITOR=vim rails credentials:edit 进行编辑。

        如果你没有正确的master.key值,当你运行EDITOR=vim rails credentials:edit时, 它会为您生成一个新的master.key,但不幸的是master.key 是错误的。 这是合理的,因为它使credentials.yml.enc 无法解密,除非您已经获得了正确的master.key

        因此,您可以删除 credentials.yml.encmaster.key 并运行 EDITOR=vim rails credentials:edit 以生成新对。 但在你这样做之前,你应该删除master.key并运行rails console,然后运行Rails.application.credentials.config 了解运行 EDITOR=vim rails credentials:edit 时需要设置哪些值。

        production env 中的所有 Rails 实例都应具有相同的 credentials.yml.encmaster.key

        所以你应该在源代码中保留credentials.yml.enc

        【讨论】:

          【解决方案4】:

          您可以将credentials.yml.enc 文件推送到生产环境。只需删除master.key。它们旨在被推向生产。但是,如果您对此持怀疑态度,请将其保存到某个本地服务器,并在部署 make 代码以提取文件和 master.key 时。如果您愿意,可以使用 Capistrano 任务来完成。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-01-17
            • 1970-01-01
            • 1970-01-01
            • 2011-07-02
            • 2023-03-30
            • 1970-01-01
            • 1970-01-01
            • 2013-09-29
            相关资源
            最近更新 更多