Подтвердить что ты не робот

Ruby on Rails, Paperclip, Heroku, GitHub и AWS - ключи безопасности

Я использую RoR, размещенный в Heroku, и я хотел бы хранить файлы на s3 с помощью paperclip. Мой исходный код размещен на 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 на прошлой неделе, поэтому меня можно считать новым, пожалуйста, будьте внимательны;) Спасибо!

4b9b3361

Ответ 1

Вам нужно использовать переменную ENV из вашего приложения heroku.

Если вы создаете конфигурацию 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

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'

Ответ 2

Недавно Amazon выпустила официальный AWS SDK для Ruby. Он отлично работает с S3, поддерживает американские, европейские и японские экземпляры S3 из коробки и ухожен.

Я создал модуль хранения для Paperclip под названием paperclip-aws для работы с AWS SDK.

Не стесняйтесь использовать его. Я надеюсь, что это поможет.

Ответ 3

err.. нет другого способа, если вы используете герою. Вы должны положить все в репо и нажать на них.

Reg github, если вы собираетесь использовать публичные репозитории - "private", если вам нужны эти ключи, чтобы ваше приложение работало. Вы должны доверять своим членам команды, даже если вы предоставляете доступ к этому частному репозиторию github выбранным нескольким людям.

Я не знаю других идей.