提交 Rails 的 credentials.yml.enc 文件是否安全?



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

公开提交是否安全?

我终于明白了。 首先阅读此 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时需要设置哪些值。

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

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

David Heinemeier Hansson在这里说的:

这些机密不应该承受测试或开发中的任何类型的攻击。

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

只有在生产环境(和衍生环境,如公开的测试版(中,秘密才真正需要保密。因此,我们可以简单地将此密钥插入到新的平面凭据.yml.enc文件中。

最后他提到:

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

希望它能有所帮助。有关更多信息,请遵循此内容。

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

master.key你必须保密!!它可能会解密您的文件。

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

最新更新