我使用由Heroku主办的RoR,我想使用剪贴簿在s3上存储文件.我的源代码托管在
github上,是世界可读的.将钥匙与世界其他地方保密的最佳做法是什么?
PaperClip建议访问密钥存储在一个配置文件(或代码)中,所以例如我有:
PaperClip建议访问密钥存储在一个配置文件(或代码)中,所以例如我有:
file:config / s3.yml
access_key_id: my_access_key_id secret_access_key: my_very_secret_key bucket: bucket_name
Heroku通过向当地git提交代码,然后将其推送到Heroku.
由于我也使用github,我也推送相同的代码到github以及.这意味着我也在那里推密钥.
我正在使用一个世界可读的github帐户,所以如果我支付github我可以使一半的问题消失,但我仍然不满意的秘密钥匙在配置文件中的代码.我不知道这是否有更好的做法.
保持密钥秘密的最佳做法是什么,并仍然使用上述图书馆和服务列表?
BTW,我上周刚开始用ror和heroku,所以我可能被认为是新手,请体贴一下;)谢谢!
解决方法@H_404_17@
您需要使用您的英雄应用程序的ENV变量.
如果你做一个heroku配置,你可以访问所有的ENV变量.您只需添加一些并直接在您的应用程序中使用它.
有了这个技巧,您不需要更新代码来更改您的配置和配置,如果没有在您的代码库中定义.
在你的s3.yml你只需要做:
access_key_id: <%= ENV['S3_ACCESS_KEY'] %>
secret_access_key: <%= ENV['S3_SECRET_KEY'] %>
bucket: <%= ENV['S3_BUCKET_NAME'] %>
并在您的英雄应用程序中添加此ENV VARIABLE
heroku config:add S3_ACCESS_KEY='your_key'
heroku config:add S3_SECRET_KEY='your_secret'
heroku config:add S3_BUCKET_NAME='your_nucket_name'
如果你做一个heroku配置,你可以访问所有的ENV变量.您只需添加一些并直接在您的应用程序中使用它.
有了这个技巧,您不需要更新代码来更改您的配置和配置,如果没有在您的代码库中定义.
在你的s3.yml你只需要做:
access_key_id: <%= ENV['S3_ACCESS_KEY'] %> secret_access_key: <%= ENV['S3_SECRET_KEY'] %> bucket: <%= ENV['S3_BUCKET_NAME'] %>
并在您的英雄应用程序中添加此ENV VARIABLE
heroku config:add S3_ACCESS_KEY='your_key' heroku config:add S3_SECRET_KEY='your_secret' heroku config:add S3_BUCKET_NAME='your_nucket_name'