You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为多套生产级环境配置各自独立的Rails Credentials

Rails多环境凭证隔离配置方案

Rails 5.2及以上版本原生支持按环境隔离独立凭证,你当前遇到的多环境共享凭证问题,核心是AWS ElasticBeanstalk实例没有正确匹配运行环境对应的凭证配置,按以下步骤操作即可实现完全隔离:

操作步骤

1. 生成本地各环境专属凭证文件

分别执行以下命令生成四个环境的独立加密凭证与对应密钥:

  • rails credentials:edit --environment dev
  • rails credentials:edit --environment sandbox
  • rails credentials:edit --environment staging
  • rails credentials:edit --environment production

执行完成后,会在项目config/credentials目录下生成对应环境的[环境名].yml.enc加密配置文件,以及[环境名].key解密密钥文件。

注意:.key后缀的文件默认会被Git忽略,禁止将其提交到代码仓库,避免密钥泄露。

2. 配置ElasticBeanstalk各环境变量

进入AWS ElasticBeanstalk控制台,分别打开四个环境的配置 > 软件 > 环境变量配置页,添加两组变量:

  • 针对dev环境:
    • 添加RAILS_ENV变量,值设为dev
    • 添加RAILS_MASTER_KEY变量,值为本地config/credentials/dev.key文件的完整内容
  • 针对sandbox环境:
    • 添加RAILS_ENV变量,值设为sandbox
    • 添加RAILS_MASTER_KEY变量,值为本地config/credentials/sandbox.key文件的完整内容
  • 针对staging环境:
    • 添加RAILS_ENV变量,值设为staging
    • 添加RAILS_MASTER_KEY变量,值为本地config/credentials/staging.key文件的完整内容
  • 针对production环境:
    • 添加RAILS_ENV变量,值设为production
    • 添加RAILS_MASTER_KEY变量,值为本地config/credentials/production.key文件的完整内容

3. 部署验证

重新部署各环境的应用后,可进入对应环境的Rails控制台执行Rails.application.credentials.config,确认返回的配置为当前环境专属的凭证内容即可。

低版本Rails兼容方案

如果你的Rails版本低于6.0,没有原生环境凭证功能,可以使用config/secrets.yml按环境划分配置,所有敏感值通过EB环境变量传入,示例配置:

development:
  secret_key_base: <%= ENV["DEV_SECRET_KEY_BASE"] %>
sandbox:
  secret_key_base: <%= ENV["SANDBOX_SECRET_KEY_BASE"] %>
staging:
  secret_key_base: <%= ENV["STAGING_SECRET_KEY_BASE"] %>
production:
  secret_key_base: <%= ENV["PROD_SECRET_KEY_BASE"] %>

内容的提问来源于stack exchange,提问作者Phillip Musiime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:54:03