2014-11-04 5 views
0

У меня есть файл yml, содержащий определенные учетные данные и ключи. Поэтому для дополнительной безопасности я задался вопросом, было бы неплохо загрузить его на s3 и получить доступ с помощью частного url или через объект aws.Как читать файл yml, загруженный в aws s3

Я попытался указать URL-адрес в своем файле development.rb, чтобы загрузить файл, который не работал.

Далее я попытался создать объект aws и получить доступ к файлу в ведро s3.

s3 = AWS::S3.new(access_ key_id: 'xxx', secret_access_key: 'yyy') 

s3.buckets['my-bucket'].objects['file_name.yml'] 

Я попытался поместить URL-адрес, имя файла без .yml, чтобы получить доступ к файлу и прочитать его. Но он продолжает возвращать меня пустым {}. Имеет ли это какое-либо отношение к разрешению url/файла? Как я могу это достичь?

Это первый раз, когда я использую aws, и не уверен, что мой подход верен или если это лучший способ защитить конфиденциальные данные. Plz направьте меня на то, как этого добиться.

Благодаря

+1

Зачем было безопаснее размещать его на S3? Это, по моему мнению, создаст только один дополнительный путь атаки. Если кто-то завладеет вашим исходным кодом, они получат вашу access_key и смогут получить ваши другие секреты? – Albin

+0

Если вы используете aws-sdk v1, вы можете сделать что-то вроде yfile = YAML.load (bucket.read), а затем вы сможете получить доступ к ключам файла yml, выполнив yfile ['secret_access_key'], например .. . Надеюсь, поможет – nisevi

ответ

1

Я хотел бы использовать следующий камень для этого, намного лучше, чем реализация YAML.

https://github.com/bkeepers/dotenv

установить его и добавить к вам Gemfile.

затем vim .env или создайте этот новый файл, используя свой выбор.

Добавить ключи:

S3_BUCKET=YOURS3BUCKET 
SECRET_KEY=YOURSECRETKEYGOESHERE 

и сохранить его.

Теперь вы можете позвонить из своего приложения, где вам нужны ключи S3.

ENV['S3_BUCKET'] 
ENV['SECRET_KEY'] 

После того, как его толкнул Heorku, просто обновляли переменные окружения, не нужно толкать свои секреты Github.