NIS2-direktiivin huomiointi ohjelmistokehityksessä

NIS2-direktiivi on Euroopan unionin säädös, joka tuli voimaan 17.10.2024. Sen tarkoituksena on vahvistaa kyberturvallisuutta kriittisessä infrastruktuurissa ja muissa tärkeissä palveluissa EU-alueella. Sen myötä myös ohjelmistokehitystiimien on noudatettava uusia lakisääteisiä vaatimuksia.

Direktiivi koskee suuria ja keskikokoisia yrityksiä eri sektoreilla, joita pidetään kriittisinä tai muuten tärkeinä. Katso tästä lisätietoa kyberturvallisuuskeskuksen sivuilta (pdf). Erityisesti näiden organisaatioiden sisäisten ohjelmistokehitystiimien on varmistettava, että ne toteuttavat käytännössä direktiivin vaatimat riskienhallintatoimenpiteet. Direktiivin noudattaminen ja sen osoittaminen on kuitenkin myös tärkeää niille ohjelmistokehitysyrityksille, jotka kehittävät ohjelmistoja organisaatioille, joiden tulee vastata NIS2:n vaatimuksiin, koska direktiivi edellyttää toimitusketjun turvallisuutta.

Huomioithan myös, että NIS2 on nyt saamassa rinnalleen kansallisen lain, kyberturvallisuuslain (KyberTL), joka poikkeaa hieman NIS2-direktiivistä (ei kuitenkaan tämän blogin aihealueen osalta). NIS2/KyberTL ei koske julkishallintoa, vaan sitä varten on kirjoitettu uusi luku 4. tiedonhallintalakiin (Tihl).

Mitä NIS2 edellyttää yleisesti?

NIS2-direktiivi on kaikkien sen kattamien toimialojen yhteinen. Se edellyttää, että organisaatio toteuttaa seuraavat riskienhallintatoimenpiteet:

  • riskianalyysejä ja tietojärjestelmien turvallisuutta koskevat politiikat;
  • poikkeamien käsittely;
  • toiminnan jatkuvuuden hallinta, esimerkiksi varmuuskopiointi ja palautumissuunnittelu, sekä kriisinhallinta;
  • toimitusketjun turvallisuus, mukaan lukien kunkin toimijan ja sen välittömien toimittajien tai palveluntarjoajien välisten suhteiden turvallisuusnäkökohdat;
  • verkko- ja tietojärjestelmien hankinnan, kehittämisen ja ylläpidon turvallisuus, mukaan lukien haavoittuvuuksien käsittely ja julkistaminen;
  • toimintaperiaatteet ja menettelyt, joilla arvioidaan kyberturvallisuusriskien hallintatoimenpiteiden tehokkuutta;
  • perustason kyberhygieniakäytännöt ja kyberturvallisuuskoulutus;
  • toimintaperiaatteet ja menettelyt, jotka koskevat kryptografian ja tarvittaessa salauksen käyttöä;
  • henkilöstöturvallisuus, pääsynhallintaperiaatteet ja omaisuudenhallinta;
  • tarvittaessa monivaiheisen todennuksen tai jatkuvan todennuksen ratkaisujen, suojatun puhe-, video- ja tekstiviestinnän sekä suojattujen hätäviestintäjärjestelmien käyttö toimijan toiminnassa.

Lisäksi direktiivi vaatii myös (osana poikkeamien käsittelyä) raportoimaan merkittävistä turvallisuuspoikkeamista seuraavien aikarajojen puitteissa:

  • Ennakkovaroitus asianomaiselle viranomaiselle 24 tunnin kuluessa.
  • Poikkeamailmoitus 72 tunnin kuluessa, jossa ensimmäinen arvio vakavuudesta.
  • Väliraportit viranomaisen niitä pyytäessä.
  • Loppu- tai edistymisraportti kuukauden kuluessa, jossa yksityiskohtaiset tiedot.

Käytännössä tämä edellyttää seuraavaa:

  1. Kirjoita turvallisuuspolitiikka, joka kuvaa, kuinka organisaatiosi toteuttaa yllä listatut riskienhallintatoimenpiteet.
  2. Varmista, että työntekijöilläsi on käytettävissä yksityiskohtaiset ohjeet, jotta he tietävät tarkalleen, kuinka noudattaa näitä riskienhallintatoimenpiteitä käytännössä.
  3. Valvo, että turvallisuustoimenpiteet todella toteutuvat ajantasaisen seurannan ja säännöllisten tarkistusten avulla.
  4. Lisäksi KyberTL vaatii mahdollisimman tarkan step-by-step -ohjeen ilmoittamisesta.

