Ruby on Rails,Paperclip,Heroku,GitHub和AWS – 保护密钥
我正在使用Heroku托管的RoR,我想使用paperclip在s3上存储文件。 我的源代码托管在github上,并且具有全局可读性。 将密钥与世界其他地方保密的最佳做法是什么?
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,我可以解决一半的问题,但我仍然不满意代码中的配置文件中的密钥。 我不知道是否有更好的做法。
保持密钥保密并仍使用上述库和服务列表的最佳做法是什么?
顺便说一下,我上周才开始使用ror和heroku所以我可能会被认为是newbe,请体谅;)谢谢!
您需要使用heroku应用程序中的ENV变量。
如果你做了一个heroku配置,你可以访问所有的ENV变量。 您只需添加一些并直接在您的应用程序中使用它。
使用此技巧,如果未在代码库中定义,则无需更新代码即可更改配置和配置。
在你的s3.yml你只需要做:
access_key_id: <%= ENV['S3_ACCESS_KEY'] %> secret_access_key: <%= ENV['S3_SECRET_KEY'] %> bucket: <%= ENV['S3_BUCKET_NAME'] %>
并在您的heroku应用程序中添加此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'
不久前,亚马逊发布了适用于Ruby的官方AWS SDK 。 它适用于S3,支持美国,欧洲和日本的S3实例,并且维护良好。
我已经为Paperclip创建了一个名为paperclip-aws的存储模块,可以与AWS SDK一起使用。
随意使用它。 我希望它会有所帮助。
错误..如果你使用heroku,没有别的办法。 你必须把所有东西都放在一个仓库中并推送给他们。
Reg github,如果你打算使用公共回购 – 如果你需要这些密钥来使你的应用程序工作,那么“私有”它们。 即使您向选定的几个人提供对该私人github回购的访问权限,您也必须信任您的团队成员。
我不知道任何其他想法。
- Rails:允许下载存储在S3上的文件,而不向用户显示实际的S3 URL
- 与Amazon S3和Cloudfront的CORS
- 在aws-s3 gem和right_aws gem之间的Rails Paperclip冲突。 怎么解决?
- 使用Ruby将大文件上传到S3失败,出现内存不足错误,如何在块中读取和上载?
- 有没有办法在推送到heroku时将资产管道资产资产转到s3?
- Excon ::错误::禁止(预期(200)实际(403禁止)
- 在rails中将对象上传到Amazon s3时添加Tag
- 如何设置Amazon S3,paperclip和ENV变量
- Rails错误 – 无法加载此类文件 – aws-sdk(您可能需要安装aws-sdk gem)