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:
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.
Vaikka SDL-mallien sisältö vaihtelee, niillä on silti paljon yhteistä. Kattava SDL sisältää seuraavat osiot:
Hallinto ja vaatimukset -osiossa selvitetään, millaisessa vaatimuksia ohjelmiston toimintaympäristö asettaa, millaista turvallisuusosaamista eri sidosryhmiltä edellytetään ja miten turvallisuusriskejä hallinnoidaan.
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.
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.
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.
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ä.
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.
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.