Files
pet-project-server/docs/backlog/narrow-secret-scopes.md
T
av 0b2a3bd19c backlog: удалена задача local-image-build, она реализована
- все три приложения (homepage, transcriber, remembos) собирают образы
  локально ролью app_image, реестр и yc_*-переменные выведены из оборота
- ссылавшиеся задачи обновлены: narrow-secret-scopes и
  no-secrets-in-playbook-output больше не ждут эту работу
2026-07-25 16:26:31 +03:00

43 lines
3.4 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.
# Вывести из оборота секреты с широкими правами
**Приоритет:** Средний
Показательный случай — `yc_oauth_token`: OAuth-токен всего аккаунта Yandex Cloud
(реестр, виртуалки, биллинг) ради одной операции, `docker login` в плейбуках
homepage, transcriber и remembos. 24 июля он вместе с ещё 52 переменными ушёл
открытым текстом в транскрипт: цена одной такой утечки — весь аккаунт, а не один
сервис. Из этого репозитория он уже выведен (см. ниже), но такой перекос радиуса
надо найти и снять у остальных переменных.
Принцип, к которому идём: секрет даёт доступ ровно к тому, ради чего заведён.
Всё, что шире, — либо заменяется на скоупированный доступ (сервисный аккаунт с
минимальными ролями вместо токена аккаунта, отдельный ключ на бакет вместо
общего), либо выводится из оборота совсем, либо риск принимается явно и
записывается.
Ядро задачи уже закрыто: homepage, transcriber и remembos собирают образы
локально ролью `app_image`, `docker_login` из плейбуков ушёл, а `yc_oauth_token`
вместе с `yc_container_registry*` удалён из vault (коммит `6a0d786`).
Дальше — ревизия остального: пройти по `group_vars/all/secrets.yml` и проставить
каждой переменной радиус («один сервис» / «весь аккаунт у провайдера» / «все
бэкапы»). Кандидаты в широкие видны уже по назначению — ключи S3 для restic,
доступ к Postbox, — но разбирать их надо в этой задаче, а не заранее.
Готово, когда у каждой переменной vault записан радиус, а каждая широкая либо
заменена на скоупированную, либо помечена принятым риском с причиной.
Держать в уме: [gitea-runner-on-demand](gitea-runner-on-demand.md) заводит новый
доступ к API Yandex Cloud (старт и остановка ВМ). Если она поедет раньше — сразу
сервисный аккаунт с минимальными ролями, а не переиспользование OAuth-токена,
иначе задача вернётся тем же текстом.
Ротация уже утёкших значений — отдельный сюжет, он ведётся в
`SECRETS-ROTATION.md` (файл вне git). Здесь речь не о смене значения, а о
сокращении того, что это значение открывает.
Связано: group_vars/all/secrets.yml, playbook-homepage.yml,
playbook-transcriber.yml, playbook-remembos.yml,
[vault-password-storage](vault-password-storage.md),
[справка по файловым секретам](../drafts/secrets-file-support.md).