ADR-0021 — Transit SLY M2M vers SN Adresse (BAN2BAL)¶
Date : 2026-06-24
Catégorie : A (extension du patron inter-app ADR-0008 à un service hors monorepo Dynors)
Décideur : Porteur + lead architecte (arbitrage mode DUAL)
Statut : Acceptée — préparation côté Dynors uniquement (SLY + docs) ; BAN2BAL : aucune modif pour l'instant (branchement SlyTransitFilter à faire par l'équipe SN Adresse quand prête)
Référence : ADR-0008, étude docs/architecture/ETUDE_HANDSHAKE_SLY_SN_ADRESSE_APPS_DYNORS.md
Contexte¶
Les apps produit Dynors (DAWALALE, ELISA, …) doivent consommer SN Adresse (repo BAN2BAL) en M2M, hors navigateur, sans exposer de secret SN dans chaque satellite.
Aujourd'hui, BAN2BAL authentifie /api/v1/internal/** via HMAC par app (X-App-Code, X-App-Timestamp, X-App-Signature) — un secret par application, modèle rejeté pour l'écosystème Dynors.
Le patron signature de transit SLY (SlyForwardSigningFilter → SlyTransitFilter) est déjà implémenté et éprouvé (entitlements, FISCAL, PAIEMENT…). SN Adresse n'a ni route SLY /sn-adresse/** ni vérificateur transit.
Décision¶
-
Canal unique M2M : backends Dynors →
InterAppCallService→ SLY/sn-adresse/**→ BAN2BAL/api/v1/internal/**. Aucune URL ni secret SN Adresse dans les apps satellites. -
Preuve de confiance : réutiliser ADR-0008 tel quel — SLY pose
X-Sly-Timestamp,X-Sly-Signature(SHARED) etX-Sly-Signature-V2(HKDF) ; BAN2BAL vérifie viaSlyTransitFilterpackagé dansdynors-commons. -
Mode cible sur SN Adresse :
DUAL(comme entitlements) — accepte signature SHARED ou V2 HKDF ; trajectoireSHARED → DUAL → PER_APPinchangée par rapport à ADR-0008. -
Headers métier : conserver
X-Source-App,X-Tenant-Id,X-Request-Id(posés parInterAppCallService) pour audit et quotas ; pas de JWT utilisateur. -
Migration : double acceptation — HMAC legacy
X-App-*et transit SLY coexistent sur/api/v1/internal/**jusqu'à sunset daté du HMAC par app. -
Réseau (recommandé) : sur le VPS SN Adresse, restreindre
/api/v1/internal/**aux IP/réseau SLY en plus de la signature (défense en profondeur). -
Registre
internal_apps: conservé pour audit, quotas et statut ACTIVE/PAUSED ; alimentation admin inchangée ; mappingX-Source-App(slug SLY, ex.dawalale) → code registre (ex.DAWALALE). -
Canal B2B :
/api/v1/b2b/**(clé API partenaires) — hors périmètre, non modifié. -
Tech code SLY : slug
sn-adresse→ tech code IAMsna(SLUG_TO_TECH_CODE).
Conséquences¶
Bénéfices¶
- Zéro secret SN par satellite ; un secret plateforme
SLY_FORWARD_SECRET(+ clé V2snacôté BAN2BAL). - Appel direct
api.sn-adresse.dynors.comsans signature SLY → 401. - Alignement total avec le Bus inter-app existant.
Coûts¶
- Dépendance Maven
dynors-commonsdans BAN2BAL (repo GitLab Package Registry). - Route SLY + mapping tech code à maintenir.
- Runbook rotation clé + monitoring transit.
Composants impactés¶
| Composant | Changement |
|---|---|
dynors-platform/selebeyone |
Route /sn-adresse/**, sn-adresse → sna |
| BAN2BAL | SlyTransitFilter DUAL, auth SLY + legacy HMAC |
| Apps satellites | InterAppCallService target=sn-adresse uniquement |
| Vault | dynors/{env}/platform/sly#forward-secret ; dynors/{env}/sna/sly-transit#key (V2) |
| SIRRAT satellites | Aucun slot secret SN |
Alternatives rejetées¶
| Option | Motif |
|---|---|
| HMAC par app via satellites | N secrets, dette SIRRAT — gelé |
| Challenge 2 temps SN↔SLY | Sur-ingénierie pour le besoin actuel |
| mTLS / SPIFFE immédiat | VPS hors mesh K8s — cible long terme |
Plan d'exécution¶
| Phase | Action | Statut |
|---|---|---|
| P0 | Route SLY /sn-adresse/** + mapping sna |
Fait (dynors-platform) |
| P0 | BAN2BAL : SlyTransitFilter DUAL + double acceptation |
En attente — hors repo Dynors, à livrer côté BAN2BAL |
| P1 | Pilote DAWALALE via SLY | Après BAN2BAL |
| P2 | Firewall IP SLY sur VPS ; bascule trafic 100 % SLY | |
| P3 | Sunset HMAC X-App-* ; bascule PER_APP si ADR-0008 palier 2 prêt |
Suivi¶
- [x] Route SLY
/sn-adresse/**en place (dev) - [ ] BAN2BAL :
SlyTransitFilter— à brancher plus tard (patron :entitlements/.../TransitSecurityConfig.java) - [ ] PoC bout-en-bout :
GET /sn-adresse/api/v1/internal/infovia SLY → 200 - [ ] Runbook
docs/runbooks/sn-adresse-sly-transit-m2m.mdà jour - [ ] Entrée
JOURNAL_REVUE_ARCHI.mdzone Gateway