Aller au contenu

Architecture de sécurité

┌─────────┐ HTTPS + Bearer + Ed25519-sig ┌──────────┐ pgx ┌──────────────┐
│ Agent │ ──────────────────────────────▶ │ Hub API │ ────────▶ │ TimescaleDB │
└─────────┘ └──────────┘ └──────────────┘
│ │ │
│ WebSocket (urgence + RPC de console) │ │
▼ ▼ ▼
Honeypots Tableau de bord Sécurité par
Process DNA (Next.js + tenant_id
Agent → Hub : jeton Bearer + X-Monsys-Signature (Ed25519 sur sha256(body))
Hub → Agent : Ed25519 tokens d'urgence / de session de console (5-vérifications valident)
  • L’agent a confiance dans le hub — pour la vérification des signatures Ed25519 sur les tokens d’urgence.
  • Le hub ne fait pas confiance à l’agent — chaque payload reçu est validé, taille de batch limitée, limite de taux imposée.
  • Le hub a confiance dans la session de navigateur uniquement via des cookies signés HMAC (HttpOnly, Secure, SameSite=Lax, 8u TTL).
  • Isolation multi-tenant — les politiques de sécurité par niveau de ligne de Postgres empêchent que tenant A voie les données de tenant B, même en cas d’une erreur SQL dans le code du hub.
Objectif Algorithme
Cookie de session HMAC SHA-256
Mot de passe bcrypt cost 10
Tokens d’urgence Ed25519
Signature de payload agent Ed25519 (clef de paire par agent, TOFU pin)
TOTP (2FA login) RFC 6238 / SHA-1
TLS Let’s Encrypt (TLS 1.3)
Signature de webhook HMAC-SHA256
Stockage du jeton agent Hash SHA-256, jamais en clair
Intégrité de la session de console SHA-256 sur journal d’audit append-only

Depuis mai 2026, le hub exige des signatures Ed25519 sur chaque payload reçu dès que la clé publique de l’agent est pinée. La volatilité des jetons ne suffit pas — voir Signature de payload agent.

Le hub tourne un IntegrityCheckWorker qui cherche six catégories d’anomalies toutes les 10 minutes (drift horaire, métriques plates, downgrade de version, payload non signé, signature invalidée, anomalie de cadence). Les items ouverts nécessitent une revue administrative ; les items résolus restent enregistrés comme traçage d’audit. Voir Surveillance de l’intégrité de l’agent.

Trois types de secrets, chacun rotatif séparément :

Secret Stockage Point de rotation
Jeton Bearer agent /etc/monsys/agent.toml (hôte) POST /api/v1/agents/:id/rotate-token
Clé de signature agent /var/lib/monsys/agent-signing.key POST /api/v1/agents/:id/rotate-signing-key
Clé privée Ed25519 du hub HUB_EMERGENCY_PRIVATE_KEY env (hub) manuel via script de rotation de clés

Voir Rotation de jetons pour la procédure.

  • Une API hub compromis peut donner des instructions à tous les agents. Protégez l’OS du hub (firewall, mise à jour OS, MFA sur SSH).
  • Un hôte agent compromis peut mentir sur sa propre telemetrie. Détection : comparaison entre plusieurs hôtes, processus DNA.
  • Menaces internes — un propriétaire légitime peut lancer des actions d’urgence. Mitigation : journal d’audit, approbation 2-of-N facultative pour les actions de niveau 3 (en playbooks).