Aller au contenu

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 (SlyForwardSigningFilterSlyTransitFilter) 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

  1. Canal unique M2M : backends Dynors → InterAppCallService → SLY /sn-adresse/** → BAN2BAL /api/v1/internal/**. Aucune URL ni secret SN Adresse dans les apps satellites.

  2. Preuve de confiance : réutiliser ADR-0008 tel quel — SLY pose X-Sly-Timestamp, X-Sly-Signature (SHARED) et X-Sly-Signature-V2 (HKDF) ; BAN2BAL vérifie via SlyTransitFilter packagé dans dynors-commons.

  3. Mode cible sur SN Adresse : DUAL (comme entitlements) — accepte signature SHARED ou V2 HKDF ; trajectoire SHARED → DUAL → PER_APP inchangée par rapport à ADR-0008.

  4. Headers métier : conserver X-Source-App, X-Tenant-Id, X-Request-Id (posés par InterAppCallService) pour audit et quotas ; pas de JWT utilisateur.

  5. Migration : double acceptation — HMAC legacy X-App-* et transit SLY coexistent sur /api/v1/internal/** jusqu'à sunset daté du HMAC par app.

  6. 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).

  7. Registre internal_apps : conservé pour audit, quotas et statut ACTIVE/PAUSED ; alimentation admin inchangée ; mapping X-Source-App (slug SLY, ex. dawalale) → code registre (ex. DAWALALE).

  8. Canal B2B : /api/v1/b2b/** (clé API partenaires) — hors périmètre, non modifié.

  9. Tech code SLY : slug sn-adresse → tech code IAM sna (SLUG_TO_TECH_CODE).

Conséquences

Bénéfices

  • Zéro secret SN par satellite ; un secret plateforme SLY_FORWARD_SECRET (+ clé V2 sna côté BAN2BAL).
  • Appel direct api.sn-adresse.dynors.com sans signature SLY → 401.
  • Alignement total avec le Bus inter-app existant.

Coûts

  • Dépendance Maven dynors-commons dans 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/info via SLY → 200
  • [ ] Runbook docs/runbooks/sn-adresse-sly-transit-m2m.md à jour
  • [ ] Entrée JOURNAL_REVUE_ARCHI.md zone Gateway