Ik wil je meenemen op een reis naar de nabije toekomst. We bezoeken een organisatie waarbij ontwikkeling, security en operations (z.g. DevSecOps) volledig zijn geïntegreerd.
Het is juni 2018 en vandaag is de dag dat de nieuwe release van een veel gebruikte cloud applicatie uitgebracht wordt. Deze versie was na de derde sprint goed genoeg bevonden door het gehele team om in productie te brengen. Tijdens het uitvoeren van sprints wordt de code altijd automatisch getest op mogelijke security kwetsbaarheden. Hiervoor worden testen regelmatig bijgewerkt en aangemaakt, veelal automatisch. Hiervoor wordt o.a. gebruik gemaakt van machine learning, waarbij data uit verschillende bronnen automatisch verwerkt tot betere testen die kwetsbaarheden kunnen vinden.
Deze testen leveren ook een risicoprofiel op, waarop het team kan besluiten in hoeverre de software veilig genoeg is om in eventueel in productie te nemen. Bij een te hoog risicoprofiel is afgesproken, dat software nog niet in productie mag. Het risicoprofiel is zodanig dat de software wel in productie wordt genomen, maar wel heel nauwlettend gemonitord gaat worden. Dit is mogelijk doordat de SIEM-omgeving automatisch wordt geconfigureerd op basis van het risicoprofiel. Ook wordt automatisch het security-team ingelicht op de komende release en de mogelijke risico’s daarvan. Op deze manier kan op tijd worden ingegrepen, mocht er een ongewenste situatie zich dreigen voor te doen.
Na een kort overleg gaat het team aan de slag om de nieuwe software in productie te brengen. Na een druk op de knop, wordt dit proces volautomatisch in werking gesteld. Men gebruikt hiervoor een integratietool als Jenkins, waarbij de laatste versie van de code automatisch uit de repository (bijvoorbeeld Github) wordt gehaald, gecompileerd met alles erop en eraan. Dan wordt voor de nieuwe applicatie de nodige containers gemaakt (bijvoorbeeld met Docker), zodat oude en nieuwe versies naast elkaar kunnen blijven draaien zonder dat dit problemen oplevert voor het onderliggende platform.
Het risicoprofiel liet ook zien dat de baseline van de besturingssystemen moeten worden aangepast, om de beveiliging op niveau te houden. Hiervoor wordt automatisch een nieuwe baseline image gemaakt, die vervolgens wordt ingezet om de nieuwe versie van de software uit te rollen. Er worden automatisch nieuwe virtuele machines gestart, geconfigureerd met de laatste baseline en voorzien van de nieuwe software containers (bijvoorbeeld met Vagrant). Aangezien er gebruik gemaakt worden van cloud computing, worden automatisch de load balancers geconfigureerd om nieuwe verzoeken geleidelijk naar de nieuwe virtuele machines te sturen. Op deze manier zullen gebruikers op den duur de nieuwste release gaan gebruiken. De machines met de vorige versie van de release kunnen dan worden uitgezet. Op deze manier wordt een big-bang scenario voorkomen.
Na een aantal dagen blijkt de nieuwe software toch succesvol te zijn aangevallen. Hierop besluit het security-team een roll-back te doen naar de vorige (stabiele en veiligere) versie, die verder automatisch verloopt. Door al deze automatisering, zijn de lijnen tussen het ontwikkel, operations en security-team aanzienlijk verkort.
Dit klinkt misschien als een scenario in de verre toekomst. De werkelijkheid is echter dichterbij dan ooit. Ontwikkelingen als Agile, DevOps (samensmelting van ontwikkeling en operations), machine learning, automated testing, security intelligence (big data), cloud computing en vergaande automatisering gaan de komende periode heel hard. Dit heeft gevolgen voor iedereen binnen en buiten de organisatie; dus ook de security-specialisten.
Ik durf stellig te zeggen dat door de eerdergenoemde ontwikkelingen het werk van de huidige security-specialist sterk gaat veranderen. Mijns inziens zal de security-specialist van de toekomst, toegevoegde waarde moeten leveren door ervoor te zorgen dat de geautomatiseerde DevOps processen (integration & testing, delivery & deployment en operations) op een veilige manier worden ontworpen, ingericht en onderhouden. Dit betekent minder bureaucratisch en een vergaande integratie en betrokkenheid met de overige teams binnen de organisatie…