Waarom dit belangrijk is
Nieuwe regels stapelen zich op. NIS2, DORA en de AI Act vragen meer grip op IT en compliance. Veel organisaties lossen dit nog steeds op met documenten en checklists. Dat werkt niet in een DevOps-omgeving.
Policy-as-Code is een betere aanpak. Met Open Policy Agent (OPA) leg je regels vast als code. Je draait ze automatisch mee in de pipeline. Geen losse handmatige controles meer, maar bewijs in de commit en in de release.

Wat is OPA?
OPA is een engine die regels evalueert. Je schrijft policies in de taal Rego. Input komt in JSON. OPA beslist: toegestaan of geweigerd.
Je kunt het inzetten voor:
- Azure-resources (tags, encryptie, regio’s).
- Kubernetes-configuraties.
- API-verkeer.
- CI/CD-pipelines.
Voorbeeld: Azure-resource moet encryptie hebben
Stel dat je wilt afdwingen dat elke Azure Storage Account encryptie gebruikt.
package azure.security
deny[msg] {
input.type == "Microsoft.Storage/storageAccounts"
not input.properties.encryption
msg := sprintf("Storage account %s heeft geen encryptie ingeschakeld", [input.name])
}
Draai dit bijvoorbeeld met Conftest tegen een ARM-template of een Bicep-plan:
az bicep build --file main.bicep --outdir ./out
cat ./out/main.json | conftest test --policy ./policies
Als encryptie ontbreekt, blokkeert de pipeline.
Waarom dit werkt
- Policies staan in git, net als code.
- Elke commit wordt automatisch gecontroleerd.
- Alle teams gebruiken dezelfde regels.
- Je hebt bewijs voor auditors.
Toepassingen in DevOps
Azure-resources
- Storage Accounts moeten encryptie hebben.
- Resources moeten standaardtags bevatten (bijv. Owner, CostCenter).
- Alleen goedgekeurde regio’s mogen gebruikt worden.
Kubernetes op AKS
- Containers mogen niet als root draaien.
- Alleen images uit een interne registry.
- Network policies zijn verplicht.
CI/CD
- Check policies bij elke pull request.
- Blokkeer merges als een resource niet voldoet.
- Genereer rapportages als artifact.
Praktisch starten
- Kies een eenvoudig probleem: bijvoorbeeld dat elke Azure-resource de tag Owner moet hebben.
- Schrijf een Rego-regel: houd het simpel. Eén regel, één doel.
- Integreer in de pipeline: laat de policy lokaal en in Azure DevOps of GitHub Actions draaien.
- Maak resultaten zichtbaar: zet de output in de pull request. Ontwikkelaars moeten direct zien wat er misgaat.
- Breid uit: voeg langzaam meer policies toe.
Link met wetgeving
- NIS2: risicobeheer en preventieve maatregelen. Policies zorgen dat resources standaard veilig zijn.
- DORA: derde partijen en cloudproviders vallen in scope. Policy-as-Code laat zien dat je grip hebt.
- AI Act: vraagt transparantie. Policies kunnen afdwingen dat datasets en modellen gedocumenteerd worden.
Lessons learned
- Begin klein. Eén simpele policy werkt beter dan tien complexe.
- Vanuit SAFe gedachtengoed werk je met MVP’s. Door zo klein mogelijk te beginnen, kun je hypotheses testen en snel waarde laten zien aan klant of stakeholder.
- Houd regels klein en begrijpelijk.
- Betrek security en compliance bij het reviewproces.
- Documenteer waarom een regel bestaat.
Conclusie
Met OPA maak je compliance onderdeel van de pipeline. Geen losse checklists, maar regels die je direct afdwingt. Voor DevOps-teams levert dit snelheid, consistentie en bewijs.
Start klein. Kies één duidelijke policy, integreer die in Azure DevOps of GitHub Actions en laat het team wennen. Daarna kun je uitbreiden.
Policy-as-Code is geen extra last. Het is de manier om veilig en aantoonbaar te werken in een complexe wereld.