Conception

Sécurité

Frontière des secrets

SecretLu parJamais
MATOMO_TOKEN_AUTHserverConfigFromEnvVariable NEXT_PUBLIC_*
RYBBIT_API_KEYFabrique serveurBundle navigateur
OPENOBSERVE_AUTHCollecteur OTLPApplication
Mots de passe des basesCompose uniquementDépôt

browserConfigFromEnv ne lit que des variables NEXT_PUBLIC_* : la fonction n'a aucun chemin d'accès aux jetons d'écriture, même par erreur de câblage.

Vérification après chaque build :

TerminalCode
grep -rl "MATOMO_TOKEN_AUTH\|RYBBIT_API_KEY\|rb_org_" .next-saclay/static/ && echo "FUITE" || echo "aucun secret dans le bundle"

L'application n'écrit pas dans le stockage

Le collecteur OTLP est le seul composant à porter les identifiants OpenObserve. L'application ne connaît que l'adresse du collecteur. Compromettre le conteneur applicatif ne donne donc pas accès au stockage de télémétrie.

Exposition réseau

Tous les ports du POC sont liés à 127.0.0.1. Pour un déploiement distant, seuls les endpoints d'ingestion doivent être publics ; les bases et les interfaces d'administration restent privées.

/api/send d'Umami n'exige aucune authentification. Exposé tel quel, il permet à quiconque d'injecter des événements. Une limitation de débit au niveau du proxy est indispensable avant toute exposition publique.

Caviardage, deux niveaux

  1. Application : schéma d'événement (vocabulaire fermé), puis caviardage des clés interdites et des motifs sensibles.
  2. Collecteur : suppression de http.request.header.authorization, cookie, set-cookie, user.email et enduser.id avant écriture.

Le second niveau existe parce que le premier peut être contourné par une instrumentation automatique qui ajouterait des attributs sans passer par la façade.

Identifiants par défaut

Ceux du POC (Complexpass#123, umami, MatomoLocal!2026, RybbitLocal!2026) sont des valeurs de poste local. Ils figurent dans .env.example, jamais dans un .env versionné. Ils doivent être remplacés hors de ce poste.

Ce qui n'est pas fait

  • Pas de TLS entre l'application et le collecteur.
  • Pas de limitation de débit sur les endpoints d'ingestion.
  • Pas d'analyse de vulnérabilité des images (Trivy) ni de détection de secrets (Gitleaks) en CI.
  • Conteneurs non durcis : pas d'utilisateur non privilégié imposé, pas de système de fichiers en lecture seule.