Kuinka integroida tietoturva osaksi ohjelmistokehitystä – tietoturvallisen ohjelmistokehityksen elinkaari (SDL)

Kirjoittaja: Iiris Joutsi
Consultant

Tietoturva on alana monitahoinen, minkä vuoksi tietoturvan sisällyttäminen osaksi ohjelmistokehitystä voi kuulostaa vaikealta. On kuitenkin olemassa jäsenneltyjä tapoja integroida tietoturva ohjelmistokehityksen jokaiseen vaiheeseen. Tätä lähestymistapaa kutsutaan tietoturvallisen ohjelmistokehityksen elinkaareksi, tuttavallisemmin SDL:ksi (Secure Development Lifecycle).

Erilaisia SDL-malleja on useita, ja niistä jokaisella on vahvuutensa ja heikkoutensa. Tunnettuja SDL-malleja ovat muun muassa:

  • Microsoft Security Development Lifecycle. Tätä pidetään kaikista SDL-malleista merkittävimpänä. Malli kehitettiin alun perin Microsoftin omiin kehitysprosesseihin. Sen yleinen sovellettavuus on huippuluokkaa, mutta kolikon kääntöpuolena malli ei ole kovin seikkaperäinen.
  • OWASP Software Assurance Maturity Model (SAMM). Samoin kuin Microsoftin SDL, myös tämä viitekehys soveltuu ohjelmistokehitykseen teknologiasta riippumatta. SAMM luokittelee tietoturvan liiketoiminnan perusteella, ja kattaa siten myös hallinnollisen tietoturvan elementtejä. Malli sisältää kolme eri kypsyystasoa, ja siihen kuuluu oma auditointityökalu.
  • Building Security in Maturity Model (BSIMM). BSIMM perustuu yli 130 yrityksen turvallisuuskäytäntöjen analyysiin. Siinä tarkastellaan, mitä turvallisuuskäytäntöjä käytetään useimmin ja mitkä ovat vaikeimpia omaksua. Mallia ei ole luotu teknologiayrityksiä varten, minkä vuoksi sen tarkkuus ei yleensä yksin riitä ohjelmistoprojektien tarpeisiin.

Lisäksi on olemassa standardeja (IEC 62443-4-1, ISO/IEC/IEEE 32675:2022) ja muita asiakirjoja (NIST SP 800-218), jotka voivat opastaa SDL:n käyttöönotossa.

SDL:n yleiset osat

Vaikka SDL-mallien sisältö vaihtelee, niillä on silti paljon yhteistä. Kattava SDL sisältää seuraavat osiot:

1. Hallinto ja vaatimukset

Hallinto ja vaatimukset -osiossa selvitetään, millaisessa vaatimuksia ohjelmiston toimintaympäristö asettaa, millaista turvallisuusosaamista eri sidosryhmiltä edellytetään ja miten turvallisuusriskejä hallinnoidaan.

2. Valmistelu ja ympäristö

Varautuminen ja ympäristö -osio painottuu uhkamallinnukseen ja ympäristön koventamiseen. Uhkamallinnus on työkalu, jonka avulla ohjelmistoon kohdistuvat uhkat voidaan järjestelmällisesti havaita. Uhkamallinnuksen jälkeen uhille toteutetaan riskianalyysi, jonka tuotoksia voidaan käyttää tietoturvavaatimusten laatimisessa.

3. Suunnittelu

Tietoturvaa pidetään usein suunnitteluongelmana, minkä vuoksi myös SDL korostaa turvallisen suunnittelun periaatteita. Tärkeimpiä konsepteja ovat mm. monitasoinen suojaus sekä hyökkäyspinta-alan minimoiminen. On tärkeää huomata, että tässä vaiheessa usein huomataan, että kaikkia vaatimusvaiheessa odotettua ei ole mahdollista sisällyttää todelliseen suunnitelmaan.

4. Toteutus

Toteutus-osiossa on kyse työkaluista ja käytännöistä, jotka auttavat varmistamaan, että kehittäjät voivat luoda turvallisen tuotteen. Esimerkkejä näistä ovat muun muassa CI/CD-putket ja kooditarkistukset. Ohjelmistoprojekti muuttaa todennäköisesti muotoaan alkuperäisestä suunnitelmasta nimenomaan toteutusvaiheessa.

5. Testaus ja todentaminen

Tämä osio sisältää sekä tietoturvatestauksen että toteutuksen todentamisen. Testaus keskittyy tuotteen toimivuuteen ja turvallisuuteen. Tarkoituksena on varmistaa, että tietoturvakontrollit toimivat odotetusti ja tuote kestää erilaisia tietoturvahyökkäyksiä. Todentaminen puolestaan yrittää löytää aukot alkuperäisen suunnittelun ja toteutuksen välillä.

6. Ylläpito ja poikkeamanhallinta

Ohjelmiston elinkaari ei pääty tuotteen valmistumiseen. Ylläpito ja poikkeamanhallinta -osiossa julkaistun ohjelmiston toimintaa monitoroidaan ja jatkokehitetään. Sen lisäksi määritellään, miten tietoturvapoikkeamiin ja haavoittuvuuksiin tulisi reagoida.

Lopuksi

Tietoturvallisen kehityksen elinkaari (SDL) on tärkeä lähestymistapa, jonka avulla tietoturva voidaan integroida ohjelmistokehityksen jokaiseen vaiheeseen. Vaikka turvallisuusympäristö voikin olla monimutkainen, SDL:n kaltaiset mallit auttavat sen navigoimisessa.

Olipa kyseessä Microsoft Security Development Lifecycle, OWASP SAMM tai BSIMM, jokainen SDL-malli tarjoaa omat etunsa ohjelmistokehitykseen, ja mallit tulisikin räätälöidä kunkin projektin erityistarpeisiin.