Rails 6.2中加密凭证的演变

201 阅读5分钟

写一篇文章

注册

登录

寻找开发者和导师社区帖子博客注册登录

[

](www.codementor.io/projects?re…)

爱德华-詹姆斯

关注

Rails 6.2中加密凭证的演变

发表于 10月27日, 2021

Evolution of Encrypted Credentials in Rails 6.2

作者:Ritu Chaturvedi

你的博客 加密凭证的概念随着Rails版本的每一次更新而演变并获得更好的形态。最近,Rails 6.2为秘笈功能带来了许多这样的更新。让我们进一步分析和讨论加密凭证,如何阅读它们,它们的优点,以及最后如何管理一个秘密密钥库。

加密凭证的演变

加密凭证是在Rails 5.1中引入的,目的是为所处理的秘密带来更多的安全性。在这个版本中,这些被称为 "secrets",并通过以下方式引用

_secrets.yml.enc_文件处理秘密以及加密密钥。

在Rails 5.1之前处理秘密

在这个版本的Rails之前,有两种方法来提交秘密。

  • 第一种方法是将秘密存储到_secrets.yml_文件中,从环境变量中读取秘密,并将_secrets.yml_文件提交到版本库中。虽然这种方法很容易操作,但它有很高的安全风险,因为使用的任何宝石都可以转储环境变量。由于数据是公开的,没有经过加密,所以任何访问版本库的人都可以读到。
  • 第二种方法是将所有秘密存储在_secrets.yml_文件中,不提交到版本库中。

在Rails 5.1中处理秘密

默认情况下,从这个版本的Rails开始,秘密被作为secrets.yml文件与加密密钥一起传递。如果没有这个密钥,存储在文件中的秘密将看起来像一些垃圾字符。要启动使用secrets,用户需要运行。

这将创建两个文件:config/secrets.yml.key_和_config/secrets.yml.enc。_密钥_文件将保存秘密密钥,用于解密_enc_文件中的数据。

Rails 5.2中的加密凭证

作为对旧版秘密处理的更新,这个Rails版本删除了纯文本秘密,只允许加密的凭证。凭证存储在_config/credentials.yml.enc中,_而密钥则存储在_config/master.key_中。因此,用户可以将代码和凭证一起部署,并将所有凭证存储在一个地方。

在这里,多环境凭证是通过明确指定来处理的,而配置是通过提及_access_key_id_来访问的。

Rails 6.1中加密的多环境凭证

最新的更新使得每个环境的凭证文件都是独立的。这一内置功能需要为每个凭证文件提供单独的加密密钥,从而保证了更多的安全性。

一个全局的凭证文件足以应付多种环境。而当环境被传递时,将创建两个文件。

下面是一个如何工作的例子。

如果环境文件丢失或没有创建,将使用默认的_credentials.yml.enc_文件。

另外,_config/credential/prod.yml.enc文件_将被提交到版本库,而_config/credential/prod.key_文件则不会。

Rails 6中的附加组件

  • 现在可以将凭证存储在你选择的位置。这一点在运行时明确提到。

_config.credentials.content_path_和_ _

config.credentials.key_path

请确保保存有效的密钥和凭证,以避免在运行代码时出现错误。

  • 处理本地环境凭证,使用

_config/credentials/environment.key_和_ _

config/master.key

  • 下面的命令告诉Rails在路径config/redentials/local.yml.enc而不是config/redentials/development.yml.enc中搜索凭证文件。

我们的最新指南《6.2版Rails加密凭证》提供了对Rails凭证的有趣窥探。

加密凭证的优势

加密的多环境凭证的主要优点如下。

  • 安全。每个环境都有独立的加密密钥,因此更安全
  • 易于部署:由于变量可以和代码一起移动,所以部署变得更加容易。
  • 只需上传一次密钥就足够了
  • 该解决方案适用于任何Ruby on Rails应用程序。

总结

Rails正在不断提高框架的效率和可扩展性。随着多环境证书的启用,在多个平台和POD中使用的应用程序发现,保持代码的简单性和可访问性更加容易。

知道如何使用Engine Yard Kontainers连接到你的数据库,启用Rails凭证以提高安全性。

要了解更多关于旧版本凭证的信息,请查看Rails 5.1上的加密Rails秘诀

RubyRuby onRailsRails5Rails6DevOps

报告

喜欢这篇文章吗?如果有帮助,请给Edward James一个赞。

分享

邓小平

关注

发现并阅读Edward James的更多文章

开始

喜欢这个帖子吗?

请为爱德华留下喜欢和评论

成为第一个分享您意见的人

支持GitHub口味的markdown

提交

显示更多回复