Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.snakysec.com/llms.txt

Use this file to discover all available pages before exploring further.

Runbook — Traitement d’un échec d’audit

Criticité: Moyenne (audit FAILED) à Haute (queue bloquée) Source d’alerte: Bull Board /api/admin/queues ou alert type AUDIT_FAILED

Diagnostic rapide

1. Identifier le job en échec

Bull Board → /api/admin/queues → Failed tab
Ou via API : GET /api/internal/queues (recentFailed[])
Champs à noter :
  • failedReason — message d’erreur brut
  • data.clientSlug — client concerné
  • attemptsMade — nombre de tentatives

2. Lire les logs du worker

docker logs mssp-audit-worker --tail=100 -f
# Chercher les lignes avec [clientSlug] ou ERROR

Cas courants et résolutions

Cas A — NOAUTH Authentication required (Redis)

Redis a redémarré ou le mot de passe a changé.
# Vérifier que Redis est up
docker ps | grep redis
docker logs mssp-redis --tail=20

# Vérifier REDIS_URL dans .env
# Redémarrer le worker
docker compose restart audit-worker

Cas B — Vault: permission denied / 403

Le token Vault du worker a expiré (TTL court par design).
# Option 1 : redémarrer le worker (re-auth AppRole)
docker compose restart audit-worker

# Option 2 : si AppRole secret_id expiré, le renouveler
docker exec mssp-vault vault write auth/approle/role/audit-worker/secret-id
# Mettre à jour VAULT_WORKER_SECRET_ID dans .env + redémarrer

Cas C — PowerShell: Connect-MgGraph failed / 401

Le certificat Entra ID du client a expiré ou l’app registration a été révoquée.
# Vérifier le certificat dans Azure Portal du client
# Si expiré → suivre runbook key-rotation.md §3

# Re-tenter le job depuis Bull Board (Retry button)
# Ou via API :
curl -X POST /api/v1/audits/<auditRunId>/retry

Cas D — Timeout / PowerShell process killed

L’audit a dépassé le timeout configuré (défaut : 20 min). Causes possibles :
  • Tenant M365 lent (Exchange Online throttling)
  • Trop de product areas en une seule run
# Réduire le scope : relancer avec un seul product area
curl -X POST /api/v1/audits/trigger \
  -d '{"clientId": "...", "framework": "cis-m365-v6", "productArea": "entra"}'

# Si Exchange spécifiquement → vérifier les MFA/CA policies du compte service

Cas E — Import failed: Schema validation error

Le JSON de résultats est malformé (bug dans le script PowerShell).
# Récupérer le fichier de résultats brut
docker exec mssp-audit-worker ls /data/outputs/<clientSlug>/

# Valider manuellement
cat /data/outputs/<clientSlug>/results.json | jq '.schemaVersion'

# Si schemaVersion != "3.0" → mettre à jour les scripts PowerShell

Retry manuel

# Via API (requiert MSSP_ADMIN)
curl -X POST https://platform.snakysec.com/api/v1/audits/<auditRunId>/retry \
  -H "Authorization: Bearer <token>"

# Via Bull Board UI : bouton "Retry" sur le job failed

Escalade

Si après 3 retries l’audit échoue encore :
  1. Marquer l’AuditRun comme FAILED définitivement (status dans la DB)
  2. Créer une alerte AUDIT_FAILED pour le client
  3. Contacter le client pour vérifier les permissions de l’app registration
  4. Documenter dans le journal des incidents (GitLab Issues)