Aller au contenu

Sécurité - Vue d'Ensemble

Architecture de sécurité de JARVIS.

Principes de Sécurité

graph TB
    subgraph "Defense in Depth"
        L1[WAF/Traefik]
        L2[Rate Limiting]
        L3[Authentication JWT]
        L4[Authorization RBAC]
        L5[Row-Level Security]
        L6[Encryption at Rest]
    end

    L1 --> L2 --> L3 --> L4 --> L5 --> L6

Couches de Protection

1. Périmètre (Traefik)

  • TLS 1.3 obligatoire
  • Headers de sécurité (CSP, HSTS, X-Frame-Options)
  • Rate limiting global

2. Application

  • JWT avec rotation des clés
  • RBAC (user, admin, super_admin)
  • Validation des entrées (Pydantic)
  • Protection CSRF

3. Données

  • Row-Level Security PostgreSQL
  • Chiffrement au repos (AES-256)
  • Hashing bcrypt (passwords)
  • PII masking dans les logs

OWASP Top 10 - Couverture

Risque Protection Status
A01 - Broken Access Control RLS + RBAC
A02 - Cryptographic Failures TLS + bcrypt + AES
A03 - Injection Pydantic + SQLAlchemy ORM
A04 - Insecure Design Security by design
A05 - Security Misconfiguration Hardened configs
A06 - Vulnerable Components CVE scanning
A07 - Auth Failures JWT + MFA ready
A08 - Data Integrity Audit logs
A09 - Logging Failures Structured logging
A10 - SSRF URL validation

Flux d'Authentification

sequenceDiagram
    participant U as User
    participant A as API
    participant DB as PostgreSQL
    participant R as Redis

    U->>A: POST /auth/login
    A->>DB: Verify credentials
    DB-->>A: User data
    A->>R: Store session
    A-->>U: JWT (access + refresh)

    U->>A: Request + Bearer token
    A->>A: Validate JWT
    A->>R: Check session
    A->>DB: Query with RLS
    DB-->>A: Filtered data
    A-->>U: Response

Protection des Données Sensibles

Détection PII

# Patterns détectés automatiquement
- Emails: user@example.com
- Téléphones: +33 6 12 34 56 78
- Cartes bancaires: 4111 1111 1111 1111
- IBAN: FR76 1234 5678 9012 3456 7890 123
- Numéros SS: 1 85 12 75 108 123 45

Routage LLM

Les données sensibles sont automatiquement routées vers le LLM local (Ollama) pour éviter l'envoi vers les API cloud.

Audit Trail

Toutes les actions critiques sont loguées :

{
  "timestamp": "2026-01-16T10:30:00Z",
  "user_id": "uuid",
  "action": "document.upload",
  "resource_type": "document",
  "resource_id": "uuid",
  "ip_address": "192.168.1.100",
  "user_agent": "Mozilla/5.0...",
  "status": "success",
  "metadata": {
    "filename": "rapport.pdf",
    "size_bytes": 102400
  }
}

Voir Aussi