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 — Onboarding d’un nouveau client
Temps estimé: 30–60 min Prérequis: Accès MSSP_ADMIN sur la plateforme + accès Azure Portal tenant client Dernière mise à jour: 2026-04-09Checklist pré-onboarding
- Contrat signé + DPA (RGPD) en place
- Tenant ID Microsoft 365 fourni par le client
- Product areas à auditer confirmées (Entra, Exchange, Teams, SharePoint, Defender, Purview)
- Cadence d’audit définie (hebdomadaire / mensuelle)
- Contact technique client identifié
- Domaine de connexion SSO choisi (ex:
acme-corp.snakysec.comou domaine custom)
Étape 1 — Créer l’app registration Entra ID chez le client
Dans le tenant client (Azure Portal > Microsoft Entra ID) :1.1 Enregistrer l’application
1.2 Ajouter les permissions Graph API (Application)
Permissions minimales par product area :| Area | Permissions |
|---|---|
| Entra | Directory.Read.All, Policy.Read.All, RoleManagement.Read.Directory |
| Exchange | MailboxSettings.Read, Mail.Read (+ EXO PowerShell module) |
| Teams | TeamSettings.Read.All (+ Teams PowerShell module) |
| SharePoint | SharePointTenantSettings.ReadWrite.All (+ SPO PowerShell module) |
| Defender | SecurityEvents.Read.All (+ EXO PowerShell module for transport rules) |
| Purview | InformationProtectionPolicy.Read.All |
| Commun | AuditLog.Read.All, Organization.Read.All |
Les permissions exactes sont listées dans chaque fichier framework :Grant admin consent après avoir ajouté toutes les permissions.src/frameworks/cis/*.jsonetsrc/frameworks/scuba/*.json(champrequiredPermissions).
1.3 Configurer l’authentification par certificat
Pas de client_secret. L’authentification X.509 est obligatoire en production. Voir ADR: docs/adr/003-x509-over-client-secret.md
1.4 Créer une 2ème app pour le SSO (si le client veut se connecter à la plateforme)
1.5 Collecter les informations
Étape 2 — Stocker les credentials dans Vault
Depuis le serveur VPS (ou viadocker exec) :
Les clés attendues par le code (src/lib/vault.ts:getClientSecrets) :tenant_id,sso_client_id,audit_client_id,entra_cert_pem,entra_cert_private_key
Étape 3 — Créer le client sur la plateforme
Via l’interface admin
Dashboard → Clients → Nouveau client :- Nom : Acme Corp
- Slug :
acme-corp(lowercase, hyphens uniquement) - Tenant ID :
<TENANT_ID> - CI Client ID :
<AUDIT_CLIENT_ID>(UUID de l’app registration audit) - Product areas : cocher les areas contractuelles
- CISO Assistant : activer si applicable
Via l’API
Étape 4 — Configurer le domaine SSO
Le client doit pouvoir se connecter via un domaine dédié (ex:acme-corp.snakysec.com).
4.1 Ajouter le domaine au client
4.2 Configurer le DNS
Ajouter un CNAME dans Cloudflare (ou le DNS du sous-domaine) :hostname → Client.domain (DB) → slug → Vault secrets → Entra SSO.
Étape 5 — Lancer le premier audit de validation
Smoke test (rapide, sans écriture d’artefacts)
Depuis l’UI : Dashboard → Audits → Trigger → sélectionner le client, framework CIS, area Entra. Ou via API :Audit complet
Étape 6 — Configurer la cadence d’audit
0 6 * * 1— lundi 6h (hebdomadaire)0 6 1 * *— 1er du mois 6h (mensuel)0 6 * * 1,4— lundi + jeudi 6h (bi-hebdo)
Étape 7 — Créer l’accès CLIENT_USER
Quand le contact client se connecte via SSO pour la première fois, un utilisateur est créé automatiquement avec le rôleMSSP_ADMIN (par défaut). Ajuster le rôle :
Checklist post-onboarding
- Vault secrets écrits et vérifiés (
vault kv get mssp/clients/<slug>) - Client créé en base (visible dans Dashboard → Clients)
- Domaine SSO configuré et DNS propagé
- Premier audit terminé avec status
COMPLETED - Score de conformité calculé (> 0%)
- Gap findings importés en base
- Accès CLIENT_USER créé pour le contact client
- Cadence d’audit planifiée (cronExpression renseignée)
- CISO Assistant configuré (si applicable)
Dépannage
L’audit échoue avec “insufficient_perms”
Le pre-flight check a détecté des permissions manquantes. Vérifier :- Les permissions Graph API de l’app registration (admin consent ?)
- Le certificat est-il bien celui associé à l’app ?
- La clé privée dans Vault correspond-elle au certificat uploadé ?
Le SSO ne fonctionne pas
- Vérifier
Client.domainen DB correspond au hostname - Vérifier le CNAME DNS pointe vers snakysec.com
- Vérifier les Vault secrets (
sso_client_id,tenant_id) - Vérifier la redirect URI dans l’app SSO Entra
L’import d’artefacts échoue
- Vérifier le webhook GitLab (
/api/webhooks/gitlab) - Sync manuelle : Dashboard → Audit → Sync
- Vérifier les logs :
docker logs mssp-next-app
Rollback
Si l’onboarding échoue et doit être annulé :- Supprimer le client via
DELETE /api/v1/clients/:id/gdpr(headerX-Purge-Confirm: purge) - Supprimer les secrets Vault :
docker exec mssp-vault vault kv delete mssp/clients/<slug> - Révoquer l’app registration dans le tenant client (Azure Portal)
- Supprimer le CNAME DNS si configuré