Trust center
Architecture · v3 · 27 mai 2026

L'architecture en clair. Documentation technique exhaustive pour vos RSSI.

Vue d'ensemble

Coffrify est déployé sur Vercel (région Paris cdg1) pour le frontend et l'API Next.js. Le stockage objet est sur Scaleway Object Storage S3-compatible (région fr-par, Paris). La base PostgreSQL est managée par Supabase (région eu-west-3, Paris UE) avec row-level security activée sur les 64 tables tenant du schéma public.

Topologie · simplifiée
EdgeTLS 1.3 · WAFAPI · webVercel · edgeWorkersscan · webhooksPostgreSQLSupabase · RLSS3 · objectsScaleway · AES-256KMS ScalewaySSE-KMS · fr-par

Données au repos

Tous les objets dans S3 sont chiffrés AES-256-GCM côté serveur via SSE-S3 (clés gérées par Scaleway HSM). En mode E2E, une couche additionnelle AES-256-GCM côté client est appliquée par chunks de 4 MiB avant upload, la clé est 256-bit aléatoire et transitée par fragment URL (#k=…), donc jamais envoyée en HTTP au serveur. La base PostgreSQL Supabase bénéficie du chiffrement at-rest natif AES-256.

Données en transit

marketing.trust_architecture.transit_body

Gestion des clés

Deux modes : (1) Server-side via Scaleway Object Storage SSE-S3, AES-256 par défaut, clés gérées par Scaleway dans la région fr-par (ISO 27001, HDS). L'intégration Customer-Managed Keys via Scaleway Key Manager est implémentée côté Coffrify et activable dès que Scaleway publiera la GA SSE-KMS sur Object Storage. (2) End-to-end : clé AES-256 générée aléatoirement côté client (crypto.subtle.generateKey), transportée par fragment URL (#k=…) jamais envoyé en HTTP. La clé n'existe jamais sur nos serveurs. Mode E2E activé sur demande, transparent pour le récipiendaire.

Isolation tenant

Isolation au niveau base via row-level security PostgreSQL (RLS) activée sur la colonne workspace_id de toutes les tables tenant. Pas de partage de connexion DB entre workspaces (pooling Supabase scoped). Object Storage : préfixes s3://coffrify-transfer/{transfer_id}/ dérivés du workspace_id. Aucun chemin d'accès cross-tenant n'existe dans le code.

Backups

Backups PostgreSQL automatiques par Supabase, chiffrés au repos, rolling 30 jours sur le plan actuel. Objets storage : lifecycle de purge à 365 jours pour les Ultra, 90 jours pour les Pro, 7 jours pour les Free, géré par la Scaleway Lifecycle Rule du bucket. Aucune réplication hors UE (Scaleway fr-par + Supabase eu-west-3 + Vercel cdg1).