1.

Ohjelmistokehitykseen käytettävät tietokoneet ja muut päätelaitteet on suojattava

Päätelaitteet, joilla otetaan yhteyksiä ohjelmistokehityksen palvelimiin (kuten versionhallintaan tai tuotantoonvientiautomaatioon) tai joilla tehdään ylläpidollisia toimia, on tuotava organisaation tietotekniikkaylläpidon määrittelemien tietoturvavaatimusten piiriin (vakiointi, päivitykset, haittaohjelmilta suojautuminen, jne.).

Tämä vaatimus ei päde, mikäli päätelaitteella tehdään vain testausta julkisiksi tarkoitettuja käyttöliittymiä tai rajapintoja vasten.



2.

Ohjelmistokehitykseen käytettävien palvelinten on oltava lokienhallinnan piirissä

Ohjelmistokehityksessä käytettävät palvelimet, kuten versionhallinta-, integrointi- ja muut palvelimet, on tuotava lokienhallinnan piiriin. Lokienhallinnan vaatimukset sovelletaan kappaleen Auditoitavuuden yleisperiaatteet perusteella.



3.

Kehitysympäristöt ja työkalut on suojattava ja niiden saatavuus on taattava

Kehitysympäristöjen ja -työkalujen tietoturvavastuu kuuluu oletusarvoisesti ohjelmistokehittäjille. Vastuu voidaan siirtää erikseen sopimalla tai käyttämällä organisaation toimittamia standardoituja ympäristöjä ja työkaluja. Kehitysympäristöjen ja -työkalujen haavoittuvuuksien seuranta on järjestettävä kuten kappaleessa Tietoturvallisen arkkitehtuurin ja suunnittelun yleisperiaatteet on kuvattu.



4.

Kehitys- ja tuotantoinfrastruktuurin käyttöoikeudet on rajoitettava mahdollisuuksien mukaan

Kehitys- ja tuotantoinfrastruktuurissa on vältettävä jaettuja tunnuksia ihmisten käytössä, paitsi jos sitä ei voi teknisesti välttää. Automaation käyttämien tunnusten oikeudet on rajoitettava niihin toimintoihin, jotka automaatio tarvitsee.



5.

Ohjelmistokehittäjien käyttöoikeudet on sidottava projektissa työskentelyyn

Ohjelmistokehittäjien oikeudet on poistettava, mikäli he eivät enää työskentele projektissa. Mikäli käytetään jaettua tunnusta, jaetun tunnuksen tunnistustiedot on uusittava aina, kun jokin tunnusta jakanut henkilö ei enää työskentele projektissa.



6.

Ihmisten kehitysjärjestelmien käyttäjätunnuksissa on käytettävä kaksivaiheista tunnistusta

Ihmisten käytössä olevilla käyttäjätunnuksilla on oltava käytössä kaksiosainen tunnistus.

Esimerkki: Kaksiosainen tunnistus ei välttämättä ole interaktiivinen. Kaksi vaihetta voivat olla esimerkiksi versionhallintaa kehittäjän koneelta käytettäessä tietokoneen kiintolevyn salausavain ja tällä kiintolevyllä säilytettävä ssh-avain. Interaktiivisen kaksivaiheisen tunnistuksen tulisi mieluiten olla erikseen laskettava aikapohjainen tunniste (TOTP), eikä esimerkiksi tekstiviestitodennus.



7.

Salaisuuksien hallinta on järjestettävä

Salaisuudet, esimerkiksi salaus- ja rajapinta-avaimet, on hallittava niin, että ne voidaan tarvittaessa helposti vaihtaa niin testaus- kuin tuotantoympäristöissäkin, ja että pääsy salaisuuksiin on vain nimetyillä henkilöillä. Salaisuudet on vietävä tuotantoon konfiguraationa. Salaisuuksien säilytys osana lähdekoodia on kielletty.



8.

Ohjelmistoriippuvuuksien ja koodin versionhallinnan saatavuus on turvattava

Kaikki ohjelmistoriippuvuudet on tunnettava ja tämä koskee myös riippuvuuksien riippuvuuksia. Mikäli järjestelmä on huoltovarmuuskriittinen, ohjelmistoriippuvuuksia (ja näiden riippuvuuksia) on käytettävä Suomessa sijaitsevan kopion välityksellä. Versionhallinnan sekä tuotantoonvientiautomaation on sijaittava kokonaisuudessaan Suomessa.



9.

Ohjelmistoriippuvuuksien ja koodin eheys on taattava

Järjestelmän osien on toteutettava sisäinen monitorointirajapinta, tai monitorointi voidaan suorittaa lokeja seuraamalla.

Uusissa monitorointirajapinnoissa tulisi pyrkiä julkaisemaan onnistuneiden pyyntöjen määrä aikayksikköä kohti, epäonnistuneiden pyyntöjen määrä aikayksikössä ja pyynnön käsittelyaika sekunneissa (pienin, isoin, keskimääräinen, mediaani) aikayksikössä (eli nk. RED-tiedot: rate, errors, duration).



10.

Ohjelmakoodi katselmoidaan

Ohjelmakoodille tehdään koodikatselmointia (code review tai automaattisena staattista analyysiä, static analysis). Ohjelmistotuotetiimi valitsee heille parhaiten sopivan tavan suorittaa tätä. Suosituksena on nk. pull request -menettelyn käyttö koodikatselmointiin. Erityistä tietoturvakatselmointia tarvittaessa tämä on syytä pyytää ja tiketöidä erikseen.



11.

Tuotantoon viedyistä komponenteista tallennetaan kopio forensiikkatarkoituksiin

Luodaan kyky selvittää jälkikäteen, mitä koodia tuotannossa on ollut ajossa. Esimerkiksi kontteja käytettäessä tuotantoon vietävästä kontin kuvasta voidaan tehdä arkistokopio.