Oppgaver i sikker programvareutvikling
Dette kapitlet beskriver de ulike fasene i utviklings- og driftsprosessen, og hvilke oppgaver som bidrar til at informasjonssikkerhet er en integrert del av programvareutviklingen. Hver enkelt fase med de tilhørende oppgavene kan leses som frittstående kapitler.
Tabellen under hver fase viser hvem som er Hovedansvarlig (H), Utførende (U), Konsulteres (K) og Informeres (I) for de enkelte oppgavene.
Planlegge utviklingen
I planleggingsfasen identifiseres sikkerhetskrav, risiko vurderes, og kost-nyttevurderinger av sikkerhetstiltak gjennomføres. Dette sikrer at sikkerhet integreres fra start og at tiltakene er både effektive og kostnadsmessig forsvarlige. Systemeier vurderer risiko opp mot kostnader for å finne en balansert løsning. Resultatet er en plan som legger til rette for trygg utvikling og effektiv ressursbruk. Oppgavene nedenfor støtter dette målet.
Finansering og ressurser
For å sikre at informasjonssikkerhet er en integrert del av utviklingsprosessen, må nødvendige ressurser være tilgjengelig fra starten av prosjektet. Finansiering skal dekke anskaffelse og drift av sikkerhetsverktøy, opplæring av teammedlemmer og gjennomføring av risikoreduserende tiltak gjennom hele programvarens livsløp.
Ressursplanleggingen må sikre at teamet har kapasitet og kompetanse til å ivareta sikkerhetsoppgavene i alle faser. Systemeier har ansvar for å avsette midler og prioritere tiltak basert på virksomhetens risikovurderinger, slik at sikkerhet kan gjennomføres uten at økonomiske eller organisatoriske hindringer svekker arbeidet.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Fastsette akseptabel risikonivåAkseptabelt risikonivå er fastsatt for løsningen, slik at beslutninger om sikkerhetstiltak kan forankres og prioriteres ut fra virksomhetens risikotoleranse. |
K | H | I | I |
Gjennomføre innledende risikoanalyseGjennomføre en innledende risikoanalyse for å identifisere risikoer og nødvendige tiltak tidlig i prosjektet. Bruk gjerne trusselmodellering for dette. |
K | H | U | U |
Akseptere restrisikoAkseptere restrisiko etter gjennomført risikoanalyse og evaluering av tiltak, slik at videre håndtering baseres på bevisste og informerte beslutninger. |
K | H | ||
Planlegge og iverksette tiltakPlanlegge og iverksette tiltak identifisert gjennom risikoanalyse, slik at risikoen reduseres til akseptabelt nivå. |
I | H | U | |
Etablere rutiner for utviklingsfaseneEtablere rutiner for sikker utvikling i alle faser, slik at arbeidet gjennomføres strukturert og risiko reduseres. |
H | U | U | |
Etablere plan for kompetansehevingEtablere og iverksette opplæringsplan innen sikker programvareutvikling, slik at teamet har nødvendig kompetanse for å ivareta sikkerhet gjennom samtlige faser i utviklingsprosessen. |
H | |||
Sikre finansiering for utviklingsfaseneAllokere økonomiske midler til sikkerhetstiltak og aktiviteter gjennom alle utviklingsfaser, slik at nødvendige tiltak kan gjennomføres uten økonomiske hindringer. |
H | I | ||
Sikre tilstrekkelige ressurserSikre tilstrekkelig bemanning og ressurser i alle faser av programvareutviklingen, slik at sikkerhetsarbeidet utføres effektivt og grundig. |
H | I | I |
Programmere
I programmeringsfasen utvikles kildekode som følger beste sikkerhetspraksis og som avdekker og utbedrer sårbarheter så tidlig som mulig.
Alle i utviklingsteamet har et ansvar for i fellesskap å sikre at det som programmeres følger avtalte standarder for sikkerhet og holder seg oppdatert på trusler og sårbarheter. Dette krever at det settes av nok tid til dette arbeidet og at det ses på som en integrert og helt nødvendig del av utviklingsarbeidet. De andre rollene i teamet skal støtte og legge til rette for at programmererne kan gjennomføre sikker utvikling.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Kompetanseheving i planleggingsfasenGjennomføre regelmessig opplæring i sikker programvareutvikling slik at teamet kontinuerlig oppdaterer og vedlikeholder nødvendig kompetanse. |
H | KU | U | |
Vedlikeholde tredjepartsbiblioteker og rammeverkVelge kun pålitelige tredjepartsbiblioteker og rammeverk, og holde dem oppdatert for å unngå kjente sårbarheter. |
H | U | ||
Begrensede rettigheterBegrense utvikleres rettigheter i lokale utviklingsmiljøer til det nødvendig for å redusere risikoen for uønskede endringer og kompromittering. |
H | K | I | |
Benytte kontinuerlig kildekodekontrollBenytte verktøy for kontinuerlig kontroll av kildekode slik at sårbarheter, feil og sikkerhetsavvik oppdages tidlig. |
H | U | ||
Manuell kodegjennomgangGjennomføre regelmessig manuell kildekodegjennomgang for å avdekke sikkerhetsrelaterte feil og svakheter som automatiske verktøy kan overse. |
H | U | ||
Kjøre automatiserte enhetstesterKjøre automatiserte enhetstester og integrasjonstester kontinuerlig for å sikre at sikkerhetskrav ivaretas, og at avvik oppdages og korrigeres tidlig. |
H | U |
Bygge programvare
I byggefasen omdannes kildekode til kjørbar og sikker programvare, der sårbarheter håndteres tidlig. Byggefasen automatiserer sikkerhetstesting og sårbarhetsskanning for å sikre at programvaren oppfyller alle sikkerhetskrav før videre testing og distribusjon. Gjennom kontinuerlig systemovervåkning av sikkerhetstester sørger byggefasen for en stabil og sikker applikasjon som er klar til neste steg.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Kompetanseheving i byggefasenEtablere kompetanse i å konfigurere automatiserte sikkerhetstester, sårbarhetsskanning og statisk kodeanalyse for å sikre korrekt bruk og tidlig håndtering av funn. |
H | KU | U | |
Konfigurere sikkerhetsverktøySikkerhetsverktøy konfigureres for automatiserte sikkerhetstester, sårbarhetsskanning og statisk kodeanalyse, slik at sårbarheter avdekkes tidlig. |
H | U | ||
Kjøre automatiserte sikkerhetstesterSikkerhetstester kjøres automatisk i bygg for å avdekke sårbarheter tidlig og sikre kontinuerlig verifisering av sikkerhetskrav. Sørge for å loggføre og tilgjengeliggjøre resultater fra automatiserte sikkerhetstester for videre analyse og oppfølging. |
H | U | ||
Oppfølging av avvikFølge opp avvik funnet i analyser ved å iverksette nødvendige tiltak for å redusere risiko og forbedre sikkerheten. |
H | KU | U |
Teste programvare
I testfasen identifiseres og håndteres sikkerhetsrisikoer før programvaren rulles ut. Her brukes avanserte tester som sårbarhetsskanninger, kodeanalyse og funksjonelle tester for å validere sikkerhet, ytelse og funksjonalitet. Testing verifiserer også at sikkerhetstiltak som kryptering og tilgangskontroller fungerer som forventet. Dette sikrer at programvaren er stabil og trygg, slik at eventuelle problemer kan utbedres før publisering.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Kompetanseheving i sikkerhetstestingTeamet foretar løpende opplæring i testverktøy og testmetoder for å sikre korrekt gjennomføring og tolkning av sikkerhetstester. |
H | KU | U | |
Sikre trygg bruk av testdataBruk av testdata skal være i tråd med regelverk og sikkerhetskrav. Det skal benyttes anonymiserte eller syntetiske data, og sensitiv informasjon skal ikke brukes i test uten særskilt risikovurdering. |
H | U | U | |
Kontinuerlig sikkerhetstestingSikkerhetstesting gjøres som del av testprosessen, både for automatiserte og manuelle tester. Resultatene fra sikkerhetstestene dokumenteres og gjennomgås. |
K | H | U | |
Vurdere ytterligere sikkerhetstesterYtterlig sikkerhetstester vurderes, inkludert penetrasjonstesting. |
I | H | ||
Oppfølging av testresultateneRisikovurdering oppdateres basert på testresultatene og nye risikoreduserende tiltak vurderes. |
I | H | KU | U |
Rulle ut programvare
I utrullingsfasen fremheves viktigheten av integrerte sikkerhetstiltak som signering for integritetsbekreftelse, autentisering for identitetskontroll og tilgangsbegrensning. Dette sikrer trygg overføring mellom utviklings-, test- og produksjonsmiljøer. Ved å kombinere grundig dokumentasjon, kontinuerlig overvåking og beredskap for hendelseshåndtering reduseres risikoen for feil og sikkerhetsproblemer.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Følge etablerte utrullingsrutinerFølge etablerte rutiner for utrulling slik at prosessen utføres kontrollert, forutsigbart og sikkert. |
H | U | ||
Automatisere og overvåke utrullingerSette opp og vedlikeholde automatiserte rutiner for utrulling, samt overvåke systemet etter distribusjon for rask oppdagelse og håndtering av avvik. |
I | H | U | |
Verifisere funksjonalitet og sikkerhetVerifisere utrullingen med hensyn til funksjonalitet og sikkerhet i produksjonsmiljøet, slik at løsningen møter fastsatte krav og unngår innføring av nye risikoer. |
H | U | ||
Tilrettelegge for og teste tilbakerulling (rollback)Utform og test prosedyre for trygg tilbakeføring til forrige versjon dersom det oppstår feil eller sikkerhetsbrudd ved utrulling. |
H | U | ||
Oppdatere og vedlike utrullingsdokumentasjonOppdatere og forbedre dokumentasjon av utrullingsprosessen basert på erfaringer og tilbakemeldinger, for å sikre kontinuerlig læring og forbedring. |
H | U | I |
Drift
I driftsfasen opprettholdes høy ytelse og sikkerhet mens systemene er i produksjon. Dette skaper et sikkert og stabilt miljø der applikasjonene alltid er tilgjengelige for sluttbrukere, og der trusler håndteres forebyggende. Ved å implementere automatiserte prosesser for overvåking, logging og oppdateringer identifiseres og håndteres potensielle trusler raskt og effektivt, uten forsinkelser som kan påvirke systemets stabilitet.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Sikre tjenestekvalitetSikre at forventet tjenestetilgjengelighet og -ytelse er i tråd med avtaler og krav (SLA), slik at eventuelle avvik raskt kan oppdages og håndteres. |
K | H | U | U |
Revidere og justere tilgangerGjennomgå og justere bruker- og systemtilganger jevnlig, slik at tilgangsstyring alltid samsvarer med gjeldende retningslinjer. |
H | KU | U | |
Håndtere endringer i produksjonsmiljøGjennomføre, dokumentere og loggføre endringer systematisk, slik at endringshistorikk og sikker drift ivaretas. |
I | H | U | |
Automatiserte sikkerhetskopiering og gjenopprettingAutomatisere sikkerhetskopiering, samt jevnlig teste og dokumentere gjenoppretting for å sikre tilgjengelighet og integritet av data. |
H | U | ||
Håndtere sikkerhetsoppdateringerIdentifisere, gjennomføre og kontrollere sikkerhetsoppdateringer i henhold til etablerte rutiner for å beskytte systemet mot sårbarheter. |
H | U | ||
Sårbarhetsanalyse og validering av tiltakDriftssystemet er jevnlig analysert for nye sårbarheter. Sikkerhetstiltakene er testet og validert for å sikre at de fungerer som forutsatt. |
K | H | U |
Systemovervåkning og hendelseshåndtering
I systemovervåknings- og hendelseshåndteringsfasen sikres kontinuerlig beskyttelse, og uforutsette hendelser håndteres. Dette gjør det mulig å oppdage og håndtere sikkerhetstrusler og så raskt som mulig komme tilbake til en normal driftsituasjon. Kontinuerlig systemovervåkning vil hjelpe teamet med å finne avvik og sårbarheter tidlig. Fokus i denne fasen er forebyggende sikkerhet. Dette reduserer skade og gjør systemet mer robust.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Opplæring og øvelser i sikkerhetshendelserGjennomføre regelmessig opplæring og øvelser i håndtering av sikkerhetshendelser, slik at teamet er forberedt og kompetent ved reelle hendelser. |
H | KU | U | |
Definere og vedlikeholde planverkDefinere og oppdatere prosesser og rutiner for håndtering av sikkerhetshendelser, slik at de alltid er i samsvar med eksisterende rutiner for beredskap og hendelseshåndtering. |
I | H | U | I |
Verktøy for systemovervåkingAktivere nødvendige verktøy for systemovervåkning og logging. Verifisere at varslinger fungerer som de skal og når nødvendige parter. |
I | H | U | |
Etablere rutiner for eskaleringEtablere rutiner for eskalering, og beslutte ekstraordinære sikkerhetstiltak som skal iverksettes ved kritiske hendelser. |
K | H | I | |
Informere eksterne parterSørge for at relevante eksterne aktører varsles og involveres ved alvorlige sikkerhetshendelser, i tråd med etablerte varslingsrutiner og avtaler. |
H | U | I | |
Verifisere loggfunksjonalitetSikre at loggføring er aktivert, fungerer som forventet og gir tilstrekkelig innsikt for å kunne oppdage, analysere og håndtere sikkerhetshendelser. |
H | U | ||
Evaluere og lære av hendelserHendelser både på overordnet og operativt nivå skal evalueres, og rapporteres for videre læring. Rutiner og planer skal oppdateres fortløpende med relevante læringspunkter. |
I | H | U | I |
Avvikle programvare
I avviklingsfasen sikres det at programvaren fjernes fra drift på en sikker og kontrollert måte, der sensitiv informasjon håndteres forsvarlig og ressurser frigis trygt. I denne fasen er det viktig å gjennomføre sanering av data, deaktivere tilgang og dokumentere avvikling, for å redusere risiko for uautorisert tilgang eller dataeksponering etter at systemet er tatt ut av bruk.
| Oppgave | Systemeier |
Teamlead |
Techlead |
Utvikler |
|---|---|---|---|---|
Foreta beslutning om avviklingOrganisatoriske og tekniske avhengigheter og konsekvenser dokumenteres og vurderes. Avvikling risikovurderes, besluttes og planlegges. |
K | H | I | I |
Arkivering og dataoverføringData som skal bevares overføres eller arkiveres iht. regulatoriske krav og beslutninger. |
K | H | U | U |
Sletting og teknisk saneringTeknisk sanering av database, programvare, servere, nettverksåpninger osv. utføres og sensitive data slettes. |
I | K | H | U |
Håndtering og fjerning av tilgangerAlle fysiske og digitale tilganger som var nødvendig for drift av programvaren, inkludert til eksterne API-er, servere, databaser, nøkler og sertifikater fjernes. |
I | K | H | U |
Systemeier
Teamlead
Techlead
Utvikler