La sécurité, énoncée simplement.
Pas de mur de badges : les contrôles précis et vérifiables présents dans le produit aujourd'hui. Posez des questions difficiles : hello@pauli.xyz.
Transport & authentification
- Entrée TLS uniquement. L'API écoute sur la boucle locale ; le seul point d'entrée public termine TLS, les clés bearer ne circulent donc jamais en clair.
- Clés hachées, affichées une fois. Hachages SHA-256 au repos ; le texte en clair n'est renvoyé qu'une seule fois, à la création ou à la rotation. Rotation et révocation sont instantanées.
- Isolation par espace de travail à chaque requête. Périmétrée dans la couche de persistance ; les lectures inter-locataires renvoient 404, pas 403.
- Limitation de débit par clé. Seaux de jetons dans Redis ; fail-open ou fail-closed est un choix d'exploitant.
Webhooks
- Charges signées. HMAC-SHA256 horodaté (
X-Pauli-Signature) sur les octets exacts de la charge, si bien qu'une livraison capturée ne se rejoue que dans votre tolérance de vérification ; les rotations signent avec l'ancien et le nouveau secret pendant une fenêtre de recouvrement.X-Pauli-Event-Iddéduplique. - Gardes SSRF, deux fois. URLs de webhook en https uniquement, refusées quand elles résolvent vers du non-public (boucle locale, RFC 1918, lien-local, métadonnées cloud) à l'envoi, et revérifiées à la livraison contre le DNS rebinding. Toujours actif ; pas d'interrupteur.
Argent & intégrité des données
- Decimal de bout en bout. L'argent ne passe jamais par des flottants ; les montants de l'API sont des chaînes décimales exactes.
- Facturation exactement-une-fois, imposée par la base. Des index uniques partiels protègent facturations, débits et remboursements ; les relances et redistributions ne peuvent ni double-facturer ni double-créditer.
- Les paiements ne créditent que sur fonds confirmés. Les webhooks Stripe sont vérifiés en signature avec tolérance de rejeu ; un compare-and-swap de statut rend le crédit idempotent.
- Journal d'audit en append-only. Cycle de vie des clés, événements de jobs, facturation, décisions de conformité et échecs d'authentification, écrits dans la même transaction que l'action.
Exploitation
- Une seule source de vérité. Postgres détient tout l'état ; perdre la file ne perd ni jobs, ni résultats, ni argent.
- Traitement résistant aux crashs. Les workers réclament les jobs avec des bails et committent à chaque frontière de phase ; des balayages redérivent tout travail lâché par un processus mort.
- Sauvegardes vérifiées. Testées en restauration selon un calendrier (une sauvegarde non restaurée n'est pas une sauvegarde) ; des copies chiffrées partent hors hôte.
- Les erreurs ne divulguent jamais l'interne. Les corps 5xx ne portent qu'un code stable et un id de requête ; le détail reste dans les logs côté serveur.
- Page de statut publique. Hébergée hors de notre infrastructure sur status.pauli.xyz, pour rester joignable quand nous ne le sommes pas.
Posture de conformité
- Barrière de contrôle des exportations dans le routeur. Le matériel contrôlé n'est routé que vers des espaces de travail filtrés avec juridiction déclarée ; chaque refus est audité.
- Filtrage des parties interdites. Chaque décision de filtrage est auditée ; le routage la lit à chaque requête.
À propos de SOC 2 : nous nous certifierons quand des
clients l'exigeront, et nous remplissons les questionnaires de sécurité
sur demande.
Signaler une vulnérabilité
Écrivez à hello@pauli.xyz avec les étapes de reproduction. Nous accusons réception sous deux jours ouvrés et n'engageons aucune action en justice contre la recherche de bonne foi.