Dienst · Software-ontwikkeling

DevSecOps inrichten.

Er gaat meer code doorheen dan iemand nog kan lezen. Een controle die meedraait in de pijplijn vangt de categorie fouten af die zich mechanisch laat herkennen, zodat de aandacht van uw mensen naar de fouten gaat die dat niet doen. Wij richten dat in met afspraken die blijven staan.

GeheimenAfhankelijkhedenStatische analysePoortafspraken

Wat wij hierin doen, en waar de grens ligt.

DevSecOps betekent in de praktijk iets eenvoudigs: de controles die u anders aan het einde doet of helemaal niet, draaien mee op het moment dat code wordt geschreven en opgeleverd. Geen apart beveiligingsproject naast het ontwikkelen, maar een aantal poorten in de weg die code toch al aflegt. De winst zit niet in het vinden op zich, maar in het moment: een fout die bij het schrijven zichtbaar wordt, is een kort gesprek; dezelfde fout na oplevering is een incident.

Er is een reden waarom dit nu dringender is dan een paar jaar geleden. Het tempo waarin code wordt geproduceerd is sneller gegroeid dan het tempo waarin mensen die kunnen nalezen, en gereedschap dat code genereert is geoptimaliseerd voor werkende code en niet voor veilige code. Dat betekent dat er meer doorheen komt en dat er meer bekende patronen in zitten — precies de categorie die een controle in de pijplijn wel afvangt en een overbelaste reviewer niet.

Wij richten die controles in, maar het werk zit vooral in de afspraken eromheen: wat houdt tegen, wat waarschuwt, en hoe komt er iets doorheen als dat een keer moet. Dat sluit direct aan op uw componentoverzicht en op kwetsbaarhedenbeheer. Draait uw pijplijn bij een externe partij, dan werken we samen met wie dat beheer doet.

Drie soorten opdrachten die wij hierin krijgen.

Alles tegelijk aanzetten op een bestaand project levert een berg meldingen op waar niemand aan begint. Wij werken daarom in deze volgorde, en pas als de vorige stap rustig is.

Eerste traject · vast sprintbudget

Geheimen en afhankelijkheden

Wij beginnen altijd bij geheimen. Dat is de meest voorkomende fout, de best af te vangen, en de enige waar niemand tegen kan zijn: een sleutel of wachtwoord in code heeft geen legitieme uitzondering. Daarna de afhankelijkheden: verouderde onderdelen met een bekend lek, gekoppeld aan uw componentoverzicht. Staat die categorie op nul en blijft hij daar, dan is er vertrouwen om de volgende aan te pakken.

Geheimen blokkerenHistorie opschonenAfhankelijkhedenAutomatisch bijwerken
Middelgroot traject · vast sprintbudget

Statische analyse en containers

Analyse op de code zelf voor de patronen die zich mechanisch laten herkennen: invoer die ongefilterd in een zoekopdracht belandt, onveilige functies, ontbrekende controles op de plekken waar ze horen. Daarnaast de container- en infrastructuurlaag, waar een groot deel van de gemelde kwetsbaarheden zit en waar een verkeerde instelling iets openzet dat dicht hoorde te zijn. Meldingen wegen we op waar ze zitten, niet alleen op hun score.

Statische analyseContainerlaagInfrastructuur als codeRuisonderdrukking
Groter traject · vast sprintbudget

Poortafspraken en herkomst van uw bouw

Per categorie vastleggen wat tegenhoudt en wat waarschuwt, met een nette uitzonderingsroute die vastlegt wie waarvoor tekent. Daarnaast het beveiligen van de bouwstraat zelf: wie mag wat uitrollen, waar komen de bouwstenen vandaan, en kunt u van een artefact aantonen uit welke code het is voortgekomen. Dat laatste wordt in inkooptrajecten steeds vaker gevraagd.

Poorten per categorieUitzonderingsrouteRechten op uitrollenHerkomst van artefacten

Wat u aan het einde van een traject heeft.

Werkende controles in uw eigen pijplijn, plus de afspraken die bepalen of ze over een half jaar nog aan staan.

  • Controles in uw eigen pijplijnDraaiend in de bouwstraat die u al gebruikt, met gereedschap dat bij uw talen past — geen aparte omgeving die naast uw proces komt te staan.
  • Poortafspraken per categorieVastgelegd wat blokkeert, wat waarschuwt met een termijn, en wat alleen informatie is, afgestemd met de mensen die ermee werken.
  • Een uitzonderingsroute die werktEen nette manier om iets een keer door te laten, met wie tekent en tot wanneer — want zonder die route wordt de controle uitgezet in plaats van dat ene geval doorgelaten.
  • Een schone uitgangspositieDe bestaande bevindingen in de categorieen die u aanzet zijn opgeruimd of bewust vastgelegd, zodat de poort dichtgaat op een lijst die op nul staat.
  • Rechten en herkomst rond de bouwstraatWie mag wat uitrollen, waar komen bouwstenen vandaan, en de mogelijkheid om van een artefact terug te vinden uit welke code het is gebouwd.
  • Overdracht aan uw teamWerksessies waarin uw ontwikkelaars zelf bevindingen beoordelen en oplossen, want een controle die niemand kan uitleggen wordt binnen een maand omzeild.

