# Caddy basic_auth — управление пользователями Snippet: `caddy/users.caddy.snippet` Scripts: `scripts/auth/{add,remove,list}_user.sh` Git history = audit trail для всех изменений пользователей. ## Добавить юзера 1. `./scripts/auth/add_user.sh ""` 2. Скрипт сгенерит 16-char password, забери его в безопасное место 3. Commit `caddy/users.caddy.snippet` → PR → merge → GHA deploy → Caddy reload 4. Выдай username/password стейкхолдеру через защищённый канал (Telegram secret chat / Signal) Шаблон письма: `docs/PILOT_ACCESS.md` ## Удалить юзера 1. `./scripts/auth/remove_user.sh ` 2. Commit → PR → merge → deploy Caddy начнёт отклонять запросы этого юзера сразу после reload (через ~1 мин после merge). ## Сменить пароль юзеру 1. `./scripts/auth/remove_user.sh ` + `./scripts/auth/add_user.sh ""` в одном PR ## Посмотреть текущих юзеров ```bash ./scripts/auth/list_users.sh ``` ## В случае утечки credentials 1. `./scripts/auth/remove_user.sh ` СРАЗУ 2. Force-commit + push → merge ASAP (reviewer быстрее через personal DM) 3. Caddy reload проверить вручную: `docker compose -f docker-compose.prod.yml exec caddy caddy reload --config /etc/caddy/Caddyfile` 4. Уведомить остальных стейкхолдеров ## Аудит логи - Access log: `/var/log/caddy/gendsgn.ru.log` (все запросы, JSON) - Auth audit: `/var/log/caddy/auth_audit.log` (authentication events, JSON) ```bash # Просмотр auth событий в реальном времени docker compose -f docker-compose.prod.yml exec caddy tail -f /var/log/caddy/auth_audit.log | jq # Посмотреть кто логинился сегодня docker compose -f docker-compose.prod.yml exec caddy grep "$(date +%Y-%m-%d)" /var/log/caddy/auth_audit.log | jq '.user_id' ``` ## Caddy reload после ручной правки на VPS ```bash # Если snippet изменён вручную на VPS (минуя GHA): docker compose -f docker-compose.prod.yml exec caddy caddy reload --config /etc/caddy/Caddyfile ``` Стандартный путь (через PR + GHA deploy) делает reload автоматически. ## Phase 2 (TODO) GlitchTip forwarder sidecar — отдельный PR. Будет парсить `auth_audit.log` и отправлять события в GlitchTip для dashboard + alerting при brute-force.