APIen turvallisuuden rakentaminen alkaa palvelun tietoturvariskien kartoittamisesta. Lue blogistamme, mitä asioita tulee ottaa huomioon APIn turvallisuuden varmistamiseksi.
Edellisessä kirjoituksessamme annoimme käytännön esimerkin API-rajapintojen (Application Programming Interface, järjestelmärajapinta) hyödyistä Hammaslääkärin ajanvaraus- esimerkin kautta. Esimerkki on oikeasta elämästä, jossa sähköisesti tehty muuttoilmoitus rekisterinpitäjälle jäi ”byrokratian rattaisiin” viikoiksi, eikä hammaslääkäriajan varaaminen uudessa kunnassa onnistunut tästä syystä – vaikka hammaskipu olikin kova! APIn käyttö olisi nopeuttanut muuttoilmoituksen tietojen välitystä rekisteristä uuteen kuntaan, ja mahdollistanut hammaslääkärin ajanvarauksen nopeasti.
Viranomaisille tulee API-pakko, kuten Tivin uutisoinnissa saimme lukea. Vaikka siirtymäaika on neljä vuotta, töihin kannattaa ryhtyä heti. Koko prosessi hankinnasta toteutukseen vie oman aikansa, kun tietoturva otetaan huomioon API-suunnittelusta lähtien.
APIen, kuten muidenkin järjestelmien tulee olla turvallisia. Turvallisuuden rakentaminen alkaa palvelun tietoturvariskien kartoittamisesta. Potentiaalisia riskejä havainnollistetaan Hammaslääkärin ajanvaraus- esimerkin kautta. Tässä blogissa riskit (lista ei ole kattava!) on jaoteltu 1) tyypillisiin/yleisiin ja 2) palvelukohtaisiin riskeihin.
Lainsäädännön erityisvaateet ovat SoTe-tyyppisen tiedon turvaamiselle korkeat, joten myös riski erilaisista sanktioista tiedon turvaamisen pettäessä on merkittävä, ja tähän tulisikin siksi paneutua erikseen.
Tyypillisiin riskeihin varautumiseen on käytettävissä useita viitekehyksiä, joiden avulla eri tyyppisiä tietoturvariskejä voi kartoittaa. Tässä annetaan esimerkki nk. STRIDE- viitekehyksen riskityypeistä.
OWASP -top 10 (The Open Web Application Security Project) sisältää yleisimmät turvallisuusriskit, jotka pätevät myös APIeihin. Näitä ovat erimerkiksi puutteellinen pääsynhallinta, virhekoodien kalastelu, haltuun saadut admin-oikeudet ja injektiot.
Tapauskohtaisessa riskiarviossa on tärkeää:
Lopuksi riskejä kannattaa evaluoida kirjoittamalla palvelun tyypillisiä käyttötapauksia esim. 6-10 kappaletta. Käyttötapauksista arvioidaan niihin sisältyvät riskit ja tarkastetaan, tuleeko jo löydettyjen ja arvioitujen riskien lisäksi vielä joitain uusia riskejä. Käyttötapauksissa kannattaa huomioida käyttäjän keskeiset käyttötapaukset, eritoten viranomaisten tiedonvaihtoa koskevat käyttötapaukset, sekä joitain ylläpitäjän käyttötapauksia.
STRIDE-viitekehyksen riskityypeissä käsiteltiin jo kohtia 1 ja 2. Lisäksi skenaariossamme oli otettu mukaan ympäristöstä tieto siitä, että varausongelman ratkaiseva API olisi pilvessä. Tästä seuraa, että palvelun tietoturvariskeihin tulee sisällyttää pilvipalveluiden tyypillisiä riskejä (esimerkiksi lokaatio, kyky palautua/palautta toiminta, palvelun tietojen turvaaminen ja kopiointimenettelyt) riittävässä laajuudessa.
Hammaslääkäri-tapauksessa palvelussa oleva tieto on (kohta 3, tiedon sensitiivisyys):
Tiedon sensitiivisyydestä seuraa, että eritoten seuraavat riskit tulee huomioida korostetusti:
Uuden tiedonhallintalain mukaan tulisi olla erityisen tarkkana siitä, että myös viranomaisten välillä jaeltavalle tiedolle ja sen käsittelylle on oltavat lainsäädännölliset perusteet. Tämä tarkoittaa sitä, että viranomaisilla ei automaattisesti ole luku-muokkaus-poisto-oikeuksia toistensa tietoihin, vaan oikeudet vaihtelevat sen mukaan, mikä on kulloisenkin viranomaisen oikeus toisen viranomaisen tiedon saantiin, muokkaamiseen ja edelleen jakeluun.
Kaikkea tietoa ei myöskään ole oikeutta nk. “korjata” vaikka viranomaisella itsellään oleva tieto olisi uudempaa kuin toisella viranomaisella oleva tieto. Hammaslääkäri ei esimerkiksi välttämättä voi päivittää kansallisiin SoTe-tietoihin kansalaisen muuttuneita lääkeallergioita, vaikka nk. “maalaisjärjellä ajatellen” näin pitäisikin toimia. Näin ollen kaikkeen käyttövaltuushallintaan, ei vain käyttäjien vaan APIeja käyttävien viranomaisten osalta liittyvät riskit ovat moninaiset ja korkeat – riskit sisältävät sekä riskejä tiedon väärinkäytöstä, että riskin väärinkäytösten johdosta laukeaviin sanktioihin. Tämän vuoksi käyttövaltuushallinnan käyttötapauksia ja niihin liittyviä riskejä tulee evaluoida erityisellä huolella riskitarkastelun lopuksi.
Kun riskit on koottu ja listattu, niiden todennäköisyys ja kriittisyys kannattaa arvioida, ja edellisten summana saadaan kullekin riskille (riskityypille) suunnittelua varten painoarvo. Tietoturvan suunnittelun tärkein tehtävä on riskien ja uhkien ennalta ehkäiseminen.
Tietoturvallisen APIn suunnitteluun paneudutaan seuraavassa blogissamme. Tätä odotellessa kannattaa mieliin painaa turvallisen APIn suunnittelun tarkastuslista:
Riskejä ja niiden toteutumisskenaarioita miettiessä ei tässä tapauksessa eräälle kirjoittajalle käynyt ongelma, eli hammaslääkäriin pääsyn pitkittyminen, ehkä olekaan pahinta, mitä voi tapahtua. Vilkkaalla mielikuvituksella varustettuna voisi tietoturvaton API aiheuttaa hänelle väärän vastaanottoajan, vääriä laskuja, ja mahdollisesti väärää tietoa hänen lääkeallergioistaan. Pahimmassa mahdollisessa riskiskenaariossa hänelle olisi voinut tapahtua monenlaista, ehkä jopa hampaiden turha poisto väärien ajanvaraustietojen takia!