Введення пароля в змінну середовища так само безпечно, як і програма прочитати його з файлу. Тільки процеси, що працюють як один і той самий користувач, можуть читати середовище , і ці процеси дозволяють читати ті самі файли в будь-якому випадку.
Зауважте, що це відрізняється від передачі пароля в командному рядку. Аргументи командного рядка читаються всіма процесами, що працюють на одній машині (забороняють заходи загартовування), а не лише процесами, що працюють як один і той же користувач.
Якщо ви передаєте змінну через середовище, будьте обережні, якщо програма запускає інші програми. Ці інші програми успадкують батьківське середовище. Тому не робіть цього, якщо ви боїтесь, що інші програми можуть випадково просочити вміст свого середовища.
Недоліком у вашому сценарії є "створити відповідну змінну середовища, коли серверна система налаштована". Змінна середовища є динамічною властивістю процесу. Ви не можете створити її під час налаштування системи, якщо ви, маючи на увазі, маєте на увазі щось, що переживе перезавантаження. Ви маєте на увазі, що, мабуть, адміністратор організував присутність цієї змінної у середовищі, коли певний користувач входить у систему. Це робиться через файл конфігурації (як правило, ~/.pam_environment
або ~/.profile
файл, прочитаний з ~/.profile
). Таким чином, це рішення насправді не висуває пароль із файлів конфігурації.
Налаштування речей таким чином, щоб паролі знаходилися в середовищі входу користувача - це не дуже гарна ідея. Це означає, що кожен процес, що працює як цей користувач, матиме секрет, тому він вразливий до витоку в будь-якому місці.
Пароль слід вводити у файл, який не відповідає файлам конфігурації, які знаходяться під контролем версій, та звичайними механізмами розгортання. Добре ставити пароль в оточення в якийсь момент, якщо це зручно, але це слід робити для якнайменшого набору програм.