Sécurité de la plateforme Enterprise AI
English version: en/README.md
Pages
| Page | Contenu |
|---|---|
| threat-model.md | Actifs, frontières de confiance, profils d'attaquants, STRIDE par couche |
| injection-matrix.md | Une ligne par classe d'attaque : contrôle, réglage, test qui le prouve, risque résiduel |
| configuration.md | Réglages EAI_* de sécurité, garde de démarrage en production, réglages de sécurité par tenant, API de posture, clés Helm |
| runbooks.md | Procédures d'incident |
| testing.md | Lancer les tests de sécurité et les scanners en local et en CI |
| identity-context-delegation.md | Context Authority, ExecutionContext signé, délégations, mandats, accès d'urgence, quatre yeux, champs d'identité de l'audit |
| soc-runbook.md | SOC et AI-SDR : détections, corrélation, risque, réactions typées, registre des kill switches et reçus, reprise à quatre yeux, chaîne de possession des preuves, rapprochement des transactions |
| governance.md | Vue d'ensemble de la gouvernance : qui décide, contrôles par couche, registre, politiques, audit, SOC, revue périodique |
| hardening.md | Liste de contrôle du durcissement d'une installation de production, étape par étape |
| authentication-authorization.md | Identifiants acceptés, Keycloak OIDC, comptes locaux, clés d'API, SPIFFE, résolution du tenant, rôles, OpenFGA, OPA, correspondances de groupes |
| identity-policy-plane.md | Guide d'exploitation de Keycloak, SPIRE, OpenFGA, OPA et bundles signés, KMS et HSM |
| secrets-vault.md | Secrets des tenants, clés de chiffrement Transit, clés de la plateforme, coffre-fort IT du Control Plane |
| file-security-pipeline.md | Quarantaine, ClamAV, YARA-X, verdicts, règles verrouillées, fichiers bloqués, rôles et preuves |
| approvals.md | Circuit d'approbation, approbation des runs, promotions, chemin de changement, règles des quatre yeux |
| retention-privacy.md | Classification, DLP, tokenisation, rétention, conservations légales, effacement, consentements |
| data-protection.md | Protection des données du RAG, chaînes Docling et PaddleOCR, revue de quarantaine |
| risk-compliance.md | Registre des risques AI Act, registre de gouvernance, preuves, catalogue de contrôles et référentiels |
| audit-evidence.md | Audit Gateway et Evidence Service : garanties, rôles, réglages, vérification hors ligne |
Pages d'exploitation liées (non dupliquées ici) :
- Durcissement réseau et DNS
- Passerelle et WAF
- Sécurité des pods
- Durcissement des services de données
- Portes de sécurité CI
- Durcissement sécurité de l'infrastructure
- Secrets de la plateforme
- Correspondance de conformité
- SIEM et audit
- Guide de la sécurité des fichiers
- Contrat API, section Security (cross-cutting)
Principes
- Défense en profondeur. Une requête traverse le portail (CSP avec nonce,
safeHref), la passerelle APISIX avec Coraza et l'OWASP CRS, les politiques Cilium, puis l'API Control Plane (limites de taille, limitation de débit, authentification, RBAC, RLS). Aucune couche ne suppose que la précédente a fait son travail. - Chaque couche applique son propre contrôle. Exemple : le WAF filtre le SSRF évident, mais
eai.security.egressrevalide chaque adresse résolue au moment de la connexion, et Cilium refuse de toute façon l'adresse de métadonnées cloud. - Refus par défaut. Réseau en default deny (
deploy/cilium/baseline.yaml), sortie HTTP refusée vers les adresses privées sauf liste blanche explicite (EAI_EGRESS_PRIVATE_ALLOWLIST), algorithmes JWT limités à une liste asymétrique, garde de démarrage qui refuse une configuration de production dangereuse (eai.security.startup.enforce). - Isolation des tenants par RLS PostgreSQL.
eai.db.txpositionne le tenant de la transaction ; les politiques RLS filtrent chaque ligne. Une ressource d'un autre tenant répond 404 (test_cross_tenant_access_is_404). La RLS est forcée sur chaque table de tenant (FORCE ROW LEVEL SECURITY, migration V100) : même une connexion propriétaire des tables, hors bascule vers le rôleeai_app, ne voit que ce que les politiques admettent, et le contexte système passe pareai.is_platform()(test_core_rls_forced.py). - Les secrets ne sont jamais exposés aux agents. Les secrets vivent dans OpenBao (
EAI_OPENBAO_URL) ou sont chiffrés parEAI_MASTER_KEY; les outils, MCP et connecteurs reçoivent des références, jamais la valeur en clair dans le prompt. Les SDK masquent les clés (eai_***) et la CLI les masque dansconfig show.
Les événements de sécurité sont écrits par eai.security.security_event dans la chaîne d'audit du tenant (et seulement journalisés sans tenant), voir runbooks.md.