gendesign/docs/runbooks/basic_auth_management.md
lekss361 b89b34c300 feat(security): закрыть gendsgn.ru basic_auth gate (multi-user, 11 users)
Добавить Caddy basic_auth gate на gendsgn.ru и :80 для pilot demo 28.05.2026.
Только /health и /preview/* остаются публичными. Управление пользователями
через scripts/auth/ скрипты + git history как audit trail.
2026-05-23 10:55:03 +03:00

64 lines
2.7 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.

# 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 <username> "<comment>"`
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 <username>`
2. Commit → PR → merge → deploy
Caddy начнёт отклонять запросы этого юзера сразу после reload (через ~1 мин после merge).
## Сменить пароль юзеру
1. `./scripts/auth/remove_user.sh <username>` + `./scripts/auth/add_user.sh <username> "<comment>"` в одном PR
## Посмотреть текущих юзеров
```bash
./scripts/auth/list_users.sh
```
## В случае утечки credentials
1. `./scripts/auth/remove_user.sh <affected_username>` СРАЗУ
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.