Nis2:sta voit oppia lisää kurssillamme, blogissamme ja webinaaritallenteesta.

Mitä NIS2 edellyttää ohjelmistokehitykseltä?

Vaikka turvallisen ohjelmistokehityksen perusperiaatteet voidaan yleistää, jokaisella organisaatiolla on kuitenkin erilaisia käytännön työskentelytapoja. Eroavaisuudet voivat riippua esimerkiksi siitä, millaisia sovelluksia yritykset tekevät, mitä työkaluja he käyttävät ja minkä tyyppisille asiakkaille he työskentelevät.

Tämän vuoksi ei ole olemassa yhtä ainoaa vaihtoehtoa turvallisuuspolitiikoille ja niiden käytännön toteuttamiselle, vaan jokaisen organisaation on itse määriteltävä omat käytännön prosessinsa. Alla kuitenkin esimerkkejä mitä ohjelmistokehitystiimit voivat tehdä käytännössä yllä mainittujen riskienhallintatoimenpiteiden toteuttamiseksi.

Riskianalyysi- ja turvallisuuspolitiikat

Suorita perusteellinen uhkamallinnus tunnistaaksesi ohjelmistokohtaiset riskit ja suunnitellaksesi niihin purevat vastatoimet. Varmista myös onko sovelluksen noudatettava tietosuoja-asetuksia ja -lakeja, kuten GDPR:ää, jotta lailliset vaatimukset täyttyvät.

Poikkeamien käsittely

Käytössä olevia sovelluksia kannattaa valvoa esimerkiksi Microsoft Sentinelin avulla, joka laukaisee hälytyksen, jos uusia tietoturvapoikkeamia havaitaan. Hälytysten perusteella voidaan tehdä automatisoituja tai manuaalisia toimenpiteitä tietoturvapoikkeamien käsittelemiseksi. Muista huomioida myös NIS2:n edellyttämä raportointi, jos poikkeama katsotaan merkittäväksi.

Toiminnan jatkuvuuden hallinta

Sovellusten asennusten automatisointi esimerkiksi Bicep-templaattien ja DevOps-julkaisuputkien (pipelines) avulla varmistaa, että ratkaisu voidaan asentaa nopeasti uudelleen niin tarvittaessa. Kun sovelluksen koodi ja konfiguraatiot pidetään ajan tasalla versionhallinnassa, uudelleenasennus voi vaatia vain napin painalluksen.

Toimitusketjun turvallisuus

Hyödynnä koodikirjastoja (dependencies) vain luotettavilta tahoilta, kuten Microsoftilta. Ole varovainen asentaessasi riippuvuuksia julkaisijoilta, joista et ole varma. Ihanteellisessa tapauksessa organisaatiolla on käytössä prosessi, jonka avulla kolmannen osapuolen paketit validoidaan ennen niiden käyttöönottoa organisaation toimittamissa sovelluksissa.

Ohjelmistojen kehityksen ja ylläpidon turvallisuus

Pidä sovelluksen hyödyntämät kolmannen osapuolen koodikirjastot, sovelluskehykset (frameworks) ja Azure-resurssit ajan tasalla. Käytä erilaisia automatisoituja tietoturvatyökaluja (esim. GitHub Advanced Security) haavoittuvuuksien havaitsemiseen. Pyydä asiantuntijaa tarkistamaan sovellukset turvallisuuspoikkeamien varalta. Noudata tietoturvallisia ohjelmistokehityskäytäntöjä, mistä päästäänkin seuraavaan kohtaan…

Kyberturvallisuuskoulutus

Perustasoisen kyberturvallisuuskoulutuksen lisäksi ohjelmistokehittäjät voivat hyötyä suuresti AppSec-koulutuksesta. Ihmiset oppivat eri tavoin, joten sekä itseopiskelumateriaalien että ryhmämuotoisten koulutusten tarjoaminen tietoturvallisten ohjelmistokehityskäytäntöjen oppimiseksi on suositeltavaa.

KyberTL ja NIS2 vaativat koulutuksen järjestämistä kaikille, mutta myös rooli- ja yksikkökohtaisesti tarvittaessa ja lisäksi tarvittavat erilliset ohjeet (Unit- or role-specific security guidelines).

Kryptografian ja salauksen käyttö

OWASP Top 10 -dokumentin Cryptographic Failures -artikkeli auttaa pääsemään hyvin alkuun tämän asian osalta. Se kannattaa kuitenkin yhdistää vielä käytännönläheisempiin ohjeistuksiin, joissa on huomioitu käytössä olevat teknologiat.

