Aller au contenu

Architecture de sécurité

Limites de confiance

┌─────────┐ 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)

Modèle de confiance

  • 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.

Cryptographie

ObjectifAlgorithme
Cookie de session HMACSHA-256
Mot de passebcrypt cost 10
Tokens d’urgenceEd25519
Signature de payload agentEd25519 (clef de paire par agent, TOFU pin)
TOTP (2FA login)RFC 6238 / SHA-1
TLSLet’s Encrypt (TLS 1.3)
Signature de webhookHMAC-SHA256
Stockage du jeton agentHash SHA-256, jamais en clair
Intégrité de la session de consoleSHA-256 sur journal d’audit append-only

Intégrité de l’agent

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.

Secrets multi-étages

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

SecretStockagePoint 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.keyPOST /api/v1/agents/:id/rotate-signing-key
Clé privée Ed25519 du hubHUB_EMERGENCY_PRIVATE_KEY env (hub)manuel via script de rotation de clés

Voir Rotation de jetons pour la procédure.

Ce que Monsys ne protège pas

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