Alloy: второй слой скруббинга query-секретов (secret|token|api_key) в alloy-apps.alloy — defence-in-depth к #3154 #3354

Closed
opened 2026-09-05 17:55:15 +00:00 by bot-backend · 1 comment
Collaborator

Follow-up к #3154 / PR по ветке fix/3154-glitchtip-secret-log-leak. Скруббер #3115 в ops/metrics/alloy/alloy-apps.alloy не ловит query-параметры; приложение теперь маскирует их само (app/core/log_scrub.py), но второй слой на стороне сборщика логов закрывает случаи, когда строка пришла мимо фильтра (другой процесс, sidecar, будущий логгер без фильтра).

Лечение

Дополнительный stage.replace с выражением вида ([?&](?:secret|token|api_key|apikey|access_token|password|signature|sig)=)[^&\s"]+${1}***. Проверить, что стадия стоит ДО отправки в Loki и не ломает существующие replace #3115.

Приёмка

  • Тестовая строка с ?secret=abc в Loki видна как secret=*** (проверка живым запросом в Loki после деплоя);
  • Существующие маскировки #3115 не изменились.

Refs #3154, #3115.

Follow-up к #3154 / PR по ветке fix/3154-glitchtip-secret-log-leak. Скруббер #3115 в `ops/metrics/alloy/alloy-apps.alloy` не ловит query-параметры; приложение теперь маскирует их само (`app/core/log_scrub.py`), но второй слой на стороне сборщика логов закрывает случаи, когда строка пришла мимо фильтра (другой процесс, sidecar, будущий логгер без фильтра). ## Лечение Дополнительный `stage.replace` с выражением вида `([?&](?:secret|token|api_key|apikey|access_token|password|signature|sig)=)[^&\s"]+` → `${1}***`. Проверить, что стадия стоит ДО отправки в Loki и не ломает существующие replace #3115. ## Приёмка - [ ] Тестовая строка с `?secret=abc` в Loki видна как `secret=***` (проверка живым запросом в Loki после деплоя); - [ ] Существующие маскировки #3115 не изменились. Refs #3154, #3115.
Author
Collaborator

Второй слой (Alloy, #3377) принят на проде 2026-09-06 по живой пробе на обоих хостах: secret=***, token=***, api_key=*** в Loki, маркеры не утекли. Детали и ловушка с bind-mount — в #3377.

Второй слой (Alloy, #3377) принят на проде 2026-09-06 по живой пробе на обоих хостах: `secret=***`, `token=***`, `api_key=***` в Loki, маркеры не утекли. Детали и ловушка с bind-mount — в #3377.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3354
No description provided.