← Kaikki artikkelit

Tietoturva arkkitehtuurissa: miten Treat suojaa tietosi

Salaus levossa ja siirrossa, vähimmät oikeudet, lokien peittäminen, varmuuskopiot ja tietoturvaloukkausten hallinta teknisesti kiinnostuneelle lukijalle.

Kirjoittaja: Jarno Keskikangas, ohjelmistoarkkitehti · Julkaistu 22. elokuuta 2026 · Lukuaika 3 min

Terveyspalvelussa tietoturva ei ole ominaisuus, joka lisätään lopuksi, vaan lähtökohta, jonka ympärille rakenne tehdään. Tässä kirjoituksessa avaan teknisesti kiinnostuneelle lukijalle, miten Treat on rakennettu: missä tiedot ovat, miten ne on salattu, kuka niihin pääsee ja mitä tapahtuu, jos jokin menee pieleen. En listaa sertifikaatteja; kuvaan sen, mitä on rakennettu. Sitova kuvaus on tietosuojaselosteessamme.

Liityin Treatiin elokuussa 2026, samassa kuussa kuin lääkäri Antti Mauno. Onni Hakala ja Sami Marttinen olivat aloittaneet Treatin rakentamisen huhtikuussa, ja Henri Heliö liittyi mukaan kesäkuussa. Elokuussa Treatista tuli myös ASTORI-rekisterin B-luokan potilastietojärjestelmä. Tässä kirjoituksessa kuvaan tuon kehitysvaiheen arkkitehtuuria.

Missä tiedot ovat

Treat-sovellus toimii Google Cloudissa Suomessa, alueella europe-north1, ja projekti on rajattu Assured Workloads EU Data Boundary -rajauksella. Käytössä ovat Cloud Run, Cloud SQL (PostgreSQL), Cloud Storage, Secret Manager, KMS ja Vertex AI. Kaikki potilaskeskustelut, tapaustiedot ja käyttäjätilit sijaitsevat täällä.

Cloudflare palvelee vain markkinointisivua treat.health. Se ei koskaan käsittele potilaskeskusteluja, tapaustietoja tai käyttäjätilien tietoja. Henkilötiedot pysyvät ETA-alueella.

Salaus levossa ja siirrossa

Tietokanta, objektitallennus ja salaisuudet salataan asiakkaan hallinnoimilla KMS-avaimilla alueella europe-north1. Ero pilvipalvelun oletussalaukseen on hallinnassa: avainten elinkaari, kierrätys ja käyttöoikeudet ovat meidän määriteltävissämme ja lokitettavissa, eivät pelkkä alustan oletus.

Siirrossa jokainen päätepiste vaatii TLS 1.2:n tai uudemman, ja tietokanta hyväksyy tällä hetkellä vain salattuja yhteyksiä.

Vähimmät oikeudet, ei jaettuja tunnuksia

Tuotantoympäristön käyttöoikeudet on rajattu Googlen IAM:llä palvelutilikohtaisesti. Jokaisella palvelulla on oma identiteettinsä ja vain ne oikeudet, joita sen tehtävä vaatii. Jaettuja tunnuksia ei ole, ja käyttö kirjataan lokiin.

Käytännössä tämä tarkoittaa kolmea asiaa:

  • Jokaisella palvelulla on vain tehtävänsä vaatimat oikeudet, mikä rajaa yksittäisen komponentin vaarantumisen vaikutuksia.
  • Jokainen pääsy on jäljitettävissä tiettyyn identiteettiin, ei "ylläpitoon".
  • Oikeuksien lisääminen on tietoinen, kirjattu muutos.

Tunnistautuminen

Potilaat tunnistautuvat vahvasti pohjoismaisen tunnistusvälityspalvelu Iduran kautta: suomalaisilla pankkitunnuksilla ja Mobiilivarmenteella, ruotsalaisella BankID:llä ja Freja ID:llä, norjalaisella BankID:llä ja Vippsillä tai tanskalaisella MitID:llä. Edellytämme FTN:n korotettua (substantial) varmuustasoa. Treat ei koskaan saa pankkitunnuksiasi, PIN-koodiasi tai biometrisiä tietojasi, ainoastaan nimen, kansallisen tunnisteen ja pysyvän tunnisteen.

