隐藏 Rails 凭据

Hiding Rails Credentials

我有一个 Rails 6 应用程序。在我的凭据文件中,我有开发和生产 API 密钥。我希望能够隐藏生产 API 密钥,因为一些开发人员不需要访问凭据。

在 Rails 的早期版本中,我可以使用 <%= ENV["MY_VAR"] %> 获取环境变量并将其放入 secrets.yml 文件中。但是,Rails 凭证不支持在 yml 文件中执行 Ruby,这是有道理的,因为它是加密的,但这现在限制了阻止其他开发人员访问生产 API 密钥的能力。在整个 Rails 应用程序中是否没有硬编码 ENV["MY_VAR"]?这最终是我想要在我的凭据文件中完成的。

development:
    aws: 11111111
production:
    aws: <%= ENV["AWS_SECRET"] %>

您可以为每个环境生成凭据文件

rails credentials:edit --environment development
rails credentials:edit --environment production

这将创建凭据文件 config/credentials/development.yml.encconfig/credentials/production.yml.enc,以及 加密密钥 config/credentials/development.keyconfig/credentials/production.key

因此您可以与其他开发人员共享开发密钥而无需共享 production.key

查看此提交以获取更多详细信息:https://github.com/rails/rails/pull/33521