Wanneer dit bij u speelt.

Vier situaties waarin het inrichten van controles in de pijplijn meer oplevert dan het kost. Herkent u er een, dan is er waarschijnlijk snel winst te halen.

Meer code dan review

Er komt meer doorheen dan iemand kan nalezen

Het tempo is gestegen en de code-review is de flessenhals geworden, of hij is stilzwijgend een formaliteit geworden. Een mechanische controle vangt de categorie fouten af die zich laat herkennen, zodat uw mensen naar de rest kunnen kijken.

Bevindingen achteraf

De pentest levert elke keer dezelfde soort fouten op

U laat periodiek testen en er komt telkens een lijst met bekende patronen uit. Dat is duur ontdekken van iets wat de pijplijn had kunnen afvangen, en het maakt de test minder waardevol voor waar hij wel goed in is.

Aantonen aan klanten

Inkoopvragenlijsten vragen ernaar

Afnemers vragen in hun vragenlijst of u beveiligingscontroles in uw ontwikkelproces heeft en of u dat kunt aantonen. Rapportage dat de controles hebben gedraaid en wat eruit kwam, is precies wat daar wordt gevraagd.

Eerdere poging vastgelopen

Het staat aan maar niemand kijkt ernaar

Er is ooit een scanner aangezet, er staan honderden waarschuwingen open en het kanaal is gedempt. Dat is geen gereedschapsprobleem maar een afsprakenprobleem, en dat is precies waar wij beginnen.

Hoe zo’n traject loopt.

1

Kennismaking en nulmeting

Welke bouwstraat draait er, welke talen, wat staat er al aan, en wat kwam er uit de laatste test of audit. We kijken ook naar de mensen: wie beoordeelt nu bevindingen, en wat gebeurt er als er iets met spoed live moet. Dat laatste bepaalt of poorten standhouden.

2

Opruimen voordat er iets dichtgaat

We zetten de eerste categorie waarschuwend aan en ruimen op wat eruit komt, samen met uw team. Blokkeren op een berg openstaande bevindingen leidt gegarandeerd tot uitzetten. Pas als de lijst op nul staat, gaat de poort dicht.

3

Afspraken maken met wie ermee werkt

Per categorie bepalen wat blokkeert, wat waarschuwt en wat informatie is, en hoe de uitzonderingsroute eruitziet. Wij doen dat met de ontwikkelaars zelf en niet alleen met wie erover beslist; dat is het verschil tussen een proces dat draait en een dat na een maand stilvalt.

4

Uitbreiden in sprints

Categorie voor categorie, in tweewekelijkse sprints, telkens dezelfde volgorde: waarschuwend aan, opruimen, afspraak maken, dichtzetten. Geheimen, dan afhankelijkheden, dan statische analyse, dan de container- en infrastructuurlaag.

5

Rapportage en overdracht

Een rapportage die u kunt meesturen in een inkooptraject, een overdracht aan uw team, en een afspraak over wie de poorten beheert. Als u daarna periodiek wilt laten meekijken kan dat, maar het is geen voorwaarde.

Veelgestelde vragen over DevSecOps.

Wat ontwikkelteams, CTO’s en security-officers ons vragen voordat zij hiermee beginnen.

