Compliance voelt vaak traag. DevOps vraagt tempo. Leg controles vast als code en laat workflows meedraaien bij elke wijziging. Zo verschuift compliance naar het hart van de pipeline.
Waarom checks struikelen in de praktijk
- Detectie komt laat. Fix kost veel tijd en geld.
- Werkwijzen verschillen per team. Overzicht ontbreekt.
- Handwerk vergist zich. Checklist verdwijnt, stap wordt vergeten.

GitHub Actions in één oogopslag
Workflows in YAML reageren op events zoals pull requests of releases. Jobs draaien in containers of VM’s. Stappen voeren commando’s uit en leveren rapporten aan de PR.
name: Run tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: npm test
Wat automatiseer je eerst
1. Dependencies scannen
Kwetsbaarheden zitten vaak in libraries. Laat een scan meelopen bij elke PR.
- name: Dependency Check
uses: dependency-check/Dependency-Check_Action@main
with:
project: "service-naam"
scan: "."
2. Secrets bewaken
Ingebouwde secret scanning helpt. Breid uit met eigen patronen en blokkeer merges bij treffers.
3. IaC policies afdwingen
Terraform en Kubernetes vragen regels. OPA of Checkov controleert configuraties op encryptie, netwerkpoorten en baselines.
- name: Checkov IaC scan
uses: bridgecrewio/checkov-action@master
4. Security linters draaien
Voeg SAST toe. Voorbeeld met Bandit voor Python of security rules in ESLint voor JavaScript.
bandit -r .
5. Rapportage als artifact
Genereer HTML of PDF en koppel het aan de run. Auditors zien precies welke controles wanneer liepen.
Voorbeeldworkflows
NIS2-ready basis
name: NIS2 compliance checks
on:
pull_request:
branches: [ main ]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Dependencies
- name: OWASP Dependency Check
uses: dependency-check/Dependency-Check_Action@main
with:
project: "NIS2-sample"
scan: "."
# IaC
- name: Checkov
uses: bridgecrewio/checkov-action@master
# Code
- name: Bandit
run: bandit -r .
sbom:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Syft SBOM
uses: anchore/sbom-action@v0
with:
path: "."
- name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom
path: sbom.spdx.json
Policy-as-code met OPA
Schrijf regels in Rego en toets PR’s op eisen zoals encryptie aan, geen publieke S3, logging actief.
name: OPA policies
on: pull_request
jobs:
opa:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Eval
run: |
opa eval --fail-defined \
-i terraform.plan.json \
-d policies/ \
"data.policies.deny"
Implementeren zonder ruis
- Klein starten. Begin met één workflow. Lint plus dependency-scan levert snel waarde.
- Resultaat in de PR. Geen los dashboard. Reviews tonen uitkomsten direct.
- Regels als code. Policies in git. Versiebeheer en review horen erbij.
- Eigenaarschap afspreken. Team lost findings op binnen de PR. Security-chapter adviseert en kalibreert regels.
- Iteratief uitbreiden. Daarna IaC, SAST, SBOM, rapportage, supply-chain.
Supply-chain versterken
- SBOM genereren en bewaren per release.
- Dependabot PR’s verplicht reviewen.
- Container images scannen voor push naar registry.
- Release-signing met provenance. Artefact komt alleen door met geldige handtekening.
Rapportage richting audit
- Workflow-runs vormen het logboek.
- Artifacts bewaren voor het dossier.
- Labels per run koppelen aan ticketnummers of wijzigingsverzoeken.
Veelgemaakte fouten
- Teveel checks ineens. Teams haken af.
- Findings zonder prioriteit. Backlog slibt dicht.
- Policies buiten git. Versies raken kwijt.
- Alleen rapporteren. Geen blokkade bij hoge risico’s.
Roadmap per sprint
- Sprint 1. Lint, dependency-scan, basisrapport als artifact.
- Sprint 2. IaC-scan, eerste OPA-regels, PR-statuschecks verplicht.
- Sprint 3. SAST, SBOM, container-scan.
- Sprint 4. Release-signing, provenance, periodieke volledige scan op main.
ROI in duidelijke termen
- Minder spoedfixes vlak voor productie.
- Gelijke werkwijze over teams heen.
- Direct bewijs richting audit.
- Hogere leverbetrouwbaarheid zonder tempoverlies.
Conclusie
Breng compliance naar de pipeline. Laat workflows meelopen bij elke wijziging. Regels leven in git, uitkomsten staan in de PR, releases dragen bewijs mee. Zo ontstaat snelheid met zekerheid.