2

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

公开提交是否安全?

4

4 回答 4

3

这里David Heinemeier Hansson什么:

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

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

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

最后他提到:

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

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

于 2018-05-28T04:21:30.813 回答
2

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

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

于 2018-05-28T05:14:39.600 回答
2

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

对于testdevelopmentenv,你可以简单地删除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.encandmaster.key并运行EDITOR=vim rails credentials:edit以生成新的对。但在你这样做之前,你应该删除master.key并运行rails console,然后运行Rails.application.credentials.config以了解运行时需要设置的值EDITOR=vim rails credentials:edit

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

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

于 2021-10-13T06:22:36.673 回答
1

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

于 2021-10-13T20:22:41.080 回答