DevOps is een populair begrip geworden. Google Trends bevestigt dat de bekendheid met het begrip het afgelopen jaar geëxplodeerd is. Het is niet alleen populair, er is ook behoefte aan DevOps. Dat blijkt uit dat ook traditionele organisaties nu de overstap maken naar DevOps. Doordat de focus bij DevOps ligt op het snel op kunnen leveren van nieuwe functionaliteit lijkt software security ondergesneeuwd te raken, maar gelukkig hoeft dat niet.
DevOps
DevOps is een software ontwikkelmethode waarbij gestimuleerd wordt dat teams van ontwikkelaars, testers en beheerders die productieomgevingen onderhouden met elkaar samenwerken. De samenwerking tussen teams maakt het mogelijk om de time-to-market te verkorten, de kans op een succesvolle release te vergroten en fouten en/of incidenten sneller te verhelpen. Om deze doelen te bereiken wordt DevOps vaak ingezet in combinatie met elementen van Continuous Delivery en Continuous Deployment zoals het gebruik van gestandaardiseerde ontwikkelomgevingen, automatisering van integratie- en testprocessen en geautomatiseerde installatie & distributie van applicaties (deployment). Hierdoor wordt het releasen van toepassingen een voorspelbaar en efficiënt proces.
Critici
De voordelen van DevOps klinken te mooi om waar te zijn. Een veel gehoorde kritiek is dat een ontwikkelaar in een DevOps organisatie, een full-stack ontwikkelaar, kennis en ervaring in veel verschillende domeingebieden nodig heeft: server en netwerk-infrastructuur, applicatieservers, data modeling en management, business logica, APIs, software raamwerken en bibliotheken, gebruikersinterfaces en natuurlijk de eisen en wensen van de klant. Critici menen dat deze kennis en ervaring niet in een persoon verenigbaar zijn, zeker in grote organisaties.
Beveiligingsspecialisten uiten andere zorgen. De eerste ligt ten grondslag aan de cultuur binnen sommige DevOps-organisaties. Deze cultuur legt een focus op het verkorten van de time-to-market om functionaliteit op te leveren. Aan niet direct zichtbare of tastbare zaken zoals security wordt volgens critici onvoldoende prioriteit gegeven. Het resultaat: minder veilige software in productie.
De tweede zorg ligt in de snelheid van het voortbrengingsproces. Snelle wijzigingen in configuratie en code kunnen leiden tot nieuwe beveiligingsrisico’s. Door het toepassen van automatische security tests zijn kwetsbaarheden in een vroeg stadium op te sporen. Echter, niet alle typen kwetsbaarheden zijn met automatische security tests op te sporen, een voorbeeld zijn logische fouten. Handmatige en tijdrovende security analyses (code review, penetratie testen) blijven dus nodig. Door de snelheid van het voortbrengingsproces in een DevOps omgeving kunnen de resultaten van deze analyses achterhaald zijn.
Kortom, door toepassing van DevOps kunnen beveiligingsrisico’s onontdekt blijven. Toch biedt DevOps juist heel veel kansen en mogelijkheden om de beveiliging van software naar een hoger niveau te brengen.
Voordelen van DevOps voor software security
Tijdens de beveiligingsonderzoeken die we uitvoeren, zien we dat organisaties die DevOps toepassen een aantal voordelen hebben:
- Meer overzicht over de gehele keten, van server- en netwerkinfrastructuur tot applicatie, brengt zwakke punten in de beveiliging aan het licht
- Security is overal. Beveiligingsmechanismes moeten zowel in de infrastructuur als in de applicatie ingebouwd worden. Een optimale samenwerking tussen ontwikkelaars, security specialisten en operationele teams maakt het mogelijk om dreigingen over de gehele keten gezamenlijk te identificeren en deze te adresseren. Ook het uitvoeren van een security analyse wordt eenvoudiger als kennis over de gehele keten bij een groep mensen belegd is.
- Grotere scope van verantwoordelijkheid prikkelt een ontwikkelteam om incidenten te voorkomen in plaats van te genezen
- Door de integratie van ontwikkelaars, operationele teams en (security-) specialisten krijgen de teamleden een groter gevoel van verantwoordelijkheid om een applicatie ‘in de lucht’ te houden omdat ze bij een eventueel incident ook zelf de rommel op moeten ruimen. Een team wordt daardoor geprikkeld om maatregelen te bedenken en toe te passen om incidenten te voorkomen.
- Door toepassing tooling en automatische processen worden kwetsbaarheden eerder gevonden
- Strikt genomen, valt testautomatisering en de geautomatiseerde packaging, installatie en distributie van applicaties (deployment) niet binnen de scope van DevOps. Toch worden ze vaak samen gebruikt. Security testing kan (deels) ook worden geautomatiseerd en kan opgenomen in een geautomatiseerde ontwikkelstraat. Dit maakt het mogelijk om kwetsbaarheden in het vroegste stadium te detecteren en feedback te geven aan ontwikkelaars.
- Kortere release tijden zorgen ervoor dat kwetsbaarheden sneller opgelost kunnen worden
Software security gaat niet alleen over het voorkomen van kwetsbaarheden, maar ook over detectie en respons op security incidenten. Door samenwerking tussen teams is er meer kennis beschikbaar om detectiesystemen beter af te stellen zodat ook applicatie-specifieke incidenten gedetecteerd kunnen worden. Met de kortere release tijden kunnen de veroorzakers van deze incidenten, de kwetsbaarheden, snel opgelost worden.
Meten is weten
Het toepassen van DevOps maakt een applicatie niet automatisch veiliger. De introductie van DevOps in een software ontwikkelorganisatie biedt juist kansen en mogelijkheden om een Secure Software Development Life Cycle (SSDLC) in te voeren of deze te verbeteren. Een SSDLC is een proces dat ontwikkelaars helpt bij het realiseren van veilige software gedurende het gehele software ontwikkelproces, in plaats van achteraf over software security na te denken. Binnen zo’n SSDLC zijn een aantal security activiteiten te onderscheiden zoals threat modeling, code review met behulp van statische analyse tools en het gebruik van vulnerability scanners.
In pure DevOps omgevingen wordt vaak gestuurd op IT performance-gerelateerde metrieken zoals deployment frequency en deployment lead time. Door alleen hierop te sturen, bestaat inderdaad het risico dat software security het kind van de rekening wordt. Organisaties moeten daarom ook security metrieken in ogenschouw nemen zodat gestuurd kan worden op het verbeteren van software security. Een goede eerste stap is om vast te stellen hoe succesvol een organisatie is in het integreren van security in het ontwikkelproces. In een SIG security onderzoek voeren we deze metingen uit. We inspecteren met behulp van een model in welke mate security activiteiten van een SSDLC door een organisatie uitgevoerd wordt tijdens de ontwikkeling van een software product en hoe goed deze activiteiten worden uitgevoerd.