Sterryk

Sekuriteit en vertroue

Hoe die platform jou data en jou geld beskerm. Elke beheermaatreël wat hier beskryf word, word in kode afgedwing en deurlopend getoets — dit is nie ’n voorneme nie. Waar ’n bewering op ’n spesifieke meganisme rus, noem ons dit.

Hierdie bladsy is ook in English beskikbaar.

Jou data is by die databasis geïsoleer, en faal geslote PostgreSQL FORCE-ryvlaksekuriteit · dubbelsleutel-isolasie · hek: check_rls.py

Elke huishouding se data lê agter PostgreSQL se ryvlaksekuriteit wat op FORCE gestel is, sodat die isolasiebeleid selfs die tabel se eienaar bind. Twee onafhanklike sleutels beperk elke navraag — een vir die huishouding en een vir die individuele lid — sodat lid-private inligting privaat bly vir daardie lid. Die ontwerp faal geslote: as die versoek se konteks ooit ontbreek, gee ’n navraag nul rye terug eerder as om te lek. Geen diens koppel as ’n supergebruiker aan die databasis nie (dit sou ryvlaksekuriteit omseil); hulle koppel as rolle met die minste voorregte, wat dit nie kan omseil nie.

Dit word nie aan gewoonte oorgelaat nie. ’n Blokkerende toets (check_rls.py) laat nie toe dat ’n huishouding-gerigte tabel sonder sy isolasiebeleid uitgestuur word nie, en ’n tweede kopie van daardie toets loop deurlopend teen die lewendige produksiedatabasis.

Geld is presies, slegs-byvoeg, en peuterbewys heelgetal-minimumeenhede · REVOKE UPDATE/DELETE + sneller · hutsketting · hek: check_audit_chain.py

Finansiële rekords word as presiese heelgetalbedrae gestoor (nooit as swewendepunt-getalle nie) in ’n slegs-byvoeg-grootboek: die looptydrol het geen toestemming om ’n geboekte inskrywing by te werk of te skrap nie, ’n databasissneller verwerp mutasie, en ’n regstelling word as ’n nuwe teenoorgestelde inskrywing aangeteken eerder as ’n wysiging. Boonop word inskrywings in ’n hutsketting per tydperk geskakel, sodat enige peutery van buite opgespoor kan word. ’n Verifieerder loop in ons toetse én deurlopend teen die lewendige grootboek, en slaan alarm by enige breuk.

Een vertrouensgrens bepaal wie jy is die poort stroop identiteitskopstukke af en spuit dit weer in · hek: check_gateway_trust.py

Identiteit word op presies een plek bepaal. Die poort stroop elke inkomende identiteitskopstuk af van ’n inkomende versoek en spuit dit eers weer in nadat die oproeper teen die identiteitsdiens geverifieer is — sodat ’n kliënt nooit kan beweer wie hy is deur ’n kopstuk te vervals nie. Verifikasie werk met draertokens (geen omgewingsessiekoekie nie), wat ’n hele klas kruistuisversoek-aanvalle uitskakel, en die rand beperk boonop die tempo van aanmeld- en registrasieverkeer. ’n Toets bevestig dat die afstrooplys en die herinspuitlys in pas bly, sodat hierdie grens nie stilweg kan terugval nie.

Rugsteune lê weg van die gasheer, en herstel word geoefen geënkripteerde rugsteune weg van die gasheer · toegewyde vanlyn rol · docs/DEPLOY_FIRST_BRINGUP.md

Die databasis word volgens ’n skedule gerugsteun en weg van die gasheer gekopieer, sodat ’n verlore bediener nie verlore data beteken nie. Rugsteune loop onder ’n toegewyde, leesalleen, vanlyn rol — nooit ’n rol wat lewendige verkeer bedien nie. Ons oefen herstel teen ’n vars teiken sodat herstel ’n geoefende prosedure is, nie ’n hoop nie.

Geheime en ondertekeningsleutels roteer volgens ’n geoefende draaiboek geënkripteerde geheimestoor · gedokumenteerde rotasie · docs/KEY_ROTATION_RUNBOOK.md

Geheime leef net in ’n geënkripteerde stoor of ’n ingespuite omgewing — nooit in bronbeheer nie — en ’n geheime-skandering loop oor die kodebasis om dit so te hou. Ondertekeningsleutels roteer volgens ’n skedule, en sleutelrotasie volg ’n geskrewe draaiboek sodat dit veilig en herhaalbaar gedoen kan word.

Ons sekuriteitsreëls word afgedwing deur toetse wat móét kan faal CI-fiksheidsfunksies met bekende-slegte selftoetse

