Some checks failed
Deploy on push / deploy (push) Failing after 39s
### 🚨 CRITICAL Security Fixes - **🔒 Open Redirect Protection**: Добавлена строгая валидация redirect_uri против whitelist доменов - **🔒 Rate Limiting**: Защита OAuth endpoints от брутфорса (10 попыток за 5 минут на IP) - **🔒 Logout Endpoint**: Критически важный endpoint для безопасного отзыва httpOnly cookies - **🔒 Provider Validation**: Усиленная валидация OAuth провайдеров с логированием атак - **🚨 GlitchTip Alerts**: Автоматические алерты безопасности в GlitchTip при критических событиях ### 🛡️ Security Modules - **auth/oauth_security.py**: Модуль безопасности OAuth с валидацией и rate limiting + GlitchTip алерты - **auth/logout.py**: Безопасный logout с поддержкой JSON API и browser redirect - **tests/test_oauth_security.py**: Комплексные тесты безопасности (11 тестов) - **tests/test_oauth_glitchtip_alerts.py**: Тесты интеграции с GlitchTip (8 тестов) ### 🔧 OAuth Improvements - **Minimal Flow**: Упрощен до минимума - только httpOnly cookie, нет JWT в URL - **Simple Logic**: Нет error параметра = успех, максимальная простота - **DRY Refactoring**: Устранено дублирование кода в logout и валидации ### 🎯 OAuth Endpoints - **Старт**: `v3.dscrs.site/oauth/{provider}` - с rate limiting и валидацией - **Callback**: `v3.dscrs.site/oauth/{provider}/callback` - безопасный redirect_uri - **Logout**: `v3.dscrs.site/auth/logout` - отзыв httpOnly cookies - **Финализация**: `testing.discours.io/oauth?redirect_url=...` - минимальная схема ### 📊 Security Test Coverage - ✅ Open redirect attack prevention - ✅ Rate limiting protection - ✅ Provider validation - ✅ Safe fallback mechanisms - ✅ Cookie security (httpOnly + Secure + SameSite) - ✅ GlitchTip integration (8 тестов алертов) ### 📝 Documentation - Создан `docs/oauth-minimal-flow.md` - полное описание минимального flow - Обновлена документация OAuth в `docs/auth/oauth.md` - Добавлены security best practices
173 lines
5.2 KiB
Markdown
173 lines
5.2 KiB
Markdown
# GlitchTip Security Alerts Integration
|
||
|
||
## 🚨 Автоматические алерты безопасности OAuth
|
||
|
||
Система OAuth теперь автоматически отправляет алерты в GlitchTip при обнаружении подозрительной активности.
|
||
|
||
## 🎯 Типы алертов
|
||
|
||
### 🔴 Критические события (ERROR level)
|
||
- **`open_redirect_attempt`** - Попытка open redirect атаки
|
||
- **`rate_limit_exceeded`** - Превышение лимита запросов (брутфорс)
|
||
- **`invalid_provider`** - Попытка использования несуществующего провайдера
|
||
- **`suspicious_redirect_uri`** - Подозрительный redirect URI
|
||
- **`brute_force_detected`** - Обнаружена брутфорс атака
|
||
|
||
### 🟡 Обычные события (WARNING level)
|
||
- **`oauth_login_attempt`** - Обычная попытка входа
|
||
- **`provider_validation`** - Валидация провайдера
|
||
- **`redirect_uri_validation`** - Валидация redirect URI
|
||
|
||
## 🏷️ Теги для фильтрации в GlitchTip
|
||
|
||
Каждый алерт содержит теги для удобной фильтрации:
|
||
|
||
```python
|
||
{
|
||
"security_event": "rate_limit_exceeded",
|
||
"component": "oauth",
|
||
"client_ip": "192.168.1.100",
|
||
"oauth_provider": "github",
|
||
"has_redirect_uri": "true"
|
||
}
|
||
```
|
||
|
||
## 📊 Контекст события
|
||
|
||
Детальная информация в контексте `security_details`:
|
||
|
||
```python
|
||
{
|
||
"ip": "192.168.1.100",
|
||
"provider": "github",
|
||
"attempts": 15,
|
||
"limit": 10,
|
||
"window_seconds": 300,
|
||
"severity": "high",
|
||
"malicious_uri": "https://evil.com/steal",
|
||
"attack_type": "open_redirect"
|
||
}
|
||
```
|
||
|
||
## 🔧 Интеграция в коде
|
||
|
||
### Автоматические алерты
|
||
|
||
```python
|
||
# При превышении rate limit
|
||
if len(requests) >= OAUTH_RATE_LIMIT:
|
||
send_rate_limit_alert(client_ip, len(requests))
|
||
return False
|
||
|
||
# При попытке open redirect
|
||
if not is_allowed:
|
||
send_open_redirect_alert(redirect_uri)
|
||
return False
|
||
```
|
||
|
||
### Ручные алерты
|
||
|
||
```python
|
||
from auth.oauth_security import log_oauth_security_event
|
||
|
||
# Отправка кастомного алерта
|
||
log_oauth_security_event("suspicious_activity", {
|
||
"ip": client_ip,
|
||
"details": "Custom security event",
|
||
"severity": "medium"
|
||
})
|
||
```
|
||
|
||
## 🛡️ Обработка ошибок
|
||
|
||
Система устойчива к сбоям GlitchTip:
|
||
|
||
```python
|
||
try:
|
||
# Отправка алерта в GlitchTip
|
||
sentry_sdk.capture_message(message, level=level)
|
||
except Exception as e:
|
||
# Не ломаем основную логику
|
||
logger.error(f"Failed to send alert to GlitchTip: {e}")
|
||
```
|
||
|
||
## 📈 Мониторинг в GlitchTip
|
||
|
||
### Фильтры для критических событий:
|
||
```
|
||
tag:security_event AND level:error
|
||
```
|
||
|
||
### Фильтры по компонентам:
|
||
```
|
||
tag:component:oauth
|
||
```
|
||
|
||
### Фильтры по IP адресам:
|
||
```
|
||
tag:client_ip:192.168.1.100
|
||
```
|
||
|
||
## 🚨 Алерты по типам атак
|
||
|
||
### Open Redirect атаки:
|
||
```
|
||
tag:security_event:open_redirect_attempt
|
||
```
|
||
|
||
### Брутфорс атаки:
|
||
```
|
||
tag:security_event:rate_limit_exceeded
|
||
```
|
||
|
||
### Невалидные провайдеры:
|
||
```
|
||
tag:security_event:invalid_provider
|
||
```
|
||
|
||
## 📊 Статистика безопасности
|
||
|
||
GlitchTip позволяет отслеживать:
|
||
- Количество атак по времени
|
||
- Топ атакующих IP адресов
|
||
- Самые частые типы атак
|
||
- Географическое распределение атак
|
||
|
||
## 🔄 Настройка алертов
|
||
|
||
В GlitchTip можно настроить:
|
||
- Email уведомления при критических событиях
|
||
- Slack/Discord интеграции
|
||
- Webhook для автоматической блокировки IP
|
||
- Дашборды для мониторинга безопасности
|
||
|
||
## ✅ Тестирование
|
||
|
||
Система покрыта тестами:
|
||
|
||
```bash
|
||
# Запуск тестов GlitchTip интеграции
|
||
uv run python -m pytest tests/test_oauth_glitchtip_alerts.py -v
|
||
|
||
# Результат: 8/8 тестов прошли
|
||
✅ Critical events sent as ERROR
|
||
✅ Normal events sent as WARNING
|
||
✅ Open redirect alert integration
|
||
✅ Rate limit alert integration
|
||
✅ Failure handling (graceful degradation)
|
||
✅ Security context tags
|
||
✅ Event logging integration
|
||
✅ Critical events list validation
|
||
```
|
||
|
||
## 🎯 Преимущества
|
||
|
||
1. **Реальное время** - мгновенные алерты при атаках
|
||
2. **Контекст** - полная информация о событии
|
||
3. **Фильтрация** - удобные теги для поиска
|
||
4. **Устойчивость** - не ломает основную логику при сбоях
|
||
5. **Тестируемость** - полное покрытие тестами
|
||
6. **Масштабируемость** - готово для высоких нагрузок
|
||
|
||
**Система безопасности OAuth теперь имеет полноценный мониторинг!** 🔒✨
|