Aller au contenu principal

Déploiement souverain

En mode souverain, le plan de contrôle et le plan de données s'exécutent tous deux à l'intérieur du périmètre de l'opérateur (ADR-037). Le service hébergé a été arrêté le 23/05/2026 ; STOA se déploie sur site. Cette page est un schéma de référence générique : les noms sont des exemples, aucune infrastructure réelle n'est décrite, et chaque affirmation renvoie à un ADR publié ou à un fichier du dépôt stoa. Dimensionnement, ports et DNS sont dans les Prérequis de déploiement.

Statut du plan de données

L'ADR-073 (22/10/2026) décide que le plan de données utilise Envoy upstream, configuré uniquement par xDS servi sur site par STOA Link, la logique STOA s'exécutant dans des services externes appelés par Envoy. Le serveur xDS de Link est décidé mais pas encore implémenté (ADR-073 §7) ; les schémas ci-dessous montrent la cible décidée. Le plan de données actuel, STOA Gateway (Rust), est en maintenance (ADR-073 §9).

1. Topologie réseau​

FluxDirection et protocoleSource
Consommateurs, agents et opérateurs → edgeHTTPS, à l'initiative du client ; seule entrée entrante du sitePrérequis §2
Edge → Envoy, Console, Portail, API, KeycloakTLS terminé à l'edge ; données du certificat client transmises en en-têtes depuis un proxy de confiance uniquementADR-027, ADR-039
Envoy → services d'autorisation et de traitementgRPC ext_authz et ext_proc ; services co-localisés avec EnvoyADR-073 §4, Mitigations
Envoy ↔ STOA LinkEnvoy ouvre le flux xDS vers le Link local ; Link sert des snapshots versionnés générés depuis les contrats UACADR-073 §2
STOA Link → API du plan de contrôleSSE sortant depuis Link plus callback HTTPS ; le plan de contrôle n'ouvre jamais de connexion vers le plan de donnéesADR-059, ADR-073 §2
Point d'application → API du plan de contrôleRécupération périodique de l'artefact de politique signé, à l'initiative du point d'applicationADR-070 A7
Site → InternetAucun flux requis : le mode souverain n'exige jamais de connectivité sortante ; les images sont mises en miroir dans un registre sur siteADR-037, Prérequis §5, ADR-073 Mitigations

Chaque instance Envoy garde son interface d'administration sur loopback et n'est jamais configurée à la main ni par une API d'administration (ADR-073 §2 et Mitigations). Kafka, s'il est déployé, reste interne au site et ne transporte que des événements d'effets de bord (ADR-059).

2. Contrôle des accès depuis un réseau externe​

ÉtapeContrôleSource
IdentitéL'ADR-026 définit un modèle cible de fédération avec un realm dédié par tenant, fédéré vers l'IdP de l'opérateur (OIDC, SAML ou LDAP), sans comptes locaux, avec contrôles d'audience et de realm. Le provisioning actuel crée plutôt des groupes et un compte administrateur dans le realm configuré (voir Identité ci-dessous) ; il ne met pas en place ce modèle par realm.ADR-026
Agents IALes clients MCP utilisent OAuth 2.1 avec PKCE ; la passerelle sert les métadonnées de découverte et relaie l'enregistrement dynamique des clients vers Keycloak.ADR-044
TransportTLS à l'edge ; mTLS optionnel avec jetons liés au certificat (cnf.x5t#S256), vérifiés par le filtre JWT d'Envoy ou par le service d'autorisation. Les jetons « sender-constrained » (liés à une clé détenue par le client, via DPoP ou mTLS) sont conçus pour prendre en charge le profil FAPI 2.0 pour les clients qui l'exigent ; aucune certification de conformité n'est revendiquée.ADR-039, ADR-073 §5, ADR-056
Validation du jetonLe filtre jwt_authn d'Envoy valide signature et claims contre un JWKS livré par xDS : la validation ne nécessite aucun appel hors du site ; suivent un rbac grossier et local_ratelimit.ADR-073 §10
AutorisationLe service d'autorisation vérifie tenant, souscription active, clé d'API, politique OPA et quotas consommateur. En cas de défaillance, Envoy refuse avec un 503, un corps neutre identique au 403, et sans rejeu automatique des requêtes non idempotentes.ADR-073 §4, §10
Permissions d'outilsRefus par défaut. Un outil n'est autorisé que si un artefact signé par le plan de contrôle (JWS Ed25519, limité à un tenant, borné dans le temps) le liste ; la révocation prime sur le cache ; les outils marqués requires_human_approval exigent un jeton d'approbation.ADR-070 §1, Annexe
OpérateursConsole, Portail et CLI passent par Keycloak OIDC. Les rôles cpi-admin, tenant-admin, devops et viewer correspondent aux scopes stoa:admin, stoa:write, stoa:read. Les changements de configuration en production passent par une pull request Git, pas par une écriture dans l'interface.ADR-054, ADR-040

Dans les profils prod et staging, la passerelle Rust refuse de démarrer si son moteur de politiques ne peut pas se charger (state.rs: resolve_policy_engine), et la readiness échoue quand aucun artefact de politique vérifié n'est disponible (ADR-070 §4).

3. Isolation des tenants et des composants​

CoucheMécanismeSource
IdentitéL'ADR-026 définit une cible avec un realm par tenant. Le provisioning livré crée des groupes de tenants dans le realm Keycloak configuré, pas des realms distincts ; il n'établit donc pas de séparation des clés de signature, des clients ou des sessions de realm par tenant.ADR-026; tenant creation; provisioning; configured realm; setup_tenant_group
AutorisationL'API du plan de contrôle refuse l'accès à un autre tenant sauf si l'appelant est cpi-admin (require_tenant_access) ; la passerelle applique la même règle avec enforce_tenant_isolation, activé par défaut.Control Plane RBAC; require_tenant_access; gateway default; gateway tenant check
ContratUn fichier UAC complet et autonome par tenant, sans héritage ; les overlays par environnement vivent dans Git.ADR-022, ADR-040
PolitiqueChaque artefact de politique signé porte un seul tenant_id ; un artefact manquant pour un tenant ne refuse que ce tenant, jamais les autres.ADR-070 §4, Annexe A2
RéseauPour ce schéma de référence, l'opérateur doit isoler les charges de travail des tenants avec des namespaces et des objets NetworkPolicy. Le chart inclut des politiques egress conditionnelles pour bootstrap et first-admin, mais elles ne fournissent pas une isolation générale des charges de travail des tenants. Exemples : Durcissement sécurité.Helm templates; bootstrap policy; first-admin policy; ADR-026 Security Considerations
ComposantsPlan de contrôle et plan de données sont des processus distincts avec un chemin de déploiement unique ; Envoy ne charge aucune extension et la logique STOA s'exécute dans des services séparés ; la clé de signature des politiques est montée en lecture seule et lisible uniquement par l'API du plan de contrôle ; les conteneurs de passerelle tournent sans root, avec système de fichiers en lecture seule et toutes les capacités retirées.ADR-073 §1, §4 ; ADR-070 A5 ; gateway security context
Chaîne d'approvisionnementLes images sont signées avec Cosign, avec provenance SLSA et SBOM SPDX attachés à la publication ; vérifiez-les avant la mise en miroir dans le registre sur site.image publication workflow

Voir aussi​