Sikkerhed
Hvordan OurAI er bygget, og hvad vi gør med det, du sender.
Arkitektur
Platformen er delt op i selvstændige tjenester, så den del, der ved, hvem du er, ikke er den samme som den, der håndterer dine samtaler, og heller ikke den, der holder styr på abonnement og faktura. Hver tjeneste har sin egen database, og ingen af dem kan nå de andres. Den tjeneste, der gemmer dine samtaler, gemmer aldrig dit navn eller din e-mailadresse, kun et id. Alt det, vi selv driver, kører i EU. Har din organisation brug for produktet på sin egen infrastruktur, kan alt undtagen betaling køre på jeres egen server. Læs om suverænitet.
Se detaljer
Fire tjenester, hver med sin egen database og sine egne adgangsoplysninger. Login og oplysningerne om din organisation ligger i kontrolplanet. Samtaler, filer, audit-loggen og gatewayen ud til modellerne ligger i dataplanet. Abonnementer og fakturaregnskabet ligger i regnskabstjenesten, som aldrig er på vejen i en forespørgsel. Selve login kører som den fjerde tjeneste med sit eget lager.
Inde i hver database kører programmet som en rolle, der hverken kan ændre skemaet eller slå adskillelsen mellem organisationer fra. Skemaændringer og sletning af konti kører under særskilte roller, der ikke bruges til andet. Nøglerne, der låser en krypteret audit-log op, findes kun i dataplanets miljø: kontrolplanet ville ikke kunne læse en audit-log, om det så prøvede.
Når tjenesterne taler sammen, viser begge sider et certifikat fra vores egen interne certifikatmyndighed, og hver tjeneste accepterer præcis én navngiven modpart frem for ethvert certifikat, myndigheden nogensinde har udstedt. TLS 1.3 er minimum på de interne forbindelser, ikke kun ude ved kanten. Undervejs i en forespørgsel spørger gatewayen kontrolplanet om tre ting: din plan, din politik og din saldo. Din prompt er ikke iblandt dem, og den forlader ikke dataplanet undtagen på vej til den modeludbyder, du har valgt.
Trafik udefra rammer først vores egen frontdør, der afslutter TLS 1.3 og sender videre efter domænenavn. Der står intet foran den: hverken et CDN eller en tredjepartsproxy ser din trafik i klartekst.
Kryptering og databaser
Dine data er krypteret på vejen til os og hver gang vores egne tjenester taler sammen. I databasen er de krypteret igen: dine samtaler, de filer du uploader og audit-loggen er hver især låst med en nøgle, der kun tilhører din organisation. Hver krypteret værdi er bundet til den række, den ligger i, så den ikke kan læses andre steder. Nøglen, der låser dem op, ligger ikke i databasen, så en kopi af databasen er ikke nok til at læse noget af det.
Se detaljer
Trafik ind til platformen er TLS 1.3, certifikater fornyes automatisk, og browsere får besked på aldrig at tale ukrypteret HTTP med os igen. Mellem vores egne tjenester viser begge sider et certifikat fra vores interne myndighed, hver tjeneste accepterer én navngiven modpart, og TLS 1.3 er også minimum der.
I hvile er ordningen den samme overalt, hvor den gælder: AES-256-GCM, én datanøgle pr. organisation, og hver krypteret værdi bundet til sin egen række. Bindingen betyder, at id på organisation og række indgår i den kryptografiske signatur, så en værdi, der løftes ud af én række og sættes ind i en anden, ikke kan dekrypteres frem for at give læsbar tekst.
Nøglerne pr. organisation er selv gemt krypteret og pakkes kun ud i hukommelsen af den ene tjeneste, der ejer dem. Nøglen, der pakker dem ud, ligger i den tjenestes miljø og i ingen database, så en stjålet databasekopi eller en kasseret disk giver kryptotekst og intet andet. Der er altid to sådanne nøgler i brug, en nuværende og en udgående, og det er dét, der gør det muligt at skifte en nøgle og pakke hver række om, uden at noget bliver ulæseligt. Det, ordningen ikke beskytter mod, er nogen, der allerede kontrollerer den kørende tjeneste. Det er et spørgsmål om, hvem der kan nå produktionsmiljøet, og det er besvaret under Adgang.
Adskillelsen mellem organisationer håndhæves af Postgres, ikke af at vores kode husker at filtrere. Vores interne statistik er det ene sted, hvor en rolle med vilje læser på tværs af organisationer, og den er tildelt kolonne for kolonne: prompts, svar, bruger-id og de indpakkede nøgler er ikke blandt de kolonner, den må læse, og samtaletabellerne er slet ikke synlige for den. Det ene, vi bevidst lader stå ukrypteret, er titlen på en samtale, fordi du søger på den.
| LAG | MEKANISME | NØGLER |
|---|---|---|
| Trafik ind til platformen | TLS 1.3 | Fornyes automatisk |
| Mellem vores tjenester | Gensidig TLS 1.3 | Vores egen interne CA, én navngiven modpart |
| Samtaler og filer | AES-256-GCM | Én nøgle pr. organisation |
| Audit-log | AES-256-GCM | Én nøgle pr. organisation |
| Diske og databaser | Diskkryptering | Hos vores hostingudbyder |
Adgang, jeres og vores
Kun dem, du inviterer, kommer ind i din organisation, og inde i den er dine samtaler kun dine. En kollega, der falder over et link til en af dem, får at vide, at den ikke findes, ikke at adgangen er nægtet. Hvad den enkelte kan, følger den rolle, du har givet, og to-faktor slår du selv til. Audit-loggen gemmer, hvad der blev skrevet, men holder forfatteren forseglet: administratorer kan læse en samtale, og der skal to af dem til at sætte navn på den. Hos os indgår det ikke i nogen del af driften at læse, hvad du sender.
Se detaljer
Adgang falder i fire spørgsmål: hvordan du logger ind, hvad der skiller organisationer og kolleger ad, hvem der kan læse audit-loggen, og hvad vi selv kan nå.
Din organisation
Du logger ind gennem vores identitetstjeneste med OpenID Connect. Adgangsbeviset holder femten minutter og bliver kontrolleret ved hver eneste forespørgsel; at forblive logget ind sker ved stille og roligt at bytte det til et nyt, og bliver et gammelt bevis brugt igen, bliver alle kontoens sessioner tilbagekaldt frem for at genbrugen bliver honoreret. To-faktor findes på alle planer, og du tilmelder dig selv. Din rolle, medlem, administrator eller ejer, står inde i selve beviset og bliver derfor vurderet ved hver forespørgsel frem for slået op og troet på.
Mellem organisationer, og inde i én
Adskillelsen mellem organisationer er en regel i Postgres, og den rolle, vores software forbinder som, har ikke lov til at slå den fra: kode, der glemte at filtrere, returnerer ingenting frem for en andens rækker. Dine samtaler er afgrænset en gang til, til dig personligt. Beder man om en kollegas samtale, får man “findes ikke” frem for “ingen adgang”, og det samme gælder en fil inde i den, som bliver afvist, før lageret overhovedet bliver rørt. “Ingen adgang” ville bekræfte, at samtalen findes.
Audit-loggen
Den findes for organisationer på en holdplan, og kun administratorer kan åbne den. En administrator kan læse de samtaler, den gemmer: det er dét, en audit-log er til for, og det er dét, der gør det muligt at se, om en samtale indeholder personoplysninger, før nogen beslutter, om der overhovedet skal sættes navn på. Det, en administrator ikke kan alene, er at sætte navn på. Én administrator anmoder og skriver en begrundelse, der ikke kan rettes bagefter; en anden, aldrig den samme person, håndhævet både i vores kode og af en regel i databasen, godkender. Anmodningen udløber efter et døgn. Er den godkendt, har den, der spurgte, to timer til at åbne den, og åbningen starter et vindue på femten minutter frem for en stående ret. Hvert eneste opslag af en identitet bliver skrevet ned i den samme transaktion, som udfører det, så der findes ikke et forløb, hvor nogen får at vide, hvem der har skrevet noget, uden at det står nogen steder. Vores software kan skrive til det spor og har ingen tilladelse til at slette i det.
Vores egen adgang
Vi læser ikke dine data som led i at drive platformen, og det er indrettet sådan frem for lovet. Dine prompts og svar bliver ikke skrevet i vores driftslogs: vi har en test, der planter en unik tekststreng i en prompt og fælder bygningen, hvis den nogensinde dukker op i en loglinje. De står ikke i vores fejlrapporter, hvor klienten aldrig vedhæfter indholdet af en forespørgsel, aldrig slutter sig til, hvem brugeren er, og kører en rensning over alt det, den sender. Og de indgår ikke i vores interne statistik, som er tildelt adgang kolonne for kolonne og slet ikke kan se samtaletabellerne.
Hvor vores adgang rækker
Et lille antal mennesker kan nå den maskine, platformen kører på, for nogen skal installere den, genskabe den og rette den. Den, der kan det, kan læse de nøgler, tjenesterne bruger. Reglen om to personer ovenfor er en kontrol på jeres administratorer, ikke på os. I stedet står, at kredsen er lille, at ingen rutineopgave kræver at røre kundeindhold, og at de veje, der kunne blotlægge det, er præcis dem, vi tester for at bevise, at de ikke gør. Er det ikke nok for din organisation, er det netop derfor, hele platformen kan køre på jeres egen infrastruktur i stedet.
| KONTROL | TILGÆNGELIGHED | NOTER |
|---|---|---|
| Login med OpenID Connect | Alle planer | Adgangsbeviset holder femten minutter og kontrolleres ved hver forespørgsel |
| To-faktor med app, sikkerhedsnøgle eller engangskoder | Alle planer | Slår du selv til inde i produktet |
| Adskillelse mellem organisationer | Alle planer | Håndhævet af databasen, ikke af koden |
| Dine samtaler inde i organisationen | Alle planer | Kun dine; en kollega får at vide, at samtalen ikke findes |
| Navn på forfatteren til en samtale i audit-loggen | Kræver to personer | Én administrator anmoder med en begrundelse, en anden godkender, og bevillingen udløber |
Hvad der forlader platformen
Din samtale går til den model, du har valgt, og til intet andet, bortset fra to kontroller, vi selv kører. Hver besked, du sender, og hvert svar, du får igen, bliver holdt op mod vores regler for acceptabel brug af en lille model, der kører i EU. Den kontrol er vores, den gælder på alle planer, og ingen indstilling slår den fra. Fra Pro og opefter maskerer Redaction personoplysninger, før en besked forlader os, og sætter de rigtige værdier tilbage i svaret, og maskeringen kører på vores egne maskiner, så intet bliver udleveret til en tredjepart for at kunne skjules. Udbyderne får ordene, ikke personen. Intet af det, du sender, træner nogen model, hverken vores eller andres.
Se detaljer
Nedenfor står det hele: hvad en udbyder får, de to kontroller vi selv kører, hvad værktøjerne rækker ud efter, og hvem vi regner som underdatabehandler.
Hvad en udbyder får
Samtalen, de filer der er vedhæftet den, de instruktioner vi selv lægger til, det du har bedt os huske, og listen over de værktøjer, modellen må kalde. Der følger intet med, som identificerer dig: hverken bruger-id eller organisations-id, ingen e-mailadresse, og hverken din browser eller din IP-adresse. Forbindelsen bliver lavet af vores egen server og godkendt med vores egen konto hos udbyderen. Udbyderen ser en samtale; den ser ikke, hvis den er.
Kontrollen af acceptabel brug
Før en besked bliver sendt videre, og igen før et svar når frem til dig, bliver teksten klassificeret af Mistral Small. Mistral ligger i Frankrig, og det er det ene sted, hvor indhold bliver sendt et sted hen, du ikke selv har valgt. Det er en klassifikation og ikke et svar: den giver en afgørelse og en kategori, og teksten kommer ind pakket ind, så en besked ikke kan tale sig ud af at blive klassificeret. Kontrollen på vejen ud kører efter Redaction, og kontrollen på vejen hjem kører, før de rigtige værdier bliver sat tilbage, så hvor Redaction er slået til, ser ingen af de to omgange personoplysninger. Kontrollen kan ikke slås fra af nogen, hverken af dig, af din administrator eller ved at holde Mistral ude af de modeller, din organisation tillader, for klassifikatoren bliver fundet uden om jeres modelindstillinger. Den fejler lukket: løber den tør for tid eller svarer den noget, vi ikke kan læse, bliver beskeden afvist frem for sendt ukontrolleret videre. En blokeret prompt er en prompt, ingen udbyder har set.
Redaction
Findes fra Pro og opefter og er slået til som standard, hvor den findes. Motoren, der finder personoplysningerne, kører i en container hos os selv og nås over den samme gensidige TLS som alt andet internt, for ingen tredjepart skal være involveret i at finde dine personoplysninger, det ville nærmest ophæve formålet. Den læser dansk og engelsk, herunder CPR-numre, og den maskerer hver besked i forespørgslen under den samme fælles oversættelse, så et navn, der blev nævnt for tyve svar siden, stadig er maskeret i dag. Første gang den finder noget, sætter forespørgslen på pause og viser dig, hvad der er ved at blive skjult. Du kan vælge at lade en værdi stå, og det valg bliver skrevet i audit-loggen; en administrator kan slå den mulighed helt fra. Svaret kommer tilbage med de rigtige værdier sat ind igen, så du læser dine egne ord, og udbyderen aldrig så dem.
Filer og vedhæftninger
Filer er dækket ved omdannelse frem for ved håb. En PDF, et Word-dokument, et regneark eller en PowerPoint bliver lavet om til ren tekst på vores egne maskiner, før noget af det andet kører, uden hjælp fra nogen tjeneste udefra, som ville lægge indholdet uden for Redactions rækkevidde, og hvor Redaction er slået til, får udbyderen den maskerede tekst i stedet for filen. Dit oprindelige dokument forlader aldrig platformen. Hvad du kan vedhæfte, er en lukket liste: de fire formater, almindelige tekst- og kodefiler, og billeder i de fire gængse webformater. Alt andet bliver afvist ved upload frem for sendt videre som noget, vi ikke kan læse. To ærlige begrænsninger. Billeder bliver ikke maskeret: der er ingen tekst at hente ud af et fotografi, vi kører ikke tegngenkendelse på det, og et billede sendt til en model, der læser billeder, rejser som billedet selv. Og et dokument uden tekst i, et scan eller en fotograferet kontrakt, ville ellers passere som “ikke noget at maskere”, når sandheden er, at intet nogensinde blev læst; den slags stopper og spørger dig, før det bliver sendt.
Værktøjer
Når websøgning er slået til, går den søgesætning, modellen formulerer, til Brave i USA, og vores egen server, ikke din browser, henter siderne bag resultaterne, så ingen hjemmeside får noget at vide om dig. Sidetekst bliver behandlet som fjendtligt input: den når modellen forseglet som data, og der findes intet værktøj, der lader modellen selv pege på en side, den vil hente. Bærer en søgesætning stadig en maskering, bliver søgningen afvist frem for sendt. Billedgenerering går til OpenAI, uanset hvilken model du chatter med, fordi billedmodellen er en selvstændig tjeneste bag vores eget værktøj.
Hvad den anden side gemmer
Hos Anthropic bruger vi deres promptcache på fem minutter, så begyndelsen af en lang samtale ligger hos dem nogle minutter ad gangen. Det er den eneste opbevaring hos en udbyder, vi bevidst slår til. Alt andet følger udbyderens egne API-vilkår, og det er derfor, listen nedenfor både nævner selskabet, og hvor det ligger.
Træning
Vi træner ikke modeller. Ikke på dine samtaler, ikke på dine filer, ikke på din audit-log; der findes ingen vej i systemet, der gør det, og intet datasæt samlet af dit indhold. Hos de udbydere, vi sender videre til, bruger vi hver enkelts erhvervs-API frem for et forbrugerprodukt, og vi vælger udbydere, hvis API-vilkår siger, at det, der sendes ind og kommer ud, ikke bliver brugt til at træne deres modeller. Det er en kontraktlig forsikring fra dem frem for noget, vi kan håndhæve i kode. Det, vi kan gøre, og gør, er at oplyse, hvor hver udbyder ligger, og lade jeres administratorer bestemme, hvilke af dem din organisation overhovedet må bruge. Det valg bliver håndhævet i gatewayen og ikke bare skjult i menuen: en model, din organisation ikke har tilladt, bliver afvist, også selv om der bliver spurgt direkte efter den.
| GÅR UD | TIL HVEM | HVORNÅR |
|---|---|---|
| Din besked og samtalen indtil nu | Udbyderen af den model, du har valgt | Hver forespørgsel |
| Filer du vedhæfter | Den samme udbyder | Når modellen kan læse dem |
| Din besked og svaret, til en afgørelse om acceptabel brug | Mistral, i EU | Hver forespørgsel og hvert svar, på alle planer |
| En søgesætning | Brave, i USA | Kun når websøgning er slået til og bliver brugt |
| En billedprompt | OpenAI | Kun når billedgenerering bliver brugt |
| Dit navn, din e-mail eller dit konto-id | Ingen | Bliver aldrig sendt med en forespørgsel |
| UNDERDATABEHANDLER | FORMÅL | PLACERING |
|---|---|---|
| Hetzner | Drift af platformen | EU |
| Anthropic | Modelkørsel, hvis jeres politik tillader det | USA |
| OpenAI | Modelkørsel og billedgenerering, hvis jeres politik tillader det | USA |
| Modelkørsel, hvis jeres politik tillader det | USA | |
| xAI | Modelkørsel, hvis jeres politik tillader det | USA |
| Mistral AI | Modelkørsel hvis jeres politik tillader det, og kontrollen af acceptabel brug på hver forespørgsel og hvert svar | EU |
| Alibaba Cloud (Qwen) | Modelkørsel via det internationale endepunkt, hvis jeres politik tillader det | Singapore |
| Moonshot AI | Modelkørsel, hvis jeres politik tillader det | Kina |
| Brave | Websøgning, og hentning af siderne bag resultaterne, når værktøjet er slået til | USA |
| Postmark | Mails om login, bekræftelse og invitationer | USA |
| Sentry | Fejlrapporter fra vores egne systemer | USA |
| Stripe | Betaling og fakturering | USA |
| Proton | Vores egen forretningsmail | Schweiz |
Opbevaring og sletning
Vi gemmer det, produktet skal bruge for at virke, og så ryger det. En samtale, du sletter, er slettet med det samme, der er ingen papirkurv og intet at hente tilbage bagefter. Din organisations audit-historik har en fast levetid, der følger jeres plan, og den bliver slettet automatisk, når levetiden er gået. Beder én person om at blive slettet, kan en administrator få vedkommendes spor destrueret frem for blanket ud. Og lukker I kontoen, bliver alt destrueret i alle de systemer, der har det, efter fjorten dage, hvor I kan fortryde.
Se detaljer
Fire slags sletning, hver med sin egen regel: den du selv laver, den der sker af sig selv, den der gælder én person, og den der lukker det hele.
At slette en samtale
En øjeblikkelig og permanent sletning af samtalen og alt, hvad der hænger på den: hver besked, hver tidligere udgave af en besked, hver optegnelse over en vedhæftning. Der er ikke et “slettet”-flag, der lader rækkerne blive liggende. Én ting overlever med vilje: er din organisation på en plan med audit-log, bliver optegnelsen af den udveksling liggende i audit-loggen, indtil dens egen levetid udløber. Det er dét, en audit-log er til for, den ville være meget lidt værd, hvis den, der bliver ført tilsyn med, selv kunne slette den, og den er afgrænset af vinduet nedenfor frem for gemt i det uendelige.
Hvor længe audit-loggen lever
Halvfems dage på Basic, hundrede og firs på Pro, et år på Max, Business og Enterprise, og på Enterprise kan et andet vindue aftales og bliver derefter håndhævet for netop din organisation. Det samme vindue gælder den statistik, vi udleder af loggen, så de forbrugstal, jeres administratorer ser, ikke kan overleve de optegnelser, de kom fra. Sletningen kører i to faser med et døgn imellem: den første markerer, hvad der er forfaldent, og kan fortrydes, den anden fjerner hele rækken, ikke bare den krypterede tekst, men rækken. Flytter jeres plan til et kortere vindue, gælder det kortere fra det øjeblik; flytter den til et længere, kommer det, der allerede er væk, ikke igen.
At slette én person
Når nogen gør brug af retten til at blive glemt, opretter en administrator anmodningen med en begrundelse, og det, der følger, er en destruktion frem for en blanking: personens spor i audit-loggen og i den statistik, der er udledt af den, bliver fjernet, også det, som opbevaringsrutinen havde markeret, men endnu ikke var nået til. Rækkefølgen er med vilje: det mest følsomme, prompts og svar, ryger først, så en afbrydelse undervejs efterlader mindst muligt frem for mest muligt. Der er to forskellige databaseroller inde over, og ingen af dem kan udføre den andens arbejde: det kørende program må kun oprette en anmodning, og rutinen må kun stemple sit eget bogholderi og slette.
At lukke kontoen
Kun en ejer kan sætte det i gang, og er din organisation et hold, destruerer lukningen alles data, så det kræver en udtrykkelig indtastet bekræftelse frem for et enkelt klik. I opsiger selv abonnementet først, det gør vi ikke på jeres vegne, for det er jeres forhold til betalingsudbyderen og ikke vores. Derefter går der fjorten dage, hvor I kan fortryde, og banneret i produktet viser jer datoen. Når dagen kommer, bliver abonnementet tjekket en gang til: er I begyndt at betale igen i mellemtiden, aflyser sletningen sig selv frem for at destruere et arbejdsrum, nogen bliver opkrævet for. Derefter ryger alt: jeres samtaler, jeres filer, jeres audit-historik, det assistenten havde gemt for at huske jer, jeres login-identitet, og til sidst jeres organisation. Bagefter kan den samme e-mailadresse melde sig til igen og får en helt ny, tom organisation. Én optegnelse overlever med vilje: at en sletning fandt sted, med den person, den handlede om, pillet ud af den.
| DATA | STANDARD | KAN ÆNDRES | VED LUKNING |
|---|---|---|---|
| Samtaler | Indtil du sletter dem | Nej | Slettes |
| Filer du uploader | Indtil du sletter samtalen | Nej | Slettes |
| Audit-log og statistikken udledt af den | 90 dage på Basic, 180 på Pro, 365 på Max, Business og Enterprise | Ja, efter aftale på Enterprise | Slettes |
| Det assistenten har gemt for at huske dig | Indtil du sletter det | Nej | Slettes |
| Konto- og organisationsoplysninger | Så længe kontoen er aktiv | Nej | Slettes |
| Fakturaer og regnskabsmateriale | Fem år efter udgangen af det kalenderår, de vedrører | Nej | Beholdes, krævet af bogføringsloven |
Sikkerhedstest
De grænser, der er beskrevet på denne side, bliver holdt på plads af tests, der fælder bygningen, ikke af at nogen husker, at de findes. Tusindvis af automatiske tests kører, før en ændring kan flettes ind, og sikkerhedstestene er skrevet bagvendt: de kontrollerer, at det forkerte certifikat bliver afvist, at en forespørgsel uden en organisation på returnerer ingenting, at en log, der kun må skrives til, ikke kan rettes. Alt, der rører login, adskillelsen mellem organisationer, betaling eller gatewayen, får en runde til, der leder efter en vej ind frem for efter, at det virker.
Se detaljer
Testene, de maskinelle grænsekontroller, angriberens runde, og det vi bygger oven på.
Testene er håndhævelsen
Hver ændring kører hele testsuiten for hver tjeneste, den rører, mod en rigtig database, der først har været igennem de samme rolle-, rettigheds- og skemascripts, som produktionen kører ved sin første opstart. Netop dét er pointen: de egenskaber om isolation, der står på denne side, er egenskaber ved databaseroller og rettigheder, så en testsuite, der kørte mod en eftergivende testdatabase, ville ikke bevise noget. Sikkerhedstestene er formuleret negativt. Et certifikat fra vores egen myndighed, men med et navn, der ikke står på listen, bliver afvist. En forespørgsel, der når databasen uden en organisation sat på forbindelsen, returnerer ingenting frem for alting, også når værdien er sat til den tomme streng, hvilket er den udgave af den fejl, der rent faktisk sker. Et internt endepunkt, der bliver kaldt uden et klientcertifikat, bliver afvist. Audit-tabellerne afviser en rettelse eller en sletning under den rolle, programmet kører som.
Grænser bliver kontrolleret maskinelt
Flere af påstandene på denne side er arkitektoniske: at kontrolplanet ikke kan nå dataplanets kode, at betaling kun kan nås gennem én dør, at opsætningen af kanten ved selvhosting er identisk med den, vi selv kører. Hver af dem er en kontrol, der kører, før en ændring bliver gemt, og som fælder på netop det mønster, der ville bryde den, for en arkitektonisk regel, der kun lever i et dokument, forfalder i løbet af et år. Opsætningen af den offentlige frontdør bliver heller ikke bare rullet ud og håbet på: tests slår fast, at TLS 1.3 er fastlåst, at HSTS er sat med preload, at serverbannere er fjernet, at webserverens egen administrationsflade er slået fra, og at forespørgselslogs går gennem rensefilteret, før de bliver skrevet.
Angriberens blik, før noget bliver udgivet
Enhver ændring, der rører login, adskillelsen mellem organisationer, den indbyrdes godkendelse mellem tjenester, betaling eller gatewayen, får en dedikeret gennemgang af ændringen oven i den almindelige gennemgang og testsuiten. Det er en angribers opgave og ikke en tjekliste: et fund tæller kun, hvis det kommer med en konkret vej fra input, ingen kan stå inde for, til svagheden. Der bliver ledt efter en bestemt slags fejl: en rute, der mistede sin godkendelse, en forespørgsel, der holdt op med at læne sig på adskillelsen i databasen, en kontrol, der før fejlede lukket og nu fejler åbent, en hemmelighed, der nåede en log. Fund bliver skrevet ned med deres alvor, og hvad der blev gjort ved dem, og et kritisk eller alvorligt fund standser ændringen, indtil det er lukket.
Hvad vi bygger på
Hver afhængighed er låst til en præcis version og et indholdsaftryk, og hvert containerbillede, vi bygger, tager udgangspunkt i et basisbillede, der er låst med et kryptografisk aftryk frem for et flytbart mærkat, så et billede, der bygges i morgen, er det billede, vi testede i dag, og ikke kan laves om under os af en andens udgivelse.
Hvor du står juridisk
Efter databeskyttelsesforordningen er vi jeres databehandler, og I er dataansvarlig. Vilkårene står i databehandleraftalen, og hver underdatabehandler er nævnt ovenfor. Kortoplysninger når aldrig vores systemer, Stripe har dem, og intet kortnummer rører en database hos os.
Rapportér et fund
Skriv til security@ourai.dk. Du får en kvittering inden for to hverdage og et reelt svar inden for ti. Alt, hvad der kan nås på vores domæner, eller som kører inde i en container bygget af vores egen kode, er inden for rammen; tredjepartstjenester, vi afhænger af, er ikke, dem skal du melde opstrøms. Vi går ikke rettens vej mod nogen, der leder i god tro, ikke henter data ud, ikke forringer tjenesten for andre og giver os et rimeligt vindue, før der bliver offentliggjort noget. Vi sigter efter halvfems dage mellem rapport og offentliggørelse, tidligere hvis rettelsen kommer tidligere.
Drift, hændelser og backup
Går noget i stykker, hører du det samme sted, som vi selv gør. Statussiden bliver drevet af kontroller, der kører uden for vores infrastruktur, så den ikke afhænger af det, den rapporterer om, og hændelser åbner af sig selv frem for at vente på, at nogen skriver dem op. Rammer et brud nogensinde jeres data, hører I fra os inden for 48 timer, efter vi ved det, tidligt nok til, at jeres egen frist på 72 timer til myndigheden stadig er jeres at bruge. Hele maskinen bliver taget et billede af hver nat. Og når vi undersøger et problem, arbejder vi ud fra et referencenummer på forespørgslen og ikke ud fra at læse, hvad du skrev. status.ourai.dk viser tilstanden for hver del af platformen.
Se detaljer
Statussiden, det den bevidst ikke viser, hvordan vi undersøger uden at læse dine samtaler, og hvad backup dækker.
Statussiden
status.ourai.dk viser hjemmesiden, appen, administrationsfladen og login, hver kontrolleret hvert tredje minut uden for vores netværk af en uafhængig overvågningstjeneste. Der skal to fejl i træk til, før en del bliver markeret nede, så en container, der genstarter under en udrulning, ikke råber vagt i gevær, og et rigtigt udfald viser sig stadig inden for cirka seks minutter. Hændelser åbner og lukker automatisk ud fra kontrollernes tilstand: ingen skriver forløbet i hånden, og det er den eneste måde, en statusside kan stoles på til at vise nuet frem for, hvad nogen nåede at opdatere. Planlagt arbejde, der varer længe nok til at udløse kontrollerne, får et vedligeholdelsesvindue åbnet på forhånd. Fordi kontrollerne kører uden for vores infrastruktur, kan et udfald hos os ikke tage statussiden med sig.
Hvad siden bevidst ikke viser
Bag de offentlige dele ligger hjerteslagskontroller på hver eneste baggrundsrutine: dem der skriver forbrugsposter, rydder udløbne reservationer, kører opbevaring og tømmer køer. Hver sender et livstegn efter et skema, og alarmen går, når livstegnet holder op. Den fejl, en statusside aldrig fanger, er ikke en tjeneste, der er nede, men en rutine, der stille er holdt op med at virke, mens alt andet stadig svarer. De kontroller er private, fordi de nævner interne dele, og en offentlig liste over, hvilken intern del der er syg lige nu, er et kort for den, der vil os noget.
Hvordan vi undersøger uden at læse dine samtaler
Hver forespørgsel gennem hver tjeneste bærer et kort referencenummer. Det står i appen, hvis en besked fejler, i svarets headere, på hver logline for den forespørgsel, og på fejlrapporten, hvis der bliver rejst en. Det nummer er dét, vi arbejder ud fra. Diagnostikken bærer ikke dine prompts eller modellens svar, og før noget forlader vores systemer, går det gennem ét fælles sæt maskeringsmønstre for tokens, nøgler og id, som både logskriveren og fejlrapporteringen bruger ud fra den samme definition, så de to ikke kan skride fra hinanden. Melder du et problem og citerer referencen, kan vi følge hele vejen gennem fire tjenester uden at spørge dig, hvad du skrev om.
Oppetid
Vores standardvilkår lover ikke en bestemt oppetid i procent, og derfor står der ikke et tal her, et tal på en markedsføringsside, som ikke står i kontrakten, er ingenting værd. Organisationer, der har brug for et kontraktligt serviceniveau, kan få det som en del af en enterprise-aftale.
Når noget går galt med jeres data
Rammer et brud på persondatasikkerheden jeres organisation, underretter vi jer uden unødig forsinkelse og under alle omstændigheder inden for 48 timer, efter vi er blevet bekendt med det, uanset om bruddet skete hos os eller hos en af vores underdatabehandlere, med det der vides på tidspunktet, suppleret efterhånden som vi ved mere. De 48 timer står i databehandleraftalen, og de er valgt med vilje: efter forordningen er fristen på 72 timer til tilsynsmyndigheden jeres som dataansvarlig, og den løber, fra vi fortæller jer det. Vores frist skal være kortere end jeres, ellers er den ikke noget værd. Rammer en hændelse platformen, uden at jeres data er berørt, hører I fra os inden for fem hverdage.
Backup
Hele maskinen bliver taget et billede af hver nat, og de seneste syv billeder bliver gemt inden for EU. Fordi det er et billede af hele disken, bliver hver database fanget i det samme øjeblik, så en genskabelse kommer op indbyrdes konsistent frem for med én tjenestes optegnelser foran en andens. To ærlige begrænsninger. Enheden, der genskabes, er hele serveren, ikke én organisation og ikke ét bestemt tidspunkt, så at hente en enkelt slettet samtale ud af en backup er ikke noget, vi kan. Og vinduet er en nat, så en genskabelse kan koste op til et døgns nyeste aktivitet. Organisationer, der har brug for genskabelse til et bestemt tidspunkt eller for en enkelt organisation, bør tage det op som en del af en enterprise-aftale. Kører I platformen på jeres egen infrastruktur, er backup jeres egen, på jeres eget skema og under jeres egen kontrol, ligesom alt andet på den maskine.