DevOps og/eller sikkerhet?

devopsdays2012Første gang jeg hørt uttrykket “DevOps” var i en samtale med Gary McGraw under AReS-konferansen i Wien i 2011 – jeg tenkte ikke mye over det da, men i de siste par årene virker det som om DevOps har klatret til toppen av hype-syklusen, og det dukker opp over alt.

Hva er DevOps? Enkelt sagt er det snakk om å rive ned skillene mellom de som utvikler en løsning, og de som drifter den. Dette kunne fremstå som ganske umulig langt tilbake i forrige millennium, der programvare møysommelig ble håndprogrammert, testet, og pakket i plast for sending til leverandører. Imidlertid er det stadig færre som utvikler programvare på denne måten – mange tilbyr nå programvare direkte som tjenester i nettskyen.

Noen virksomheter har store organisasjoner for å sørge for at sikkerhetsoppdateringer kan utvikles og rulles ut så fort som mulig – hva om man utviklet ALL programvare på denne måten? Når kundene kjøper en skytjeneste i stedet for en CD (for ikke å snakke om en stabel med disketter…), er det også kortere vei til å rulle ut oppgraderinger og feilrettinger, og plutselig er man i en tilstand av kontinuerlig leveranse. Det er ikke uvanlig med utrulling av nye versjoner daglig. DevOps blir derfor en naturlig tilnærming.

Hva så med sikkerheten når ting skal skje så fort? Det er ikke engang klart hva man skal kalle barnet – DevSecOps? SecDevOps? Rugged DevOps? En umiddelbar fordel er at sikkerhetsfeil som oppdages i driften kan fikses umiddelbart – fordi Ops også er Dev…

Når man skal gå fra Dev og Ops til DevOps, og i tillegg ha med sikkerhet, dukker spørsmålet opp: Hvor kobler man på sikkerhet? Hvis man knytter sammen Dev og sikkerhet får man (forhåpentligvis) programvaresikkerhet; Ops + sikkerhet skulle da vanligvis bli nettverkssikkerhet? Utfordringen blir da om vi kan få alle til å snakke sammen – i DevOps må vi komme dithen at sikkerhet er alles jobb!

DevOps forutsetter automatiserte “kokebøker” for pakking og utrulling, gjerne basert på virtuelle maskiner/containere. Konfigurasjons-/utrulllingsverktøy kan bidra til å holde konfigurasjoner i synk, men man må sørge for at sikkerhetstester og statisk analyse også inngår i det automatiske testbatteriet. Automatiseringen gjør det også mulig å bruke prekonfigurerte “images” av virtuelle maskiner med godkjente operativsystemversjoner, som kan settes opp til kun hente oppdateringer og ny programvare fra godkjente kilder. Det kan også fri oss fra øket med standard brukernavn/passord som “noen” må huske å endre.

En forutsetning for at dette skal funke er at programvaresikkerhet ivaretas i alle faser av utviklingen! Dette er kjernen i prosjektet SoS-Agile, og i året som kommer vil vi involvere oss tettere med virksomheter som bruker DevOps for å lære hvilke sikkerhetstriks de lykkes med – og eventuelt bidra med forbedringer der det er mulig.

Illustrasjon ved Pål-Kristian Hamre, CC BY-SA 2.0