De state.apply à révoqué en moins de 60 secondes
Salt pour la configuration déclarative. Vault pour la livraison des secrets. HAProxy pour la terminaison TLS. mTLS pour l'authentification de service à service. Woodpecker CI pour tout relier. Le résultat : un runtime zero-trust où l'accès est accordé par certificat, observable en temps réel et révocable en moins d'une minute.
L'identité est le seul périmètre
Les frontières réseau sont poreuses. Les VPN ajoutent de la latence sans ajouter de confiance réelle. La seule réponse durable est le mTLS : chaque service détient un certificat, chaque connexion est mutuellement authentifiée, et la révocation se propage en secondes — pas après une revue trimestrielle.
Ce que nous remplaçons
- Identifiant + mot de passe pour les services internesHameçonnable, exposable dans les journaux, jamais révoqué au départ d'un employé.
- Clés d'API statiques dans les variables d'environnementVivent éternellement dans l'historique Git, les images de conteneurs et les DM Slack.
- Plages d'IP « de confiance »Passerelles VPN et traversée NAT supposent que le réseau est la frontière de confiance. Il ne l'est pas.
- Renouvellements manuels de certificatsDes rappels d'agenda manqués à 02h00 un jour férié.
Ce que nous livrons
- mTLS partoutChaque service interne authentifie les clients par certificat. Émis par EJBCA, à courte durée de vie, révocables.
- Vault comme courtier d'identifiantsAppRole plus secrets dynamiques. Les applications récupèrent les identifiants au démarrage et ne les stockent jamais.
- Salt comme substrat de configurationÉtat déclaratif avec opt-in par grain. Le CI dispatche ; il ne contourne jamais.
- Révocation en directRévoquez un certificat dans EJBCA — OCSP se propage en secondes — et les clients perdent l'accès. Démontrable à chaque appel prospect.
Les composants, reliés entre eux
Une vue simplifiée de la stack zero-trust de référence de SkyQon. Chaque bloc est quelque chose que nous déployons, configurons et exploitons sur vos charges de travail réelles.
Master Salt + minions
Salt pour la gestion de configuration. Les hôtes adhèrent à l'application d'état automatisée via un grain pipeline_env — le CA racine et les hôtes HSM sont exclus par conception. salt-api est exposé via nginx pour la terminaison TLS (contournement du bug de chaîne cherrypy de Salt 3006).
Vault + AppRole
KV-v2 pour les secrets applicatifs, AppRole pour l'authentification non humaine, jetons liés à un CIDR, journal d'audit fichier. Les pipelines récupèrent les secrets à l'exécution — aucun identifiant à longue durée de vie dans les configs CI.
HAProxy + PROXY-v2
Terminaison TLS, routage par SNI, vérification mTLS en périphérie. PROXY protocole v2 vers les backends pour que l'IP client survive — essentiel pour l'authentification Galera et les pistes d'audit.
EJBCA + ACME + REST
Le backend CA émet les certificats serveur via ACME et le mTLS de comptes de service via REST. Deux racines de confiance (Issuing G2 + Management) — explicitement séparées, jamais confondues.
Woodpecker CI
Des runners de pipeline qui lint, test-render, puis dispatchent state.apply via salt-api. Les identifiants Vault sont récupérés par exécution via AppRole — le jeton est révoqué en fin d'étape.
Éprouvé au combat, pas à la pointe risquée
Chaque composant tourne en production chez SkyQon et a été durci contre les pièges que vous découvririez sinon à 03h00.
Configuration
État déclaratif, application idempotente, contrôlé par grain d'hôte pour que les frontières de sécurité ne puissent pas être contournées par accident.
Secrets
Jetons à courte durée de vie, rôles liés à un CIDR, journal d'audit fichier, et secrets dynamiques quand le backend le permet.
Périphérie / proxy
Terminaison TLS avec routage SNI, vérification mTLS en périphérie, PROXY v2 pour préserver les IP clients à travers les listeners en mode TCP.
CI / CD
Gitea + Woodpecker auto-hébergés. Les pipelines lint, render et dispatchent via salt-api. Aucun accès production sans PR validée.
Conteneurs / VM
LXC hébergés sur Proxmox pour les services à état, RKE2 pour les charges sans état. Ingress et trafic inter-pods protégés par mTLS.
Observabilité
Un puits d'observabilité unique. Tous les événements de pipeline, tous les événements d'audit CA, tous les échecs de handshake mTLS — une requête, une chronologie.
Envie de voir la démo de révocation en direct ?
C'est le point d'orgue de chaque appel prospect. Émettez un certificat, accédez à un service protégé par mTLS, révoquez le certificat, regardez l'accès disparaître — le tout en moins de 60 secondes.