Automatisation & Zero Trust

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.

Le postulat

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.
Architecture de référence

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.

Technos que nous déployons

É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

Salt 3006+salt-apigrain opt-in

É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

HashiCorp VaultAppRoleKV-v2CIDR-bound

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

HAProxyPROXY v2SNImTLS verify

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

Woodpecker CIGiteaGitOps

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

Proxmox VELXCRKE2Docker

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é

GraylogGELFaudit logs

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.