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