Cette page résume l’hygiène de sécurité V1 (dogfood mono-tenant). Elle sera réécrite en profondeur avant tout premier client pilote externe.

Périmètre V1

En V1, il n’y a qu’un seul projet et une seule clé API. Le risque principal n’est pas l’abus externe mais l’hygiène de base : ne pas exposer inutilement la clé API ni les endpoints d’infrastructure.

Clé API

  • Une clé unique par projet, générée avec haute entropie (jch_ + secrets.token_urlsafe(32)).
  • Self-service depuis le dashboard (JWT) : reveal, copy, regenerate.
  • La régénération invalide immédiatement l’ancienne clé.
  • Permission V1 : ingestion_write (écriture d’événements uniquement).
Côté SDK web, la clé est exposée au client : elle identifie le projet et n’autorise que POST /v1/events, jamais la lecture du dashboard. Voir Authentification.

Données & PII

  • Le SDK sanitize les properties côté client : blocage des clés sensibles, troncature texte, plafond 32 Ko. Voir Sanitize.
  • IP publique : capturée côté serveur (X-Forwarded-For), stockée dans properties.server.clientIp + ipHash (SHA-256). Le client ne collecte jamais l’IP.
  • Géolocalisation : enrichissement serveur uniquement (properties.server.geo). V1 = stub country: unknown ; GeoIP réel en V2.

Infrastructure

  • ClickHouse et Postgres ne sont pas exposés publiquement — accès restreint à l’API.
  • L’API d’ingestion est le seul composant exposé : ingestion (clé projet) + lecture dashboard (JWT).
  • Secrets (clé Anthropic, secret JWT) : jamais dans le code.

Screenshots de heatmap

Les captures tournent sur l’API, pas dans le navigateur du visiteur. Le crawler n’ouvre que project.website_url + path après les contrôles SSRF (validate_public_http_url). Les JPEG sont dans un préfixe Minio privé (heatmap-captures/) et passent par un endpoint dashboard authentifié. Ne pas mettre ces objets sur la policy publique des avatars.

Reporté à V2

Scoping des clés

Une clé par connecteur, multi-clés actives, grace period post-rotation.

Hash write-only

Reveal impossible sans rotation.

Rôles & permissions

Gestion multi-utilisateurs et rôles.

Rétention & RGPD

Politique de rétention et suppression des données personnelles.

Rate limiting

Détection d’abus sur l’ingestion.

Chiffrement au repos

Spécifique aux données personnelles dans properties.
Ce document ne remplace pas un audit de sécurité formel. Il documente l’hygiène minimale acceptable pour un usage dogfood mono-tenant.