PD-30 — Expression de besoin¶
Metadata¶
| Champ | Valeur |
|---|---|
| Story ID | PD-30 |
| Titre | Configurer session management avec Redis |
| Epic parent | PD-182 (AUTH) |
| Date | 2026-02-18 |
| Auteur | Claude (orchestrateur) |
| Source | Jira PD-30 |
1. Contexte¶
ProbatioVault repose sur un modèle de sécurité zero-knowledge, multi-device, et à forte exigence probatoire (journal append-only, traçabilité des accès, conformité RGPD et eIDAS).
L'authentification (cf. architecture SRP-6a + JWT décrite dans les spécifications techniques 42) permet l'accès initial au système.
Cependant, une fois authentifié, l'utilisateur peut : - Accéder depuis plusieurs appareils - Conserver des sessions actives simultanément - Révoquer un appareil compromis - Être soumis à des exigences d'invalidation immédiate en cas d'incident de sécurité
La gestion actuelle des sessions doit être renforcée pour répondre aux exigences suivantes : - Contrôle en temps réel des sessions actives - Invalidation immédiate - Gestion fine par device - Expiration maîtrisée - Traçabilité auditée
2. Objectifs¶
Mettre en place un mécanisme permettant :
- Stockage centralisé des sessions actives
- Gestion automatique de leur durée de validité (TTL)
- Invalidation immédiate d'une session ou d'un ensemble de sessions
- Visualisation des appareils actuellement connectés
- Cohérence avec le modèle zero-knowledge et probatoire
3. Besoins fonctionnels¶
3.1 Gestion des sessions actives¶
Le système doit permettre : - L'enregistrement d'une session lors d'une authentification réussie - L'association d'une session à : - Un identifiant utilisateur - Un identifiant device - Des métadonnées contextuelles (IP, user-agent, timestamp) - Le maintien d'une liste actualisée des sessions actives par utilisateur
3.2 Durée de vie (TTL)¶
Chaque session doit : - Posséder une durée de validité définie - Expirer automatiquement sans intervention humaine - Être renouvelable sous conditions (ex : activité continue)
Le système doit permettre : - Une configuration de durée différente selon le contexte (mobile, web, API) - Une politique stricte pour les contextes sensibles
3.3 Invalidation immédiate¶
Le système doit permettre : - L'invalidation d'une session spécifique - L'invalidation de toutes les sessions d'un utilisateur - L'invalidation liée à un événement : - Changement de mot de passe - Révocation d'un device - Suspicion d'intrusion - Demande judiciaire
L'invalidation doit être : - Immédiate - Effective sur l'ensemble des instances backend - Vérifiable et journalisée
3.4 Liste des appareils actifs¶
Un utilisateur doit pouvoir : - Consulter la liste de ses appareils actuellement connectés - Voir pour chaque appareil : - Type - Date de connexion - Dernière activité - Localisation approximative - Révoquer un appareil individuellement
Ce besoin est cohérent avec la section "Gestion des sessions et révocation" du cahier d'architecture 41.
3.5 Cohérence avec les exigences de sécurité¶
Le système de gestion des sessions doit respecter : - Le modèle stateless distribué de l'API - L'architecture multi-instance (scalabilité horizontale) - L'isolation stricte des données par utilisateur - L'absence de stockage de secrets en clair - La traçabilité probatoire (journal append-only)
Il ne doit pas : - Introduire de point unique de défaillance non maîtrisé - Permettre le contournement d'une révocation - Créer de dépendance forte à un état local d'instance
4. Contraintes¶
4.1 Contraintes techniques¶
- Compatible avec une architecture distribuée
- Montée en charge linéaire
- API stateless
- Synchronisation rapide inter-instances
4.2 Contraintes réglementaires¶
- Respect RGPD (données minimisées, purge automatique)
- Capacité de production d'un journal d'accès sur demande judiciaire
- Cohérence avec le mécanisme d'ancrage probatoire
4.3 Contraintes de sécurité¶
- Protection contre le replay
- Protection contre l'usurpation de token
- Résistance aux attaques par session fixation
- Isolation stricte entre utilisateurs
5. Résultats attendus¶
Le système est considéré conforme si : - Un utilisateur peut voir en temps réel ses sessions actives - Une session révoquée devient immédiatement inutilisable - Les sessions expirent automatiquement à échéance - La révocation d'un device supprime toute possibilité d'accès - Les journaux permettent de prouver : - Qu'une session existait - Qu'elle a été invalidée - À quel moment - Par quelle action
6. Risques identifiés¶
| Risque | Impact | Mitigation |
|---|---|---|
| Incohérence d'état entre instances backend | Élevé | Redis centralisé + propagation immédiate |
| Non-prise en compte immédiate d'une révocation | Critique | Vérification Redis à chaque requête |
| Dégradation de performance sous forte charge | Moyen | Redis cluster + cache local court TTL |
| Complexité excessive dans le flux d'authentification | Moyen | Interface SessionManager bien définie |
| Mauvaise articulation avec enveloppes de clés (HSM) | Élevé | Contrat clair entre session et key_envelopes |
7. Tensions à préserver¶
Ces tensions ne doivent pas être arbitrées dans ce document. Elles devront être traitées en phase de spécification :
- Stateless API vs contrôle centralisé des sessions
- Performance vs vérification systématique
- Auditabilité forte vs minimisation des données
- Simplicité opérationnelle vs granularité fine par device
8. Hors périmètre¶
- Implémentation du mécanisme d'authentification (déjà fait : PD-23, PD-25, PD-26)
- Gestion des enveloppes de clés (PD-37, PD-40)
- Interface utilisateur mobile/web (stories app dédiées)
- Alerting et monitoring (story infra dédiée)
9. Dépendances¶
| Story | Nature | Statut |
|---|---|---|
| PD-23 | SRP-6a authentication | DONE |
| PD-25 | Session key derivation | DONE |
| PD-26 | OIDC/Keycloak integration | DONE |
| PD-28 | Session revocation store | DONE |
| PD-37 | HSM key envelopes | DONE |
| PD-31 | Audit log (append-only) | DONE |
10. Synthèse¶
PD-30 vise à introduire une gestion robuste, distribuée et auditable des sessions utilisateurs permettant :
- La maîtrise du cycle de vie des connexions
- La révocation immédiate multi-device
- La visibilité utilisateur sur ses accès actifs
- La conformité probatoire et réglementaire
Ce document définit ce qui est attendu.
La manière de l'implémenter (ex : moteur de stockage Redis, mécanisme TTL, architecture précise) relève de la Spécification Canonique Contractuelle (étape 1).
Validation PO¶
- Besoin validé par le PO
- Date de validation : 2026-02-18
- Commentaires : Validé sans modification