- каждая запись каталога задач получила тип вместо тега kind: и префикса заголовка; секция роадмапа «Разработка» стала «Сопровождением», порядок секций канонический - поправлены протухшие факты: нереализованные маршруты Read API, MCP и `healthlog import`, словарь слоёв в инварианте, семантика гейта по покрытию диффа, периметр перестал дублировать security.md - замер слияния переведён с находки 49 на находку 54, заполнены Purpose спек storage и parsing
35 lines
2.7 KiB
Markdown
35 lines
2.7 KiB
Markdown
# ✨ Развести токены контуров и убрать секреты из репозитория
|
||
|
||
- **Тип:** feature
|
||
- **Категория:** Инфра
|
||
- **Зачем:** Проверка токенов выключена, config.docker.toml коммитится — так нельзя выезжать наружу
|
||
- **Теги:** goal:deploy
|
||
|
||
Сейчас проверка токенов выключена сознательно — доверенная локальная сеть, — и
|
||
`config.docker.toml` коммитится без секретов. Для локальной разработки это
|
||
правильно, но это же делает выезд наружу опасным: одна забытая настройка
|
||
открывает историю здоровья всему интернету.
|
||
|
||
**Контуров теперь два, а не один.** С появлением каталога
|
||
(`GET /api/v1/metrics`, change `2026-08-02-katalog-i-rod-agregacii`) заработал
|
||
токен чтения, и цена у контуров разная: открытый приём означает мусор во входе,
|
||
открытое чтение — выгрузку всей истории здоровья любому, кто нашёл порт. Сервис
|
||
предупреждает на старте обоими сообщениями (`write auth disabled`,
|
||
`read auth disabled`), образцы конфига цену называют комментарием — но отказа
|
||
старта нет, и это решение осталось здесь.
|
||
|
||
Решается перед деплоем, не раньше — так договорились.
|
||
|
||
Шаги:
|
||
- раздельные токены приёма и чтения, генерация и хранение вне репозитория;
|
||
- сервис громко предупреждает на старте, если проверка выключена (уже есть),
|
||
и **отказывается стартовать**, если адрес прослушивания публичный, а токенов
|
||
нет;
|
||
- проверка в гейте, что в коммит не уехал файл с токеном (частично закрыта
|
||
`gitleaks`).
|
||
|
||
Готово, когда запуск без токенов возможен только на localhost, а на rivendell
|
||
оба контура закрыты разными токенами.
|
||
|
||
Двигает строку «Завершения» цели: «Оба контура закрыты разными токенами, и без токенов сервис стартует только на localhost».
|