Blogi | Cinia

Rakenna tietoturva sovelluksesi perustuksiin

Kirjoittanut Cinia Oy | 4.1.2023 13:05

Tietoturvaa aletaan liian usein miettimään siinä vaiheessa, kun sovellusta viedään tuotantoon. Ohjelmistokehittäjien ja tietoturvan asiantuntijoiden kannattaisi sen sijaan tehdä yhteistyötä heti sovelluksen alkutaipaleelta alkaen – jälkikäteen tehdystä tietoturvasta tulee usein erittäin kallis projekti.

Sovelluskehityksessä on hyvin tyypillistä, että lähdetään alkuun kovalla tohinalla saamaan näkymään ensimmäisiä ominaisuuksia asiakkaalle ja demoa pystyyn. Harva ajattelee, että aletaanpa sittenkin ensin suunnittelemaan sovelluksen tietoturvaa. Tämä ohjaakin siihen, että sovelluskehitysprojektissa on hyvä olla näkyvän tuottamiseen keskittyvien sovelluskehittäjien lisäksi projektin tietoturvasta vastaavat henkilöt. 

Tietoturva-asiantuntijoiden tehtävänä on varmistaa, että sovelluksessa tai sen ympäristössä ei ole heikkoja lenkkejä – koko sen elinkaaren aikana, johon liittyvät ensimmäiset valinnat tehdään jo teknologiavalintoja tehdessä. He osaavat kertoa, mitä tarkoittaa, että tehdään tai jätetään tekemättä jokin tietoturvaan liittyvä toimenpide sekä suositella tietoturvan valmistuotteita tai -ratkaisuja, jotka sopisivat hyvin kyseiseen projektiin tai sovellukseen, jotta kokonaisuudesta saadaan tasapainoinen ja turvallinen.

Tietoturvan kerrokset

Harva sovellus on tarkoitettu kertakäyttöiseksi. Sovelluksen tulevaisuutta ja turvallisuutta kannattaa siten miettiä jo hyvin etukenossa, myös silloin kun tehdään pienempiäkin sovelluksia. 

Tietoturva-asiantuntijan lisäksi ohjelmistokehittäjän ja projektista vastaavan on hyvä hahmottaa, mitä tietoturvaan liittyviä näkökohtia missäkin vaiheessa projektia kannattaa ottaa huomioon. Myös johdon ja asiakkaan buy-inniä tarvitaan, jotta tietoturva tulee huomioiduksi riittävällä tasolla ja että siihen saa käyttää riittävästi resursseja. 

Tietoturvan voidaan ajatella rakentuvan kerroksista, jotka kaikki vaikuttavat sovelluksen turvallisuuteen – millekään tasolle ei saa jäädä heikkoja lenkkejä tai rosvonmentäviä aukkoja. Kerrosten hahmottaminen auttaa ennakoimaan tulevaa, ja ottamaan tietoturva-asiat huomioon jo ennen kuin koodaustyö alkaa.

Hankintavaihe

Mitä hankitaan, millaisella sopimuksella ja millaisia vaatimuksia hankintaan liittyy? Valitse sellaiset teknologiat, joihin on saatavilla jatkossakin päivityksiä, jotka eivät vanhene käsiin ja ovat luotettavia.

Vaatimusmäärittelyn on oltava tässä vaiheessa kunnossa. Tietoturva- ja varautumisvaatimukset vaikuttavat niin toteutukseen, testaukseen kuin tuotantoon. On kyse jatkuvuuden hallinnasta: mitä tehdään kun jotain menee rikki tai tiedot katoavat? Tärkeimmillä sovelluksilla on usein myös varajärjestelmiä, jolloin esimerkiksi sähkökatkos ei lopeta toimintaa.

Ohjelmistokehitys ja -testaus

