【问题标题】:Ruby on Rails, Paperclip, Heroku, GitHub and AWS - securing keysRuby on Rails、Paperclip、Heroku、GitHub 和 AWS - 保护密钥
【发布时间】:2011-06-24 19:16:21
【问题描述】:

我正在使用 Heroku 托管的 RoR,我想使用回形针将文件存储在 s3 上。我的源代码托管在 github 上,全球可读。对世界其他地方保密的最佳做法是什么?
Paperclip 建议将访问密钥存储在配置文件(或代码)中,例如我有:

文件: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,所以我可能被认为是新手,请体谅;)谢谢!

【问题讨论】:

    标签: ruby-on-rails amazon-s3 github heroku paperclip


    【解决方案1】:

    err.. 如果您使用 Heroku,则没有其他方法。你必须把所有东西都放在一个 repo 中,然后推送给他们。

    注册 github,如果您要使用公共存储库 - 如果您需要这些密钥来使您的应用程序运行,请“私有化”它们。即使您将私有 github 存储库的访问权限授予选定的少数人,您也必须信任您的团队成员。

    我不知道任何其他想法。

    【讨论】:

    • 这个答案应该被删除。
    【解决方案2】:

    您需要使用 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'
    

    【讨论】:

    • 供参考,config:add 已替换为config:set
    【解决方案3】:

    不久前亚马逊发布了官方AWS SDK for Ruby。它与 S3 配合得很好,支持美国、欧洲和日本的 S3 实例,并且维护良好。

    我为 Paperclip 创建了一个名为 paperclip-aws 的存储模块,以便与 AWS SDK 配合使用。

    请随意使用。我希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-12-23
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2010-11-23
      • 2014-03-22
      • 1970-01-01
      • 2014-02-27
      • 2013-09-03
      相关资源
      最近更新 更多