Как хранить пароли в конфигурационных файлах Ruby-приложения?
Имеется Ruby(Sinatra)-приложение. В конфигурационных yml-файлах рядом с кодом хранится масса конфиденциальной информации, в открытом виде, в основном логины и пароли к внешним сервисам. Очевидно это не есть хорошо.
Собственно вопрос, какую методику применить к хранению всех этих настроек, какие паттерны сейчас используются в данных случаях?
1. Шифровать данные означает их расшифровывать. Ruby - скриптовый язык, в результате логика расшифровки на виду.
2. Хранить не пароли, а необратимые хеши паролей. Не вариант. В основном это пароли к внешним сервисам, которые принимают сами пароли, а не их модификации.
3. Хранить параметры в переменных среды ОС. Мне кажется это тоже самое, что хранить их в файлах. Или не прав? Тем более настроек много и они динамические. Как их выгружать и устанавливать после перезагрузки ОС?
Какие-то крайне секьюрные варианты не нужны. Достаточно обезопасить данные от лиц, имеющих доступ к файловой системе.
Буду благодарен за элегантные практики.
Ставьте на такие файлы ограниченные права на просмотр для всех пользователей кроме единственного вашего. И не давайте всем рута. ACL в файловых системах для этого и внедрен.