Files
core/docs/oauth-glitchtip-integration.md
Untone 05c188df62
Some checks failed
Deploy on push / deploy (push) Failing after 39s
[0.9.29] - 2025-09-26
### 🚨 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
2025-09-26 21:03:45 +03:00

5.2 KiB
Raw Blame History

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

Каждый алерт содержит теги для удобной фильтрации:

{
    "security_event": "rate_limit_exceeded",
    "component": "oauth", 
    "client_ip": "192.168.1.100",
    "oauth_provider": "github",
    "has_redirect_uri": "true"
}

📊 Контекст события

Детальная информация в контексте security_details:

{
    "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"
}

🔧 Интеграция в коде

Автоматические алерты

# При превышении 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

Ручные алерты

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:

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
  • Дашборды для мониторинга безопасности

Тестирование

Система покрыта тестами:

# Запуск тестов 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 теперь имеет полноценный мониторинг! 🔒