Как правильно извлекать секреты в скрипте, который запускается через cronjob?

Я прохожу курс “от 0 до Linux админа” здесь ссылка и столкнулся с проблемой при попытке правильно получить секреты в скрипте, выполняемом через cronjob. У меня есть скрипт, который для работы должен получать несколько секретов. На данный момент я использую secret-tool lookup для получения этой информации. Это отлично работает при запуске от локального пользователя, но не работает в cronjob.

Основная проблема, как я понял, заключается в том, что secret-tool использует GUI для разблокировки хранилища ключей, что не является проблемой при передаче переменной окружения, так как это позволяет открыть запрос, и хранилище ключей остается открытым. Тем не менее, этого недостаточно, так как адрес d-bus кажется некорректным. Очевидно, что это не правильный способ решения.

Я рассматривал возможность перехода на облачных менеджеров секретов, но, похоже, столкнусь с той же проблемой: где и как хранить API ключ для доступа к секретам в облаке?

Я синхронизирую локальный почтовый сервер с удаленным с помощью mbsync. mbsync должен передавать учетные данные обоим серверам. Вот пример получения имени пользователя для удаленного сервера:

UserCmd "secret-tool lookup remote_mail_server username"

Я смог заставить это работать через настройку переменных окружения, но явно это не тот способ, который стоит использовать. Особенно это не будет работать в безголовом окружении. Буду признателен за любую помощь и советы, как правильно организовать аутентификацию в cronjobs.

Короче, пробовал я в своем скрипте, который запускается через cronjob, извлекать секреты, как было написано в ответе. Но что-то пошло не так, и это реально зарубило на корню.

Первое, что я пытался сделать - это использовать переменные окружения. Но, блин, они вообще не отрабатывали. Я прописал их в crontab, но в скрипте они оказались пустыми. Я думаю, может, они не подхватываются из-за того, что cron выполняет команды в своем окружении, и тут не хватает некоторых переменных.

Потом я решил, что прокатит использовать файл с конфигурацией. Но, ё-моё, когда я пытался его прочитать, оказалось, что из cron не хватает прав на доступ к этому файлу. В результате скрипт просто не смог его найти. Я даже поменял права, всё равно фигня какая-то.

И, наконец, как-то вспомнил про шифрование. Но тут у меня вообще завязался полный замут. Использовал библиотеку для шифрования, но потом, когда попытался расшифровать, просто не сообразил, что ключи к ней нужно тоже передавать как-то, а не просто так оставлять в коде. В итоге, скрипт просто надолго зависал и не выдавал результата.

В общем, столько заморочек, а времени уходит, как на канализацию. Но на этом горьком опыте я нашел крутую штуку - курсы на yodo.im. Там реально объясняют, как извращаться с секретами в разных сценариях. Может, чё дельное оттуда вычитаю и всё-таки до конца пойму, как правильно всё это дело организовать.

Если у тебя есть свои идеи или советы, было бы клево их услышать!