AI-gegenereerde infrastructuurcode reviewen: waar je écht naar moet kijken

Applicatiecode die fout is, gaat meestal stuk. Infrastructuurcode die fout is, werkt.
Dat is het hele probleem in één zin. Vraag je een AI-agent om een bucket, een database en de rechten ertussen, dan krijg je iets terug dat plan haalt, dat apply haalt en dat vervolgens netjes draait. Alles groen. En of het veilig is, zie je nergens aan.
Wij reviewen dit soort code regelmatig. Dit is waar we naar kijken, in de volgorde waarin het misgaat.
Waar agents juist goed in zijn
Even eerlijk zijn over wat er wél werkt, want dat bepaalt waar je je aandacht níét aan moet verspillen.
Agents zijn sterk in de vorm: correcte syntax, redelijke modulestructuur, consistente naamgeving, providerversies die kloppen, resources die netjes aan elkaar gekoppeld zijn. Ook het saaie werk — variabelen, outputs, tags — komt er doorgaans beter uit dan wanneer een mens het onder tijdsdruk typt.
Daar hoef je dus niet je reviewtijd aan te besteden. Die besteed je aan de dingen waar een model geen zicht op heeft: wat er in jouw organisatie al bestaat, en wat er gebeurt als iemand dit misbruikt.
Eerst IAM, altijd
Dit is waar het bijna altijd misgaat, en het is zelden zichtbaar.
Een agent wil dat je code werkt. De snelste route naar werkende code is ruimere rechten. Dus krijg je een rol die net iets meer mag dan nodig, met een wildcard waar een lijstje had gemoeten, en het werkt — dat is nou juist het punt.
Waar we specifiek naar kijken:
- Wildcards in acties of resources.
s3:*ofResource: "*"is bijna nooit wat je bedoelde. Vraag welke drie acties er echt nodig zijn. - Rollen die door meerdere services gedeeld worden. Handig bij het opzetten, en meteen een breed aanvalsoppervlak zodra er één ding misgaat.
- Rechten die impliciet zijn overgenomen. Erft de nieuwe rol van iets bestaands? Dan is de vraag niet wat er in de diff staat, maar wat die parent allemaal mag.
- Langlevende credentials. Als er een access key wordt aangemaakt in plaats van een rol met kortlevende tokens, is dat een bewuste keuze die iemand moet nemen — niet iets wat een agent voor je invult.
Netwerkregels die te ruim staan
Hetzelfde patroon, andere laag. 0.0.0.0/0 is de snelste weg naar “het werkt”, en het is bijna nooit het antwoord.
Let vooral op security groups die inkomend verkeer op een beheerpoort toestaan, op regels die verwijzen naar een CIDR-blok in plaats van naar een andere security group, en op resources die per ongeluk een publiek IP krijgen omdat dat in de meeste voorbeelden op internet zo staat.
Dat laatste is een terugkerend thema: een model is getraind op publieke voorbeelden, en publieke voorbeelden zijn geschreven om te demonstreren, niet om in productie te draaien.
State, secrets en wat er per ongeluk in belandt
Drie dingen die we standaard controleren omdat ze stilletjes fout gaan:
- Waar staat de state, en wie kan erbij? Terraform state bevat vaak gevoelige waarden in platte tekst. Een backend zonder encryptie of met te ruime toegang is een lek dat nergens als lek voelt.
- Staan er secrets in variabelen met een default? Een
default = "changeme"haalt het opvallend vaak tot productie. - Wordt er iets gelogd wat je niet wilt loggen? Debug-output op een resource die credentials bevat, is een klassieker.

Wat er níét in de diff staat
Dit is het lastigste deel van zo’n review, en het deel dat het meeste oplevert.
Een agent ziet wat je hem geeft. Hij ziet niet je bestaande landing zone, je naamgevingsafspraken, de policy die je vorig jaar hebt ingevoerd of het feit dat er al een vergelijkbare resource bestaat die je had kunnen hergebruiken.
Dus vraag bij elke wijziging: bestaat dit al ergens? Past het in de structuur die we hebben? Doorbreekt het een grens die we bewust hebben getrokken? Die vragen kun je niet aan het model stellen, want het antwoord staat niet in de context die het gekregen heeft.
Een praktische checklist
Wat wij aanhouden, in deze volgorde:
- Draai
planen lees hem, niet de code. De code beschrijft de bedoeling; het plan beschrijft wat er werkelijk gaat gebeuren. Let op alles wat vervangen of vernietigd wordt. - Zoek op wildcards. Letterlijk grepen op
*in policies. Elke treffer moet verantwoord worden. - Loop de netwerkregels na op
0.0.0.0/0en op poorten die niet publiek horen te zijn. - Controleer je state-backend en encryptie.
- Vraag wat er al bestaat. Dit is de stap die een tool niet voor je doet.
- Laat automatische scanners het herhaalbare werk doen.
tfsec,checkovof de policy-tooling van je provider vangen het bekende patroon, zodat jouw aandacht naar de context kan.
Die laatste combinatie is de kern: laat de machine controleren wat zich laat controleren, en zet je mensen op wat alleen mensen weten. Naarmate er meer code binnenkomt, wordt dat onderscheid het verschil tussen snelheid en risico.
Kort samengevat
AI-gegenereerde infrastructuurcode is doorgaans goed geschreven en regelmatig te ruim bemeten.
De fouten zitten niet in de syntax maar in de rechten, de netwerkgrenzen en in alles wat het model niet kon weten over jouw omgeving. Ze breken niets, ze werken juist — en daarom komen ze door de review heen.
Review dus in de volgorde waarin het misgaat: eerst IAM, dan het netwerk, dan state en secrets, en dan de vraag die geen enkel model kan beantwoorden — hoort dit hier eigenlijk wel?

Alles of Niets, Katapulteer naar de Cloud
Transformeer je softwareorganisatie naar een cloud-native onderneming
AI consultancy
AI inzetten waar het echt scheelt, met de verantwoordelijkheid bij mensen.
Lees ook:

Software ontwikkelen met behulp van AI en rekening houden met AVG, NIS2 en DORA compliance
Zodra je een coding agent aan je codebase hangt, raak je drie regimes tegelijk. Niet omdat AI apart gereguleerd is, maar...

DORA-metrics lezen als AI de helft van je commits schrijft
Je DORA-dashboard toont nog steeds dezelfde vier getallen. Alleen betekenen ze niet meer hetzelfde. Zodra een flink deel...

Wordt software veiliger met AI-coding agents als Claude Mythos — of juist onveiliger?
Elke nieuwe golf tooling in softwareontwikkeling roept dezelfde tweedeling op. De een ziet hefboomwerking. De ander ziet...

De realiteitscheck: code van LLM's versus menselijke engineers
LLM's en “AI-ondersteund programmeren” veranderen in hoog tempo hoe we software maken. Autocomplete, boilerplate generer...

ZEN Software upgrade Wordpress Filogic.nl naar Open Source Headless Cloud Solution voor ongeëvenaarde prestaties
Alkmaar, november 2023 - ZEN Software, een pionier in innovatieve weboplossingen, kondigt met trots haar recente succes ...

Praxis & Brico ontketenen de kracht van Generative AI in een inspirerende Hackathon bij Google
Hackathons zijn uitgegroeid tot broedplaatsen voor baanbrekende ideeën en oplossingen. De recente Praxis/Brico Hackathon...
