Я пытаюсь предоставить секретное значение скрипту через переменную среды, но не регистрирую его sudo
в auth.log
.
На данный момент у меня есть файл:
/etc/secret-key
export SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR
Этот файл принадлежит пользователю root: root (0400).
С помощью cron
и sudo
, Я могу запустить скрипт под www-data
user и укажите это значение.
5 * * * * root . /etc/secret-key; sudo -u www-data --preserve-env=SECRET_CONFIG_KEY /path/to/script
Но auth.log
файл затем содержит такие строки, как:
Aug 19 18:30:01 server sudo: root : TTY=unknown ; PWD=/root ; USER=www-data ; ENV=SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR ; COMMAND=/path/to/script
Это может прочитать любой пользователь adm
group и каждый день присылает мне электронные письма через LogWatch.
Я рад рассмотреть альтернативные подходы.
Основная функция заключается в предоставлении этого секретного значения скрипту с помощью www-data
account, где этой учетной записи предоставляется доступ к этому значению только по мере необходимости (учетная запись не должна иметь доступа для чтения к файлу секретного ключа).
В качестве примечания, www-data
учетная запись не может редактировать ни один из своих сценариев, учетная запись используется только для их запуска.
Вам, вероятно, следует использовать su
скорее, чем sudo
для этого.
Рассмотрим что-то вроде:
su www-data -w SECRET_CONFIG_KEY -c /path/to/script