Pääsynhallintaperiaatteet

Noudata vähimmän käyttöoikeuden periaatetta (the principle of least privilege) kaikessa mahdollisessa. Periaate tarkoittaa, että sinun tulisi myöntää vähimmät mahdolliset oikeudet ja vain niihin tietoihin ja resursseihin, jotka ovat ehdottoman välttämättömiä ohjelmiston tai käyttäjän suorittamia tehtäviä varten.

Todennusratkaisujen käyttö

Älä käytä palvelutunnuksia koodisi suorittamiseen, koska tällöin niiltä joudutaan yleensä ottamaan monivaiheinen todennus (multi-factor authentication, MFA) pois päältä. NIS2 sanoo, että MFA:ta on pakko käyttää.

Tähän on toki poikkeuksia (esim. Azure Logic Apps, Power Platform). Yleisesti ottaen vastaavissa tilanteissa kannattaa kuitenkin suosia sovellusidentiteettejä (service principals), kuten Azure-resurssien hallittuja identiteettejä (managed identities).

Kyberturvallisuusriskien hallintatoimenpiteiden tehokkuuden arviointi

Ihannetilanteessa on olemassa automaatio, joka ilmoittaa, jos jokin yllä mainituista riskienhallintatoimenpiteistä ei toteudu. Kaikkien asioiden automatisointi ei kuitenkaan ole mahdollista tai järkevää, joten osa toteutumisen arvioinnista voi vaatia ihmisen tarkistuksen. Säännöllisen tietoturvatarkastuksen teettäminen on hyvä idea.

Kuten yllä olevaa listaa lukiessasi saatoitkin jo hoksata, jos kehität jo ohjelmistoja turvallisen ohjelmistokehityselinkaaren (Secure Software Development Lifecycle) mukaisesti, niin todennäköisesti täytät jo ison osan NIS2-direktiivin vaatimuksista. Varmistathan vielä kuitenkin, että sinulla on myös prosessit merkittävien poikkeamien raportointiin ja turvallisuustoimenpiteiden tehokkuuden arvioimiseen.

Kuinka voimme auttaa?

Jos tarvitset apua, tutustu palveluihimme ja ota meihin yhteyttä! NIS2-direktiivin asettamiin vaateisiin tarjoamme apua mm. SOC & CSIRT -valvontapalvelut, kyberturvallisuuskyvykkyyksiesi kypsyystason arviointia, SIEM-ratkaisun käyttöönoton ja kehittämisen sekä tuemme organisaatiotasi monimuotoisesti hallinnollisissa tietoturvatehtävissä.

Tutustu NIS2:een

Tutustu materiaaleissamme ja kurssillamme mikä NIS2 on, miksi ja miten sinun tulisi toimia ja mitkä ovat Microsoftin ratkaisut vaatimusten noudattamiseen!

Artikkelin kirjoittaja

Laura Kokkarinen

Consulting & Training

Laura is a software architect and developer passionate about application security and software development best practices on the Microsoft Cloud platform. She has been doing full-stack software development with Microsoft technologies professionally since 2011 and has focused entirely on Microsoft cloud services since 2017. She has a Bachelor’s and a Master’s in Computer Science (grad 2012). In addition to designing software architectures, writing code, and performing tasks related to application security, Laura blogs about technologies related to her work at https://laurakokkarinen.com and regularly speaks at international conferences. Sharing her knowledge comes naturally to her, and Laura has received the Microsoft Most Valuable Professional (MVP) award annually since 2019.
Laura on ohjelmistoarkkitehti ja kehittäjä, joka on intohimoinen sovellusten tietoturvan ja ohjelmistokehityksen parhaiden käytäntöjen suhteen Microsoftin pilvialustalla. Hän on tehnyt full-stack-ohjelmistokehitystä Microsoftin teknologioilla ammatillisesti vuodesta 2011 lähtien ja keskittynyt täysin Microsoftin pilvipalveluihin vuodesta 2017. Lauralla on on korkeakoulututkinto tietojenkäsittelytieteestä (valmistunut 2012). Ohjelmistoarkkitehtuurien suunnittelun, koodin kirjoittamisen ja sovellusten tietoturvaan liittyvien tehtävien lisäksi Laura kirjoittaa blogia työhönsä liittyvistä teknologioista osoitteessa https://laurakokkarinen.com ja puhuu säännöllisesti kansainvälisissä konferensseissa. Tiedon jakaminen on hänelle luontaista, ja Laura on saanut Microsoftin Most Valuable Professional (MVP) -palkinnon vuosittain vuodesta 2019 lähtien.