- сплошная простановка no_log сделана, инвентарь рендеров заменён на историю - осталась проверка в lefthook/CI и перенос miniflux_postgres_user и miniflux_postgres_database из vault в открытые group_vars - возврат читаемого диффа отдан серии secrets-file-*, приоритет понижен до среднего
3.2 KiB
Никаких секретов в выводе плейбуков: защита от дрейфа
Приоритет: средний
inv pl всегда запускает ansible-playbook --diff, поэтому любая задача
template/copy, чей целевой файл содержит переменную vault, печатает значение
в терминал. Скроллбек терминала, мультиплексор, лог CI, транскрипт агента — всё
это места, куда расшифрованному значению попадать не должно, и куда оно попадает
бесплатно.
Сплошная простановка no_log: true сделана (коммит b7b1f49, 2026-07-25): все
задачи-рендеры файлов с секретами закрыты, сегодня no_log стоит в четырнадцати
плейбуках и в roles/secrets. Осталось то, ради чего задача и заводилась в
категории «держится проверкой, а не вниманием»: сейчас правило живёт только во
внимании, и следующее приложение заведут по образцу без no_log.
Что осталось
- Проверка в lefthook или CI: если шаблон ссылается на переменную, которой
нет в открытых
group_vars/vars, задача, которая его рендерит, обязана иметьno_log. - Убрать единственное исключение из правила. Compose miniflux сознательно
оставлен без
no_log— он тянет из vault толькоminiflux_postgres_userиminiflux_postgres_database, а это имя пользователя и имя базы, не секреты. Чище не заводить исключение в проверке, а перенести обе переменные из vault вgroup_vars/all/main.yml. Правка в зашифрованном файле, поэтому за пользователем.
Попутно стоит выяснить, почему молчит правило no-log-password в ansible-lint:
похоже, оно смотрит на список модулей с параметром password, а не на содержимое
шаблонов — тогда на него в этой задаче полагаться нельзя.
Что сюда больше не входит
Возврат читаемого диффа там, где файл смешанный (compose, конфиг authelia) —
это вынос секретов в отдельные файлы, и он живёт отдельной серией задач
secrets-file-*, по одной на приложение. Матрица возможностей приложений —
в справке.
Связано: lefthook.yml, tasks.py (inv pl), roles/secrets (образец),
playbook-miniflux.yml, vault-password-storage,
narrow-secret-scopes.