尝试隐藏AWS和JWT密钥/秘密时,无法使Rails 5.2凭据正常工作。没有获得零的方法

时间:2019-03-18 17:09:54

标签: ruby-on-rails token credentials rails-activestorage

我已经花了几个小时,但是无法提出任何解决方案。我对文档进行了搜索,以查看缺少的内容,但找不到任何内容。

我将JWT和ActiveStorage与Amazon S3结合使用。在提交给Github之前,我需要隐藏这些键。以下是许多示例,这是我的credentials.yml.enc文件的外观:

amazon:
key: <my access key for AWS S3>
secret: <my secret id for AWS S3>

jwt: <my jwt token encode/decode password>

我将其保存在我的storage.yml文件中

test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
amazon:
  service: S3
  access_key_id: <%= Rails.application.credentials[:amazon][:key] %>
  secret_access_key: <%= Rails.application.credentials[:amazon][:secret] %>
  region: us-east-1
  bucket: your_own_bucket

我也尝试过

<%= Rails.application.credentials[Rails.env.to_sym][:amazon][:key] %>

如果我转到控制台并尝试Rails.application.credentials[:amazon][:key]Rails.application.credentials.amazon[:key]或任何其他变体,则总是为零。

Rails.application.credentials

给我:

 => #<ActiveSupport::EncryptedConfiguration:0x00007faf1284aa80 
@key_path=#<Pathname:/Users/demiansims/Development/Beastly/beastly- 
backend/config/master.key>, @content_path=# 
<Pathname:/Users/demiansims/Development/Beastly/beastly- 
backend/config/credentials.yml.enc>, @env_key="RAILS_MASTER_KEY", 
@raise_if_missing_key=false, @encryptor=# 
<ActiveSupport::MessageEncryptor:0x00007faf1287bb80 
@secret=">^\x04\x9Bh\xFEb\x00\x8B\xB3O5\xDC\x8E\xA6b", 
@sign_secret=nil, @cipher="aes-128-gcm", @aead_mode=true, 
@verifier=ActiveSupport::MessageEncryptor::NullVerifier, 
@serializer=Marshal, @options={:cipher=>"aes-128-gcm"}, @rotations=[]>, 
@config={}

2 个答案:

答案 0 :(得分:0)

我认为您的credentials.yml.enc格式存在问题,例如:

amazon:
  key: <my access key for AWS S3>
  secret: <my secret id for AWS S3>
  jwt: <my jwt token encode/decode password>

因此,您可以像Rails.application.credentials.amazon[:key]

那样访问密钥

答案 1 :(得分:0)

您的凭据文件可能没有保存您的更改。我有同样的问题。我使用的是sublime,EDITOR="subl --wait" bin/rails credentials:edit会调出编辑器,但保存文件时无法识别。我从来没有解决过这个问题,所以我切换到了vi。 EDITOR="vi" bin/rails credentials:edit并解决了问题。现在一切正常。如果您不熟悉像我这样的vi命令,了解以下信息将很有帮助:

i->“插入”将允许使用箭头键四处移动,删除和添加代码
esc->完成编辑后,请点击逃逸
:wq->这将保存并退出文件。命中转义后,只需输入:wq

希望这对某人有帮助。