TL; DR
Існує ціла низка причин використання змінних середовища замість файлів конфігурації, але дві найпоширеніші з них, які слід випускати з уваги, - це корисність конфігурації поза діапазону та розширене розділення між серверами, програмами чи організаційними ролями. Замість того, щоб представити вичерпний перелік усіх можливих причин, я відповідаю саме на ці дві теми у своїй відповіді і злегка торкаюся їх наслідків для безпеки.
Конфігурація поза діапазону: відокремлення секретів від вихідного коду
Якщо ви зберігаєте всі свої секрети у файлі конфігурації, вам доведеться поширювати ці секрети на кожному сервері. Це або означає перевірку секретів в контролі редагування поряд з кодом, або наявність повністю окремого сховища або механізму розповсюдження секретів.
Шифрування ваших секретів насправді не допомагає вирішити це. Все, що потрібно зробити - це підштовхнути проблему до одного видалення, тому що тепер вам доведеться турбуватися і про управління ключами, і про розповсюдження!
Коротше кажучи, змінні середовища - це підхід до переміщення даних по серверу або за програмою з вихідного коду, коли ви хочете відокремити розробку від операцій. Це особливо важливо, якщо ви опублікували вихідний код!
Удосконаліть розділення: сервери, програми та ролі
Хоча ви, безумовно, можете мати файл конфігурації для зберігання своїх секретів, але якщо ви зберігаєте секрети у вихідному коді, у вас є проблема специфіки. Чи є у вас окрема гілка чи сховище для кожного набору секретів? Як ви гарантуєте, що правильний набір секретів потрапляє на потрібні сервери? Або ви знижуєте безпеку, маючи "секрети", які скрізь однакові (або читати всюди, якщо вони є всі в одному файлі), і, отже, становлять більший ризик, якщо якісь системи безпеки будь-якої системи не спрацюють?
Якщо ви хочете мати унікальні секрети на кожному сервері або для кожного додатка, змінні середовища усувають проблему необхідності управління безліччю файлів. Якщо ви додасте новий сервер, додаток або роль, вам не доведеться створювати нові файли чи оновлювати старі: ви просто оновлюєте оточення відповідної системи.
Роздуми про безпеку
Хоча ретельне вивчення безпеки ядра / пам’яті / файлів не підходить для цієї відповіді, варто зазначити, що змінні середовища, що належним чином реалізовані, не менш безпечні, ніж «зашифровані» секрети. У будь-якому випадку цільова система все ж має зберігати розшифровану таємницю в пам'яті в якийсь момент, щоб використовувати її.
Варто також зазначити, що коли значення зберігаються в енергонезаленій пам'яті на даному вузлі, на диску немає файлу, який можна скопіювати та атакувати в автономному режимі. Це, як правило, вважається перевагою секретів у пам'яті, але це, звичайно, не є переконливим.
Питання про змінному середовищі в порівнянні з іншими методами секретів-менеджментом дійсно більше про безпеку і практичності компроміси , ніж про абсолюту. Ваш пробіг може відрізнятися.