Передача пароля в переменную среды так же безопасна, как если бы программа прочитала его из файла. Только процессы, выполняющиеся под одним и тем же пользователем, могут читать среду процесса , и этим процессам разрешено в любом случае читать одни и те же файлы.
Обратите внимание, что это отличается от передачи пароля в командной строке. Аргументы командной строки доступны для чтения всем процессам, запущенным на одном компьютере (за исключением мер по усилению защиты), а не только процессам, выполняющимся от одного и того же пользователя.
Если вы передаете переменную через среду, будьте осторожны, если программа запускает другие программы. Эти другие программы наследуют среду своих родителей. Так что не делайте этого, если вы боитесь, что другие программы могут случайно утечь содержимое своего окружения.
Недостаток в вашем сценарии - «создать подходящую переменную среды при настройке серверной системы». Переменная среды - это динамическое свойство процесса. Вы не можете создать его при настройке системы, если под настройкой вы подразумеваете что-то, что переживает перезагрузку. Что вы имеете в виду, по- видимому , что администратор организовал для этого переменного будет присутствовать в среде , когда некоторый вход пользователя в системе . Это делается с помощью конфигурационного файла (обычно ~/.pam_environment
или ~/.profile
или файл читать ~/.profile
). Таким образом, это решение, по сути, не перемещает пароль из файлов конфигурации.
Настройка параметров так, чтобы пароли находились в среде пользователя во время входа, не является хорошей идеей. Это означает, что каждый процесс, запущенный от имени этого пользователя, будет иметь секрет, поэтому он уязвим для утечки в любом месте.
Пароль должен быть помещен в файл, который находится отдельно от файлов конфигурации, которые находятся под контролем версий, и от обычных механизмов развертывания. Можно в любой момент поместить пароль в среду, если это удобно, но это следует делать для как можно меньшего набора программ.