Miten haavoittuvuuksilta voi välttyä koodausvaiheessa? Hallitsevatko kaikki projektiin osallistuvat turvallisen ohjelmistokehityksen? Projektin omistajan on varmistettava, että kehitystiimillä on riittävä tietoturvaosaaminen – joko itsellään tai muualta hankittuna.

Sovelluksen kehityksessä ja testauksessa on tärkeä ottaa huomioon syötteentarkistus, pääsynhallinta, virheenkäsittely, lokitus ja valvonta. Tietoturvatestauksen pitää olla osa laadunvarmistusta. Käytettävien valmiskirjastojen ja muiden komponenttien valinnassa on puolestaan huomioitava niiden turvallisuus nyt ja jatkossa. Uhkamallinnus ja yhteinen tietoturva-arkkitehtuuri auttavat panostamaan tietoturvassa oikeisiin asioihin.

Lue lisää: Tietoturva ohjelmistoprojekteissa – OWASP Top 10 web-kehittäjän tukena


Tuotantoon vienti

Onko kehitetyn sovelluksen ja käyttöpalvelujen vastuujako selvä? Minkälaista tietoturvatestausta tuotantoympäristössä tehdään?

Sovellusta tuotantoon viedessä myös reitin pitää olla turvallinen, jotta tuotantoon päätyy vain testattua ja toimivaksi todettua koodia, eikä esimerkiksi haittaohjelmia. Tässä vaiheessa on hyvä myös varmistua siitä, ettei projekti henkilöidy liikaa esimerkiksi tulevien päivitysten osalta. Nykyään suositaan automatisointia ja koodipohjaista tekemistä, ja sovelluksessa tulisi olla mahdollisimman vähän käsin konfiguroitavia ja pystytettäviä osia. 

Tuotanto

Miten palvelu pidetään turvallisena muuttuvassa ympäristössä? Miten havaitaan väärinkäytökset?

Sovelluksen tuotantovaiheessa on pystyttävä valvomaan sekä itse sovellusta että sen ympäristöä. Haavoittuvuushallinnan avulla seurataan sovelluksen komponenttien ja koko järjestelmän ohjelmistojen päivityksiä – pienessäkin sovelluksessa on helposti kymmeniä komponentteja, jotka on pidettävä ajan tasalla.

Kun palvelu poistetaan käytöstä, on varmistuttava siitä, ettei vanhaa asiakasdataa jää lojumaan levyille ja päädy vuosien päästä vääriin käsiin.


Kokonaisuus haltuun standardien avulla

Tietoturvan kokonaisuuden hallinnassa on kyse siitä, että jo sovelluksen suunnitteluvaiheessa otetaan ominaisuuksien lisäksi huomioon 

  • miten sovellus viedään käyttöön, 
  • miten sitä valvotaan ja ylläpidetään, 
  • miten sen elinkaarta hallitaan ja 
  • miten siihen tehdään päivityksiä ja muita muutoksia 

Tietoturva-asiantuntijat soveltavat työssään alan yleisiä standardeja, kuten OWASPin ASVS-standardia ja julkishallinnon puolella KATAKRIa. Nämä standardit ovat auditointityökaluja ja auttavat hahmottamaan tietoturvan kokonaisuuden – sen, mikä missäkin kontekstissa on olennaista. Tietoturva-asiantuntijan tehtävä on tulkita nämä laajat ja tekniset dokumentit sille konkretian tasolle, että liiketoiminnan edustajat saavat niistä selkoa. 

Ilman standardien ohjausta sovelluksen tietoturvaan saattaisi jäädä heikkoja lenkkejä. Esimerkiksi pääsynhallinta, lokitus ja yhteyksien salaus ovat asioita, joita ei tyypillisesti tarvita, kun softaa aletaan kehittää ja käyttöliittymää hahmotellaan. Jo tässä vaiheessa olisi kuitenkin hyvä miettiä, kenen vastuulla nämä ovat ja kuinka ne yhteensovitetaan tulevaan ympäristöön. Esimerkiksi pilviympäristössä ja omalla työasemalla sijaitsevalla sovelluksella on hyvin erilaiset tietoturvavaatimukset ja -toteutukset. 

