Programme MSP Scanyze
Gérer plusieurs clients Scanyze depuis un portail unifié — MSP / White-Label / Reseller — facturation, marque blanche, API
Programme MSP / Partenaires Scanyze
Le programme partenaires Scanyze s'adresse aux organisations qui revendent ou opèrent Scanyze pour le compte de leurs clients : MSSP (Managed Security Service Providers), MSP (Managed Service Providers), agences de sécurité, cabinets de conseil, intégrateurs.
Trois tiers sont disponibles, alignés sur des modèles d'affaires distincts. Source de vérité : secuscan-api/internal/migrations/000099_partner_tiers.up.sql, 000127_partner_tiers_rename_reseller_msp_whitelabel.up.sql, 000152_reseller_tier.up.sql.
Les 3 tiers de partenariat
| Tier | Slug DB | Cas d'usage | Tarif partenariat |
|---|---|---|---|
| Reseller | reseller | Revente simple, le client final paye Scanyze directement, le reseller touche un cashback | Gratuit |
| MSP / MSSP | msp | Gestion technique multi-clients, facturation MSP-aux-clients possible | Gratuit (engagement min 1500 $/mois wholesale) |
| White-Label | white-label | Marque blanche complète + custom domain | 199 $/mois (offert au-delà de 1500 $/mois wholesale) |
Différences détaillées
| Capacité | Reseller | MSP | White-Label |
|---|---|---|---|
| Tenants gérés max | 25 | 100 | Illimité |
| Utilisateurs / tenant max | 5 | 25 | Illimité |
| Discount sur le pricing wholesale | 30% | 40% | 40% |
| White-label rapports | Non | Oui | Oui |
Custom domain (scan.maboite.com) | Non | Non | Oui |
| API partenaire | Oui | Oui | Oui |
| Support priority | Non | Oui | Oui |
| Certification technique requise | Non | Oui | Oui |
| Engagement wholesale minimum | 0 $ | 1500 $/mois | 5000 $/mois (1500 $ pour gratuité du tier) |
Différence MSP vs Tenant régulier
Depuis la migration 000169 (Phase 1 — split MSP from Tenant), un MSP est traité comme une entité distincte dans le schéma de données :
| Concept | Tenant régulier | MSP |
|---|---|---|
| Table principale | tenants (avec tenant_type='regular') | msp_accounts + un tenants dédié avec tenant_type='msp_internal' |
| Modules de scan utilisés | Oui (consomme directement les scans) | Non — un MSP n'utilise jamais directement les modules. S'il veut scanner ses propres assets, il doit créer un client tenant sous lui-même. |
Apparaît dans /admin/tenants | Oui | Non — filtré (visible uniquement dans /admin/msp) |
| Facturation | Plan Scanyze classique | Modèle reseller ou direct (voir Facturation MSP) |
| Branding | Custom branding par tenant | White-label MSP applicable à tous ses tenants gérés |
Le tenant msp_internal sert uniquement à l'authentification des utilisateurs MSP — il ne consomme aucun module de scan.
Quotas illimités + bypass SecuCFO (v0.129.4)
Depuis la v0.129.4, les tenants msp_internal sont automatiquement créés avec :
- Quotas illimités sur tous les modules (
max_targets=-1,max_scans_month=-1,monthly_ai_credits=-1, etc.) - Bypass SecuCFO : pas de souscription Scanyze à payer (la facturation MSP est portée par le contrat partenaire au niveau de
msp_accounts) tenant_type='msp_internal'appliqué dès la création (et non a posteriori)
Pour les tests internes du MSP (par exemple scanner ses propres assets), le partenaire peut créer un client interne tenant sous son MSP avec le mode direct ou reseller.
Plan whitelist sur les clients gérés (v0.129.4)
Quand un MSP crée un client (via /partner/clients/new), seuls les plans suivants sont sélectionnables :
- Free
- Starter
- Pro
- Business
Le plan Enterprise n'est jamais provisionnable depuis l'UI MSP — il exige une négociation directe avec SecuAAS et un contrat custom.
Phase 2 — dual-write msp_accounts + msp_managed_tenants (v0.130.1)
Depuis la v0.130.1, la création d'un client MSP est dual-write :
- Insertion dans
tenants(le tenant Scanyze classique) - Insertion dans
msp_managed_tenants(référencement du lien MSP → client) - Insertion / mise à jour dans
msp_accounts(état du MSP au moment de la création)
Le middleware MSPActAsTenantMiddleware résout les délégations via msp_managed_tenants JOIN msp_accounts.auth_tenant_id en priorité (avec fallback legacy mssp_organizations + partner_accounts). Si le msp_accounts.status != 'active' (suspendu / révoqué), la délégation act_as_tenant est rejetée immédiatement (most-restrictive wins).
Ceci ferme la possibilité d'impersonation cross-MSP (un MSP A ne peut pas voir / opérer un client du MSP B même via JWT manipulé).
Modèles de facturation
Deux modèles, configurables par MSP (champ billing_model dans msp_accounts) :
Mode reseller
- Le MSP facture ses clients au prix qu'il décide (avec sa propre marge).
- Scanyze facture le MSP mensuellement avec une facture consolidée regroupant tous les tenants gérés.
- Le MSP applique son
discount_percentsur le pricing wholesale. - Idéal pour : MSSP avec son propre pricing et son propre cycle de facturation.
Mode direct
- Le client final paye Scanyze directement (carte de crédit ou facture).
- Le MSP touche un cashback récurrent sur la base d'un
rebate_pct(typiquement 20%). - Le MSP n'a pas besoin de gérer la facturation — Scanyze s'en charge.
- Idéal pour : revendeur, agence qui veut prescrire Scanyze sans porter le risque crédit client.
Chaque MSP peut choisir le mode par client via le toggle billing_delegated sur le tenant managé (table msp_managed_tenants.billing_delegated).
Cashback Reseller
Pour le tier Reseller, chaque MSP a un code unique (REV-XXXXXX) géré dans reseller_codes. Quand un nouveau tenant s'inscrit avec ce code en query string (/register?ref=REV-XXXXXX), il est attribué au reseller via reseller_signups.tenant_id.
Le reseller touche un cashback de 20% (configurable jusqu'à 30%) sur les paiements du tenant attribué pendant les 12 premiers mois. Le cashback est versé mensuellement, en complément ou en réduction de la facture wholesale du reseller.
act_as_tenant — opérer comme un client
Un utilisateur MSP peut prendre temporairement le contexte d'un tenant managé pour effectuer des opérations en tant que ce tenant :
- Cliquer sur un tenant dans
/partner/clients - Cliquer sur Opérer comme ce client
- Le contexte de session bascule : sidebar, dashboard, droits = ceux du tenant managé
- Toutes les actions sont journalisées dans
audit_logsavecaction='msp_act_as_tenant'et le client final voit ces actions dans son audit trail - Cliquer sur Quitter le contexte pour revenir au portail MSP
Cette feature est volontairement transparente côté client final (visible dans son audit) pour respecter la traçabilité.
Sections de cette documentation
- Onboarding — comment devenir partenaire, activation, premier client
- Gestion des clients — créer, suspendre, plans, quotas
- Facturation — mode reseller vs direct, factures consolidées, cashback
- White-label — branding, custom domain, rapports avec votre marque
- API MSP — endpoints
/partner/*, API keys MSP - Reporting — dashboard MSP, MRR, posture moyenne, alertes critiques
- Best practices — flow client recommandé, plans à proposer, comm
Sources de cette page
- Migrations :
000099(tiers initiaux),000127(renommage),000152(reseller code),000153/000154(MSP extensions + API keys),000169(split MSP from tenant) - Backend :
secuscan-api/internal/api/handlers/partner.go,partner_msp.go,admin_partners.go,compliance_msp.go - Frontend :
secuscan-web/app/(dashboard)/partner/
Documentation à jour pour Scanyze v0.130.x — Phase 1 du split MSP/Tenant complétée.