{
"_doc": "Catalogue de motifs de détection pour audit-souverainete, organisé par thème. Chaque règle : id, theme, motif (regex Python), niveau (haute|moyenne|info), description, alternative_souveraine. Motifs volontairement conservateurs (spécifiques) pour limiter les faux positifs sur des mots génériques.",
"regles": [
{
"id": "CLOUD-AWS-01",
"theme": "cloud_infrastructure",
"motif": "\\b[a-z0-9.\\-]*\\.amazonaws\\.com\\b|\\bboto3\\b|\\baws-sdk\\b",
"niveau": "haute",
"description": "Dépendance à AWS (endpoint direct ou SDK) — service cloud non-souverain.",
"alternative_souveraine": "Hébergement auto-géré (MinIO pour S3, PostgreSQL auto-hébergé, etc.) ou hébergeur souverain (CHATONS, OVHcloud région EU)."
},
{
"id": "CLOUD-GCP-01",
"theme": "cloud_infrastructure",
"motif": "\\bgoogleapis\\.com\\b|\\bgoogle-cloud[_\\-][a-z]+\\b|\\bfrom google\\.cloud\\b",
"niveau": "haute",
"description": "Dépendance à Google Cloud Platform — service cloud non-souverain.",
"alternative_souveraine": "Équivalent auto-hébergé ou hébergeur souverain européen."
},
{
"id": "CLOUD-AZURE-01",
"theme": "cloud_infrastructure",
"motif": "\\b[a-z0-9.\\-]*\\.azure\\.com\\b|\\bazure-sdk\\b|\\b@azure/[a-z\\-]+\\b",
"niveau": "haute",
"description": "Dépendance à Microsoft Azure — service cloud non-souverain.",
"alternative_souveraine": "Équivalent auto-hébergé ou hébergeur souverain européen."
},
{
"id": "IA-OPENAI-01",
"theme": "ia_generative_tierce",
"motif": "\\bapi\\.openai\\.com\\b|\\bimport openai\\b|\\bfrom openai\\b|\\bOpenAI\\(",
"niveau": "haute",
"description": "Appel à l'API OpenAI — dépendance IA générative tierce.",
"alternative_souveraine": "Modèle auto-hébergé (open-weight, quantifié) exécuté sur infrastructure propre."
},
{
"id": "IA-ANTHROPIC-01",
"theme": "ia_generative_tierce",
"motif": "\\bapi\\.anthropic\\.com\\b|\\bimport anthropic\\b|\\bfrom anthropic\\b",
"niveau": "haute",
"description": "Appel à l'API Anthropic (Claude) — dépendance IA générative tierce.",
"alternative_souveraine": "Modèle auto-hébergé (open-weight, quantifié) exécuté sur infrastructure propre."
},
{
"id": "IA-AUTRES-01",
"theme": "ia_generative_tierce",
"motif": "\\bapi\\.mistral\\.ai\\b|\\bapi\\.cohere\\.ai\\b|\\bgenerativelanguage\\.googleapis\\.com\\b",
"niveau": "haute",
"description": "Appel à une autre API LLM tierce (Mistral/Cohere/Gemini).",
"alternative_souveraine": "Modèle auto-hébergé (open-weight, quantifié) exécuté sur infrastructure propre."
},
{
"id": "TELEMETRIE-GA-01",
"theme": "telemetrie_analytics",
"motif": "\\bgoogle-analytics\\.com\\b|\\bgtag\\(|\\bGA_MEASUREMENT_ID\\b",
"niveau": "moyenne",
"description": "Télémétrie Google Analytics — fuite de données de navigation vers un tiers.",
"alternative_souveraine": "Analytics auto-hébergé (Plausible, Umami, Matomo)."
},
{
"id": "TELEMETRIE-SEGMENT-01",
"theme": "telemetrie_analytics",
"motif": "\\bsegment\\.(io|com)\\b|\\banalytics\\.track\\(",
"niveau": "moyenne",
"description": "Télémétrie Segment — collecte de données comportementales tierce.",
"alternative_souveraine": "Analytics auto-hébergé (Plausible, Umami, Matomo)."
},
{
"id": "TELEMETRIE-SENTRY-01",
"theme": "telemetrie_analytics",
"motif": "\\bsentry\\.io\\b|\\bimport sentry_sdk\\b|\\bSentry\\.init\\(",
"niveau": "moyenne",
"description": "Rapport d'erreurs envoyé à Sentry (SaaS tiers) — peut inclure des données sensibles.",
"alternative_souveraine": "Instance Sentry auto-hébergée (self-hosted), ou logging local structuré uniquement."
},
{
"id": "TELEMETRIE-AUTRES-01",
"theme": "telemetrie_analytics",
"motif": "\\bmixpanel\\.com\\b|\\bamplitude\\.com\\b|\\bposthog\\.com\\b",
"niveau": "moyenne",
"description": "Autre plateforme d'analytics/télémétrie tierce (Mixpanel/Amplitude/PostHog SaaS).",
"alternative_souveraine": "Analytics auto-hébergé (Plausible, Umami, Matomo, ou PostHog en mode self-hosted)."
},
{
"id": "PAIEMENT-STRIPE-01",
"theme": "paiement_tiers",
"motif": "\\bapi\\.stripe\\.com\\b|\\bimport stripe\\b|\\bStripe\\(",
"niveau": "info",
"description": "Intégration Stripe — dépendance tierce souvent difficile à éviter pour le paiement en ligne, mais à signaler consciemment (pas nécessairement une dette à corriger).",
"alternative_souveraine": "Peu d'alternatives pleinement souveraines pour le paiement carte — documenter le choix comme un compromis assumé plutôt qu'un oubli."
},
{
"id": "PAIEMENT-PAYPAL-01",
"theme": "paiement_tiers",
"motif": "\\bapi[\\-.]paypal\\.com\\b|\\bpaypalrestsdk\\b",
"niveau": "info",
"description": "Intégration PayPal — dépendance tierce de paiement, même remarque que Stripe.",
"alternative_souveraine": "Peu d'alternatives pleinement souveraines — compromis à documenter."
},
{
"id": "MSG-TWILIO-01",
"theme": "messagerie_notification_tierce",
"motif": "\\bapi\\.twilio\\.com\\b|\\bimport twilio\\b|\\bTwilioRestClient\\b",
"niveau": "haute",
"description": "SMS/appels via Twilio — dépendance tierce de messagerie.",
"alternative_souveraine": "Passerelle SMS auto-hébergée via opérateur télécom direct, ou messagerie in-app chiffrée (déjà présente dans solivram)."
},
{
"id": "MSG-SENDGRID-01",
"theme": "messagerie_notification_tierce",
"motif": "\\bapi\\.sendgrid\\.com\\b|\\bimport sendgrid\\b|\\bsendgrid-python\\b",
"niveau": "haute",
"description": "Envoi d'email via SendGrid — dépendance SMTP tierce.",
"alternative_souveraine": "Serveur SMTP auto-hébergé, ou suppression de la vérification email par principe de souveraineté (patron déjà adopté par solivram-website)."
},
{
"id": "MSG-MAILGUN-01",
"theme": "messagerie_notification_tierce",
"motif": "\\bapi\\.mailgun\\.net\\b|\\bimport mailgun\\b",
"niveau": "haute",
"description": "Envoi d'email via Mailgun — dépendance SMTP tierce.",
"alternative_souveraine": "Serveur SMTP auto-hébergé, ou suppression de la vérification email par principe de souveraineté."
},
{
"id": "MSG-FIREBASE-01",
"theme": "messagerie_notification_tierce",
"motif": "\\bfcm\\.googleapis\\.com\\b|\\bfirebase-admin\\b|\\bfirebase_admin\\b",
"niveau": "haute",
"description": "Notifications push via Firebase Cloud Messaging — dépendance Google.",
"alternative_souveraine": "Notifications in-app via WebSocket propre (patron déjà utilisé par solivram-website, B-MSG-01/B-NOTIF-01)."
}
],
"crypto_classique_marqueurs": {
"_doc": "Vérification niveau-projet (pas ligne par ligne) : présence de ces motifs dans les manifestes de dépendances SANS présence des marqueurs PQC ci-dessous → signal 'info'.",
"classique": ["rsa", "ecdsa", "cryptography", "pycryptodome", "openssl-sys", "ring", "p256", "p384"],
"pqc": ["ml-kem", "ml-dsa", "kyber", "dilithium", "pqcrypto", "liboqs", "rustls-post-quantum"]
},
"manifestes_reconnus": ["requirements.txt", "Cargo.toml", "package.json", "pyproject.toml"]
}