Files
pet-project-server/docs/backlog/secrets-env-to-file.md
T
av 3b846536f9 backlog: заведён запрет секретов в выводе плейбуков
- `inv pl` идёт с `--diff`, и 14 задач в 12 плейбуках печатают отрендеренные
  секреты в терминал; `no_log` есть только в `roles/secrets`. Инвентарь,
  рычаги (`no_log`, `diff: false`, вынос в отдельный файл) и порядок — в задаче.
- Актуализирована `secrets-env-to-file`: список приложений сверен с шаблонами
  (tuwunel чистый, у gitea только SMTP), добавлен мотив с диффом.
2026-07-25 12:03:08 +03:00

37 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Секреты приложений через `*_FILE`, а не inline `environment:`
**Приоритет:** средний
miniflux сделан правильно — роль `secrets` кладёт каждую переменную vault в
отдельный файл, каталог монтируется `:ro`, а compose ссылается на `*_FILE`
(`files/miniflux/docker-compose.template.yml`). Остальные держат секреты прямыми
значениями в `environment:`:
- **outline** — пароль postgres, `SECRET_KEY`, `UTILS_SECRET`, секрет OIDC, SMTP
- **tududi** — session secret, секрет OIDC, ключ LLM, SMTP
- **wakapi** — salt паролей, секрет OIDC, SMTP
- **wanderer** — мастер-ключ meilisearch, ключ шифрования pocketbase
- **gramps** — `gramps_secret_key`, SMTP
- **gitea** — только SMTP (`postbox_pass`)
tuwunel из списка убран: в его compose секретов нет (сверено 2026-07-25). memos и
calibre тоже чистые.
Такие переменные читает любой член группы `docker`, любой процесс с доступом к
`/proc/<pid>/environ`, и они попадают в `docker inspect`. Где приложение умеет
`*_FILE` или конфиг-файл — постепенно перевести по образцу miniflux.
Второй мотив, найденный позже: пока секрет стоит прямым значением в шаблоне,
`ansible-playbook --diff` печатает его в терминал при каждом изменении файла.
Вынос в отдельный файл чинит это структурно — дифф compose остаётся читаемым, а
секретный файл рендерит роль `secrets` под `no_log`. Но покрывает только
`environment:`; конфиги (authelia, bifrost, backups, remembos) и общий запрет на
вывод — в [no-secrets-in-playbook-output](no-secrets-in-playbook-output.md), и
она идёт первой: там дёшево и закрывает всё сразу.
Из sec-ревью (fable, 2026-07-13). Связка с
[service-users-docker-group](service-users-docker-group.md).
Связано: files/outline, files/wakapi, files/tududi, files/wanderer, files/gramps,
files/gitea, files/miniflux (образец), roles/secrets.