Wat vangt een controle in de pijplijn wel en niet?
Wel: sleutels en wachtwoorden die in code belanden, bekende onveilige functies, invoer die ongefilterd in een zoekopdracht terechtkomt, verouderde onderdelen met een bekend lek, en instellingen die iets openzetten dat dicht hoorde te zijn. Niet: fouten in de logica van uw rechten. Dat gebruiker A de gegevens van gebruiker B kan opvragen, is geen patroon maar een gevolg van hoe uw regels zijn geschreven, en daar komt geen scanner overheen. Daarom hoort er naast de automatische controle een korte handmatige ronde te zijn.
Gaat dit ons niet vertragen?
De controles zelf kosten minuten in de bouw, en dat is te verwaarlozen. Wat vertraagt, is een slecht afgestelde poort: alles blokkeren op een lijst met honderden openstaande bevindingen. Precies daarom ruimen we eerst op en zetten we pas daarna iets dicht, en spreken we per categorie af wat tegenhoudt. In de praktijk levert het per saldo tijd op, omdat repareren achteraf duurder is dan corrigeren bij het schrijven.
Hoe voorkomen wij dat de controle wordt uitgezet?
Door een nette uitzonderingsroute. Er komt een moment waarop er iets doorheen moet ondanks een bevinding: een storing, een deadline, een leverancier die nog niets heeft. Als daar geen route voor is, wordt de controle uitgezet — en dan bent u alles kwijt in plaats van dat ene geval. De route legt vast wie tekent en tot wanneer de uitzondering geldt, zodat er iets is om later op terug te komen.
Hebben wij hier extra mensen voor nodig?
Zelden. Het werk zit in het inrichten en in de afspraken; daarna kost het uw team minder tijd dan het repareren dat het vervangt. Wat wel nodig is, is een eigenaar: iemand die de poorten beheert en de uitzonderingen beoordeelt. Dat is doorgaans een halve dag per maand en het is meestal dezelfde persoon die de kwetsbaarheden beoordeelt, want het is dezelfde afweging.
Wij gebruiken AI-gereedschap bij het ontwikkelen. Maakt dat verschil?
Ja, en het versterkt het argument. Er komt meer code doorheen dan een team kan nalezen, en gereedschap dat code genereert optimaliseert voor werkende code, niet voor veilige code. Dat is geen reden om het niet te gebruiken, maar het verschuift wel waar de controle moet zitten: van de reviewer naar de pijplijn. Daarnaast komt er een categorie bij die klassieke scanners niet dekken, zoals instructies die van buiten binnenkomen en door een AI-functie worden opgevolgd; die vraagt een aparte aanpak.
Werkt dit ook op oudere software?
Ja, en daar is de eerste ronde het zwaarst omdat de opgebouwde achterstand in een keer zichtbaar wordt. Wij pakken dat aan door strikt per categorie te werken en pas dicht te zetten wat schoon is. Bij zeer oude systemen loopt dit vaak samen met een gesprek over modernisering of over technische schuld, omdat sommige bevindingen zich niet laten oplossen zonder aan de structuur te komen.
Kost dit ons nieuwe licenties?
Niet noodzakelijk. Voor geheimen, afhankelijkheden, containers en de meeste statische analyse is open gereedschap beschikbaar dat in uw bestaande bouwstraat past, en veel platformen hebben basisfunctionaliteit ingebouwd. Betaalde producten voegen vooral overzicht over veel projecten heen toe en betere ruisonderdrukking. Wij beginnen bij wat u al heeft en leggen terugkerende kosten vooraf aan u voor.
Wat doen we met de bestaande achterstand?
Die zetten we apart. Nieuwe bevindingen worden vanaf dag een tegengehouden of krijgen een termijn; de bestaande lijst krijgt een eigen aanpak met een volgorde die op impact is gebaseerd en niet op de gepubliceerde score. Dat scheidt de twee gesprekken: de poort gaat over wat er vanaf nu binnenkomt, de achterstand over wat er al lag. Zonder die scheiding blokkeert het ene het andere.
Kunnen wij dit aantonen aan een klant?
Ja, en dat is een van de redenen om het te doen. Wij richten de rapportage zo in dat u kunt laten zien welke controles draaien, met welke frequentie, en wat de uitkomst was, inclusief de uitzonderingen met hun onderbouwing. Dat is precies wat in inkoopvragenlijsten en in audits wordt gevraagd, en het is een stuk overtuigender dan een beleidsdocument.
Hoe verhoudt dit zich tot een pentest?
Ze vinden andere dingen en ze vervangen elkaar niet. De pijplijn vangt bekende patronen af, doorlopend en goedkoop. Een pentest vindt wat daar niet uit komt: fouten in uw rechtenlogica, ketens van kleine dingen die samen iets opleveren, aannames die alleen in uw context fout zijn. Wat wel verandert, is dat uw pentest waardevoller wordt, omdat de tester zijn tijd niet meer kwijt is aan het rapporteren van verouderde onderdelen.
Wie moet dit bij ons trekken?
Iemand uit het ontwikkelteam, niet iemand van buiten het team. Beveiligingscontroles die door een afdeling ernaast worden opgelegd, worden ervaren als hindernis en verdwijnen zodra de aandacht wegvalt. Wij werken daarom met uw ontwikkelaars en maken de afspraken met hen. De security-officer is opdrachtgever en meelezer, en dat werkt beter dan andersom.

Praat met ons over uw ontwikkelstraat.

Een kennismaking van een half uur, vrijblijvend. Vertel wat er nu aanstaat en wat er uit de laatste test kwam, dan zeggen we waar wij zouden beginnen en wat kan wachten — ook als we uiteindelijk niet samenwerken.

Edit Content