Näiden lisäksi helposti jää tekemättä uhkamallinnus, joka pitäisi tehdä kun sovellusta kehitetään. Uhkamallinnuksessa tunnistetaan, mitä uhkia sovellukseen liittyy ja miten niitä mitigoidaan.

Lokienhallintaankin jää helposti harmaita alueita. Tyypillisiä ongelmia sen lisäksi, että sovellus ei lokita olennaisia asioita, ovat esimerkiksi, ettei lokitiedolle ole paikkaa, tai unohdetaan integroitumistarve valmiisiin lokiratkaisuihin ja -valvontaan.

Tavoitteena on löytää tasapainoinen suojauskokonaisuus, joka ei painotu liikaa yhteen asiaan ja jätä katvealueita. Alan standardit auttavat tasapainoisen ratkaisun löytymisen lisäksi nykytason ymmärtämisessä ja kehityssuunnitelman tekemisessä: mihin panostetaan seuraavaksi teknisessä ja hallinnollisessa tietoturvassa.

Miten oikea turvataso löytyy?

Oikean turvatason löytyminen voi olla joskus haastavaa. Aihetta kannattaa lähestyä siitä näkökulmasta, millaisen datan kanssa ollaan tekemisissä. Mitä tapahtuu, jos palvelu menetetään, tiedot menetetään tai ne paljastuvat? Mitä siitä seuraa? Tässä on aika suuri vaihteluväli riippuen siitä, mistä tiedosta on kyse: kansalliseen turvallisuuteen liittyvä tieto, terveystieto vai muutenkin saatavilla oleva julkinen data.

OWASPin ASVS-standardissa on kolme suojaamisen tasoa: 1) kaikkien sovellusten perusratkaisut, 2) monimutkaisempiin riskeihin varautuminen ja 3) korkein taso, jolla suojataan esim. kriittistä infraa. Ykköstasoa voi pitää minimitasona, johon kaikkien pitää pystyä, mutta kakkostaso on käytännössä normaali suojaus.

Oikea tietoturvan taso ei kuitenkaan automaattisesti tarkoita kaikkia mahdollisia suojauksia. Jotkut sovellukset voivat edelleen toimia Internetissä kaikkien saatavilla, kun taas toisille sovelluksille paras vaihtoehto on suljettu verkko, johon pääsee vain rajattu käyttäjien joukko.

Hyvä ajattelumalli tulevaisuuden suunnasta on myös Zero Trust -ajattelu, jossa kovennetaan käyttäjän identiteetin varmistamista: ei luoteta mihinkään tai kehenkään, sillä kyberrikollinen saattaa olla jo verkossamme. Mahdolliset vahingot kannattaa pyrkiä minimoimaan varmistamalla kaikkien yhteyksien luotettavuus ja vastapuolen eheys. Kun perusasiat, kuten käyttäjähallinta ja näkyvyysasiat sovelluksessa on huomioitu, voi Zero Trustin ottaa tavoitteeksi.

Ohjelmistokehittäjien ja tietoturva-asiantuntijoiden välinen yhteistyö

Sovelluskehitysprojektissa asiakas vaatii tyypillisesti toiminnallisuuksia ja visuaalisia ominaisuuksia. Tietoturva helposti unohtuu, kun keskitytään asiakkaalle näkyvään puoleen. Jos tietoturva-asiantuntija tuo alan standardit valmiiksi pureskeltuna kehittäjille ja testaajille, niin tietoturvanäkökohdat tulee helpommin otettua asiaksi – jo sovelluskehityksen alkutaipaleella. 

Tietoturva on jatkuvaa kehittämistä eikä koskaan valmista. Täydellistä ei pysty tekemään, kun aina joku muuttuu ja rikolliset keksivät uusia kepposia. Aina voi kuitenkin varautua aiempaa paremmin.