Die beheermaatreëls hierbo word deur outomatiese toetse in ons deurlopende-integrasiepyplyn bewaak. Elke sodanige toets kom met ’n doelbewus gebreekte toetsgeval wat dit moet vang — want ’n toets wat nie kan faal nie, bewys niks. As ’n verandering data-isolasie, die geldgrootboek, die vertrouensgrens of geheimehigiëne sou verswak, faal die bou voordat dit produksie kan bereik.

Sessie-herspeel is opt-in, gemasker, en bly in die huis toestemmingsgebonde (standaard af) · invoer- en teksmaskering · in-huis PostgreSQL onder FORCE RLS · 30 dae behoud · slegs ’n operateur-kyker

Sterryk kan ’n rekonstruksie van ’n sessie herspeel — bladsystruktuur en interaksies, nie ’n video of ’n skermopname nie — om ’n probleem wat jy aangemeld het, te diagnoseer. Omdat dit ’n kragtige hulpmiddel is, is dit standaard verdedigend gebou. Dit neem niks op totdat ’n aangemelde persoon dit uitdruklik aanskakel nie, en dit stop op die oomblik dat hulle dit afskakel; toestemming is die enigste grondslag, en daar is geen terugval op ’n regmatige belang nie.

Alles wat sensitief is, word in die blaaier gemasker voordat enigiets gestuur word: getikte invoerwaardes en teks op die skerm word nooit vasgevang nie, en geldoppervlakke — fakturering en die hele Heldaro-huis — word in die geheel as ondeursigtige plekhouers geblokkeer. Geen beelde, doek of lettertipes word versamel nie. ’n Opname rekonstrueer die vorm en vloei van ’n bladsy, nooit die persoonlike inhoud daarvan nie.

Opnames verlaat nooit ons infrastruktuur nie — hulle word in ons eie PostgreSQL gestoor onder dieselfde FORCE-ryvlaksekuriteit as die res van jou data, beperk tot die individuele lid en nie bloot die huishouding nie. Hulle is slegs sigbaar vir ’n gemagtigde operateur wat aan ’n spesifieke ondersteuningsversoek werk, en slegs vir die lid wat die probleem aangemeld het — daar is doelbewus geen kruisgebruiker-indeks om deur te blaai nie. Opnames verval outomaties na 30 dae.

Met wie ons data deel (subverwerkers)

Ons maak staat op ’n klein aantal deurgeligte derde partye om die diens te laat loop. Ons deel net wat elkeen vir sy funksie nodig het.

Huidige subverwerkers. Hierdie lys is onder weergawebeheer en word bygewerk voordat enige nuwe verskaffer lewendig gaan.
VerskafferDoelDataLigging
Paddle Handelaar van rekord — fakturering, betaalpunt, betalingsverwerking, belastingoorbetaling Faktuurkontak; intekening- & transaksierekords. Paddle hanteer kaartdata direk — ons stoor dit nooit nie. Verenigde Koninkryk / wêreldwyd
Hetzner Wolkgasheer — die bedieners en die primêre databasis Alle platformdata in rus Duitsland / Finland (EU)
Cloudflare R2 Objekstoor — rugsteune weg van die gasheer en produkbates/oplaaie Geënkripteerde rugsteune; opgelaaide inhoud Wêreldwyd
Google Opsionele "Meld aan met Google" E-pos, vertoonnaam, rekeningidentifiseerder Verenigde State / wêreldwyd
Microsoft Opsionele "Meld aan met Microsoft" E-pos, vertoonnaam, rekeningidentifiseerder Verenigde State / wêreldwyd
Anthropic KI-verwerking vir KI-ondersteunde funksies (agter ons uitgangskeelpunt) Die teks wat jy by ’n KI-funksie indien. Beelde/dokumente verlaat nooit die stelsel nie. Verenigde State
AWS SES Transaksionele e-pos (wagwoordherstel, e-posverifikasie) E-posadres; transaksionele boodskapinhoud Verenigde State / konfigureerbaar

Rapporteer ’n kwesbaarheid

As jy meen jy het ’n sekuriteitsprobleem gevind, wil ons daarvan hoor. Stuur asseblief ’n e-pos aan security@sterryk.com met genoeg besonderhede om dit te herhaal. Ons vra dat jy ons ’n redelike kans gee om te ondersoek en reg te maak voor openbare bekendmaking, en dat jy privaatheidskendings, datavernietiging en diensonderbreking vermy terwyl jy toets. Ons sal jou verslag erken en jou op hoogte hou terwyl ons daaraan werk.

Moet asseblief nie outomatiese skandeerders teen die lewendige diens gebruik nie, en moet nooit data wat nie joune is nie, verkry, wysig of behou terwyl jy ondersoek instel nie.