Добавить Caddy basic_auth gate на gendsgn.ru и :80 для pilot demo 28.05.2026. Только /health и /preview/* остаются публичными. Управление пользователями через scripts/auth/ скрипты + git history как audit trail.
64 lines
2.7 KiB
Markdown
64 lines
2.7 KiB
Markdown
# 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.
|