Sovelluksessa tuetaan avainpohjaista (passkey) kirjautumista, ja salasanat suojataan Argon2-tiivistealgoritmilla.

Lokit ilman arkaluonteista sisältöä

Palvelulokit ovat välttämättömiä vianetsinnässä ja tietoturvan valvonnassa, mutta niihin ei saa valua potilastietoa. Siksi henkilötunnus ja vapaamuotoiset kliiniset kentät poistetaan sovellustason lokeista jo ennen kirjoitusta. Lokeihin jäävät IP-osoite, pyyntöjen aikaleimat ja selaimen tiedot.

Lokit säilytetään oletuksena 90 vuorokautta; pidempään vain nimetyn tietoturvatutkinnan tarpeisiin.

Varmuuskopiot

Tietokannasta otetaan varmuuskopiot ajantasaisella palautuksella (point-in-time recovery), eli tila voidaan palauttaa tiettyyn hetkeen eikä vain viimeiseen täyteen kopioon. Varmuuskopiot salataan samoilla KMS-avaimilla kuin tuotantodata ja säilytetään lakisääteisiin rajoihin asti. Varmuuskopio, joka olisi heikommin suojattu kuin alkuperäinen, olisi järjestelmän heikoin kohta.

Tekoäly samassa rajauksessa

Oirekartoituksen tekoäly on Googlen Vertex AI (Gemini) EU:ssa (eu.rep.googleapis.com), ei kuluttajille suunnattu Gemini. Kehotteiden välimuisti on pois käytöstä, ja kutsut todennetaan palvelutilillä. Tietojasi ei koskaan käytetä tekoälymallien kouluttamiseen; palvelun kehittämiseen käytetään vain anonymisoituja tietoja. Olemme hakeneet vapautusta Googlen väärinkäytönvalvonnan lokituksesta; kunnes se on myönnetty, emme oleta kutsuille täyttä nollasäilytystä ja merkitsemme tämän selvästi sisäisiin lokeihimme.

Tekoäly esittää vain jäsenneltyjä jatkokysymyksiä ja kokoaa yhteenvedon. Se ei tee diagnooseja, hoitopäätöksiä tai kiireellisyysarvioita. Jokaisen kliinisen päätöksen tekee laillistettu lääkäri.

Ihmiset ja sopimukset

Tekniikka ei riitä, jos ihmisten velvoitteet puuttuvat. Jokaisessa työ- ja alihankintasopimuksessa on salassapitositoumus, ja terveydenhuollon ammattihenkilöitä sitoo lisäksi laki terveydenhuollon ammattihenkilöistä (559/1994, 17 §). Kun lisäämme tai vaihdamme käsittelijän, päivitämme tietosuojaselosteen käsittelijäluettelon ennen kuin uusi käsittelijä aloittaa.

Jos jotain tapahtuu

Kukaan ei voi luvata, ettei tietoturvaloukkausta koskaan tapahdu. Siksi myös prosessi on määritelty: ilmoitamme loukkauksesta tietosuojavaltuutetulle 72 tunnin kuluessa ja asianosaisille käyttäjille ilman aiheetonta viivytystä, kun GDPR:n ilmoituskynnys ylittyy.

Miksi kerron tämän

Potilaan ei tarvitse ymmärtää KMS-avaimia käyttääkseen Treatia. Mutta jos haluat tietää, miten tietojasi suojataan, vastauksen pitää olla konkreettinen eikä ympäripyöreä. Tämä kirjoitus on yleiskuva; tarkat sitoumukset ovat tietosuojaselosteessa: https://treat.health/tietosuojaseloste/

Kirjoittajasta

Jarno Keskikangas

Jarno Keskikangas

ohjelmistoarkkitehti

Treatin ohjelmistoarkkitehti ja osa perustajatiimiä. Johti aiemmin Suomen sertifioitujen potilastietojärjestelmien ja Kanta-integraatioiden arkkitehtuuria.

Etkö ole varma, mitä tehdä seuraavaksi?

Kerro asiastasi omin sanoin. Laillistettu lääkäri arvioi tilanteesi yleensä minuuteissa palveluaikana.

Avaa Treat