Kehitettävänä, testauksessa ja tuotannossa olevia ohjelmistoja ajetaan eriytetyissä teknisissä ympäristöissä, jotta kehitystyön laatu voidaan varmistaa tuotantoympäristöä mukailevassa ympäristössä ja toisaalta tuotantoympäristöä ei häiritä keskeneräisellä kehityksellä.
Käyttäjien arkaluonteisia tai henkilökohtaisia tietoja ei kopioida ja käytetä kehitysympäristössä.
Kehitysyksikkö ylläpitää itse kriteeristöä asioille, joiden täyttyessä tietty työtehtävä voidaan todeta valmiiksi. Kriteerit voivat sisältää mm. katselmointivaatimuksia, dokumentointivaatimuksia ja testausvaatimuksia.
Uutta koodia otetaan käyttöön vasta laajan ja ennalta määritellyt kriteerit täyttävän testauksen jälkeen. Testien olisi katettava käytettävyys, turvallisuus, vaikutukset muihin järjestelmiin ja käyttäjäystävällisyys.
Organisaation on dokumentoitava erityisesti sovellusturvallisuuden tasoa mittaavat tietoturvamittarit. Toteutuksessa on otettava huomioon organisaation itse määrittämät tietoturvatavoitteet sekä muut tietoturvavaatimukset.
The organisation's IT systems must go through risk assesment to determine the necessity for the seperation into development, testing and operational system.
The segmentation must be implemented based on the results of the risk assesment.
Testaukseen käytettävät tieto- ja muut aineistot olisi valittava huolellisesti ja niitä olisi suojattava.
Tuotantotietoa, joka sisältää henkilötietoja tai muuta luottamuksellista tietoa, ei tulisi käyttää testaustarkoituksiin.
Käytämme vahvaa salausta salasanojen siirron ja tallennuksen aikana kaikissa kehittämissämme palveluissa.
Julkisten verkkojen kautta siirrettävää sovelluspalveluihin kuuluvaa tietoa on suojattava vilpilliseltä ja sopimuksen vastaiselta toiminnalta ja luvattomalta paljastumiselta ja muuttamiselta.
Käytämme vahvoja salaus- ja turvallisuusprotokollia (esim. TLS, IPSEC, SSH) suojaamaan luottamuksellisia tietoja niitä siirrettäessä julkisia verkkoja pitkin kehittämiemme IT-palvelujen yhteydessä.
Koodin katselmointia, hyväksymistä ja julkaisua varten on määritelty yleiset säännöt ja niiden noudattamista valvotaan.
Säännöt voivat sisältää mm. seuraavia asioita:
Säännöillä pyritään hallitsemaan uuden ohjelmakoodin julkaisemiseen liittyviä riskejä.
Vain ennalta määritellyt, valtuutetut käyttäjät saavat julkaista muutoksia koodiin.
Pääsyä lähdekoodeihin ja niihin liittyviin muihin suunnitelmiin valvotaan, jotta estetään mm. luvattoman koodin lisääminen sekä vältetään tahattomat muutokset. Pääsyoikeuksia jaetaan tarve tietää -periaatteella, eikä esimerkiksi tukihenkilöstölle myönnetä rajattomia pääsyoikeuksia.
Lähdekoodin valvonta voidaan toteuttaa esimerkiksi tallentamalla kaikki koodi keskitetysti asiaan dedikoituun lähdekoodin hallintajärjestelmään.
Kehitystyötä koskevat yleiset pelisäännöt on laadittu ja ne on hyväksytty kehitystyön johtohenkilöiden toimesta. Sääntöjen toteutumista valvotaan kaikessa organisaatiossa tehtävässä kehityksessä ja ne katselmoidaan vähintään vuosittain.
Turvallisen kehittämisen politiikka voi sisältää mm. seuraavia asioita:
Turvallisen kehittämisen sääntöjen noudattamista voidaan vaatia myös avainkumppaneilta.
Vaikka kehitystä ulkoistetaan, meillä säilyy vastuu asianmukaisten lakien noudattamisesta ja hallintakeinojen vaikuttavuuden todentamisesta.
Olemme määritelleet toimintatavat, joiden valvomista seuraamme ja noudattamista edellytämme koko ulkoistusketjussa. Käytännöt voivat sisältää mm. seuraavia asioita:
Olemme sopineet ja kirjanneet käytännöt, joiden avulla aiempi versio ohjelmistosta voidaan palauttaa, ennen julkaisujen toteuttamista.
Riittämätön muutosten hallinta on yleinen syy tietojenkäsittelypalvelujen toiminta- ja turvallisuushäiriöille.
Organisaation on dokumentoitava muutostenhallintaprosessi, jota on noudatettava aina tehtäessä merkittäviä tietoturvallisuuten vaikuttavia muutoksia itse kehitettyihin digipalveluihin tai muihin tietojenkäsittelypalveluihin. Prosessi sisältää vaatimukset mm. seuraaville asioille:
Organisaation on määritettävä keinot turvalliseen ohjelmiston käyttöönottostrategiaan. Keinot on automatisoitava, jos mahdollista.
Organisaation on määriteltävä ja otettava käyttöön Secure Software Development Life Cycle (SSDLC, ohjelmistokehityksen elinkaari) -prosessi ohjelmistokehityksessä.
SSDLC-prosessin ensimmäisen vaiheen tulee olla tietoturvavaatimusten määrittely, joka varmistaa tietoturvanäkökulmien tulevan integroiduksi kehitettäviin palveluihin heti luomisvaiheesta lähtien.
SSDLC-prosessin on suositeltavaa sisältää vähintään seuraavat vaiheet:
Kaikki koodi tuntemattomasta alkuperästä on ajettava ns. sandbox-ympäristössä eli eristettynä organisaation muista laitteista ja verkoista. Tällä estetään sen pääsy organisaation resursseihin ilman erityistä lupaa käyttäjältä. Tämä sisältää:
Kriittiset tietojärjestelmien tai tarjottujen digipalvujen toteutus tarkastatetaan säännöllisesti hyödyntäen ennalta määriteltyä luotettavaa standardia tai turvallisen ohjelmoinnin ohjetta.
Tarkentavia ohjeita ovat mm. VAHTI Sovelluskehityksen tietoturvaohje (VAHTI 1/2013), OWASP Application Security Verification Standard (ASVS) sekä Kyberturvallisuuskeskuksen ohje "Turvallinen tuotekehitys: kohti hyväksyntää".
Organisaation täytyy hankkia hyväksyntä tiedon omistajalta, ja hallinnoitava mahdolliset riskit, ennen sen käyttämistä testaustarkoituksessa.
Organisaation on luotava toimintamallit, joiden avulla tietosuoja, oikeaoppinen henkilötietojen käsittely ja tietosuojavaatimusten huomiointi on oletusarvoisesti mukana uusien järjestelmien, digipalvelujen tai toimintaproessien suunnittelussa ja kehittämisessä niiden ensihetkistä alkaen.
Tätä kutsutaan sisäänrakennetun ja oletusarvoisen tietosuojan periatteeksi (privacy by design). Tärkeä osa tämän periaatteen soveltamista on lisäksi järjestelmien oletusasetusten konfigurointi niin, että ne minimoivat henkilötietojen käsittelyn ja noudattavat kaikkia alueellisia lakeja / määräyksiä.
Organisaation on luotava toimintamallit, joiden avulla tietoturvallisuus ja turvallisuusvaatimusten huomiointi on oletusarviosesti mukana uusien järjestelmien, digipalvelujen tai toimintaproessien suunnittelussa ja kehittämisessä niiden ensihetkistä alkaen.
Tätä kutsutaan sisäänrakennetun ja oletusarvoisen tietoturvan periatteeksi (security by design). Tämän toimintatavan yhtenä tuloksena suunnitteluun liittyvästä dokumentaatiosta tulisi käydä selkeästi ilmi, millä toimenpiteillä tietoturvallisuudesta huolehditaan.
Tuotantotiedon käyttöä olisi vältettävä testaustarkoituksissa. Mikäli luottamuksellisia tietoja käytetään testauksessa, seuraavia suojausmenettelyjä olisi käytettävä:
Määrittelyä turvallisuuden kannalta kriittisestä koodista eri palvelujen suhteen pidetään yllä. Uusia kriittisen koodin osasia pyritään jatkuvasti tunnistamaan ja uudet päivitykset tarkistetaan erityisen tarkasti kriittistä koodia koskevien muutosten suhteen. Tavoitteena on pitää turvallisuusheikkouksien todennäköisyys mahdollisimman pienenä.
Tilapäisten tunnistautumistietojen olisi oltava yksilöllisiä, eivätkä ne saisi olla arvattavissa esimerkiksi käyttäjän tiedoista päättelemällä.
Kaikista tuotanto- tai asiakaskäytössä oleviin ohjelmistoihin tai omiin IT-palveluihin tehdyistä päivityksistä olisi pidettävä tapahtumalokia.