01 · Definitie
Wat is software configuration management?
De definitie van NIST, uit SP 800-128:
“A collection of activities focused on establishing and maintaining the integrity of products and systems, through control of the processes for initializing, changing, and monitoring the configurations of those products and systems throughout the system development life cycle.”
De IEEE Computer Society past configuratiemanagement toe op programma's, scripts en documentatie. Voor een deliveryteam beantwoordt het vier vragen over een release: wat erin zit, wie het heeft gewijzigd en waarom, waar het draait, en of dat overeenkomt met wat er is vastgelegd.
Is SCM hetzelfde als versiebeheer?
Nee. Versiebeheer bewaart de geschiedenis van bestanden. SCM bepaalt wat onder beheer valt, welke versies samen een release vormen, wie ze mag wijzigen en hoe u aantoont wat er draait. Git is voor SCM wat het grootboek is voor de boekhouding.
Wat is het verschil met changemanagement?
Changemanagement beslist of en wanneer een wijziging in productie komt. Configuratiemanagement legt vast hoe het systeem is samengesteld, voor en na die wijziging. De twee komen samen in de wijzigingsbeheersing.
02 · Het model
Wat zijn de vier activiteiten van configuratiemanagement?
Het klassieke model kent vier activiteiten. IEEE 828 behandelt het identificeren van configuratie-items, het beheersen van wijzigingen en het rapporteren van hun status, en noemt configuratie-audit onder de trefwoorden. NIST SP 800-128 verdeelt het werk in vier fasen: planning, het identificeren en implementeren van configuraties, het beheersen van configuratiewijzigingen, en monitoring.
Configuratie-identificatie
Bepaal wat onder beheer valt en geef elk item een identiteit. In een pipeline is dat meer dan code: pipelinedefinities, buildscripts, lockfiles, basisimages, omgevingsconfiguratie en infrastructuurcode.
Wijzigingsbeheersing
Wijzigingen aan een item in een baseline worden beoordeeld en goedgekeurd voordat ze worden doorgevoerd. DORA stelde vast dat goedkeuring het best werkt als peer review tijdens de ontwikkeling, en vond geen bewijs dat een formelere externe beoordeling het percentage mislukte wijzigingen verlaagt.
Statusregistratie
De registratie van elk item door baselines en releases heen. Die hoort uit systemen te komen: commitgeschiedenis, buildmetadata, deploylogs. Een spreadsheet die met de hand wordt bijgehouden, is bij de volgende merge al verouderd.
Configuratie-audits
Het bewijs dat het product overeenkomt met de registratie. Het handboek van NASA onderscheidt er twee: een functionele audit toetst aan de hand van testresultaten of aan de eisen wordt voldaan; een fysieke audit toetst of het gebouwde product overeenkomt met de build-to baseline.
03 · Baselines
Wat is een baseline?
NIST definieert een baselineconfiguratie als een set specificaties voor een systeem of configuratie-item, op een bepaald moment formeel beoordeeld en vastgesteld, en alleen te wijzigen via wijzigingsbeheersing. Elke release is er een.
ClearCase UCM maakt het expliciet: een baseline identificeert één versie van elk element in een of meer componenten. In Git legt een commit elk bestand in de repository vast, dus verschuift het werk naar wat daarbuiten ligt: afhankelijkheden, basisimages, pipelines en configuratie.
- Markeer releases met geannoteerde of ondertekende tags, die volgens de documentatie van Git bedoeld zijn voor releases. Verplaats nooit een releasetag.
- Zet afhankelijkheden vast met een lockfile in de repository, en images op digest, niet op een tag zoals latest.
- Leg bij elke release de versie van de configuratie vast.
04 · Branching
Welke branchingstrategie kiest u?
Een branchingstrategie bepaalt hoe lang wijzigingen gescheiden blijven en waar een release wordt gestabiliseerd. De regel van Martin Fowler voor elke branch: bedenk hoe u hem gaat mergen voordat u hem aanmaakt.
| Strategie | Hoe het werkt | Past bij | Let op |
|---|---|---|---|
| Trunk-based development | Kleine batches, minstens dagelijks gemerged naar één mainline. DORA adviseert hooguit drie actieve branches en geen code freezes. | Eén versie in productie, snelle geautomatiseerde tests. | Onaf werk blijft achter een feature flag tot het klaar is. |
| GitHub flow | Per wijziging een kortlevende branch, beoordeeld in een pull request, gemerged en daarna verwijderd. | Services met één versie in productie. | Branches die wekenlang openstaan, worden langlevende feature branches. |
| GitFlow | Branches voor develop, features, releases en hotfixes. Releases krijgen een tag op de productiebranch. | Meerdere versies in productie, zoals software die bij klanten is geïnstalleerd. | De bedenker raadt nu een eenvoudigere workflow aan voor continuous delivery. |
| Mainline met releasebranches | Integratie blijft op de mainline. Een releasebranch stabiliseert één versie en krijgt alleen fixes. | Geplande releases die een stabilisatieperiode nodig hebben. | Fix eerst op de mainline. Een releasebranch die afdrijft, wordt steeds lastiger terug te mergen. |
| OmgevingsbranchesAntipatroon | Eén branch per omgeving, elk met een eigen configuratie. | Hooguit een tijdelijke noodoplossing. | Fowler noemt het een klassiek antipatroon: de configuratie loopt uiteen en veroorzaakt omgevingsspecifieke bugs. |
Twee vragen geven in de meeste gevallen de doorslag. Hoeveel versies draait u in productie? Meer versies vragen om releasebranches. Hoe vaak integreert u? Het advies van Fowler: probeer uw integratiefrequentie te verdubbelen.
05 · Builds en artifacts
Hoe maakt u een build reproduceerbaar?
De strenge norm komt van het Reproducible Builds-project: met dezelfde broncode, buildomgeving en buildinstructies kan elke partij bit voor bit identieke artifacts opnieuw maken. De praktische norm komt eerst: bouw een release opnieuw vanaf zijn tag en krijg hetzelfde resultaat. Beide vereisen dat u alles vastzet wat de build inleest.
- Buildinstructies. De pipelinedefinitie en de buildscripts staan in de repository. Volgens DORA horen ook scripts voor packaging en deployment in versiebeheer.
- Afhankelijkheden. Een lockfile in de repository. npm beschrijft package-lock.json als de exacte boom die is gegenereerd, zodat latere installaties identieke bomen opleveren.
- Buildomgeving. Het buildimage, vastgezet op zijn digest: volgens Docker een onveranderlijke identifier. Het image krijgt geen beveiligingsupdates tot u die digest bijwerkt.
Bouw één keer, promoot hetzelfde artifact
Per omgeving opnieuw bouwen levert elke keer een ander artifact op. Fowler beschrijft de regel die veel organisaties hanteren: eenmaal gecompileerd, draait hetzelfde uitvoerbare bestand in elke omgeving. Semantic Versioning verbiedt de inhoud van een uitgebrachte versie te wijzigen. Bewaar van het artifact de digest en de provenance, die SLSA omschrijft als verifieerbare informatie over waar, wanneer en hoe het is geproduceerd.
Verder lezen
- Software supply chain-security in 2026: SBOM's, SLSA en wat de Cyber Resilience Act nu eist, over het genereren van een SBOM en ondertekende provenance bij elke build.
06 · Omgevingen
Waar hoort configuratie per omgeving thuis?
Omgevingsconfiguratie is wat verschilt tussen test, staging en productie: endpoints, groottes, feature switches, credentials. Daarvoor gelden twee regels.
Houd configuratie buiten de build. De vuistregel van Fowler: u moet elke versie van het product kunnen uitchecken en in elke omgeving kunnen draaien, met de verschillen in configuratiebestanden of omgevingsvariabelen.
Houd configuratie onder wijzigingsbeheersing. Volgens DORA horen infrastructuur- en applicatieconfiguratie in versiebeheer, zodat u elke omgeving automatisch kunt inrichten en de geschiedenis ervan kunt opvragen. In de praktijk: een configuratierepository of inventory, net als code beoordeeld en door een pipeline toegepast, zoals bij infrastructure as code. Secrets blijven in een secrets manager; de configuratie verwijst er alleen naar.
Hoe detecteert u configuratiedrift?
Drift is het verschil tussen de gedeclareerde en de draaiende configuratie. NIST SP 800-128 geeft monitoring een eigen fase, om misconfiguraties en ongeautoriseerde wijzigingen op te sporen. De check mode van Ansible meldt wat een playbook zou veranderen, zonder iets te veranderen; diff mode toont de situatie ervoor en erna.
# Show drift, change nothing
ansible-playbook site.yml \
--check --diff \
--limit production
Modules zonder ondersteuning voor check mode melden niets, dus een run zonder bevindingen is een signaal, geen bewijs. Plan de run periodiek in en behandel bevindingen als defecten. GitOps gaat verder en reconcilieert continu.
Verder lezen
- Infrastructure as Code in 2026: Drift, Policy en de Keuze tussen Terraform en OpenTofu, over geplande driftdetectie.
- Secrets Management in 2026: Sprawl, Non-Human Identities en de Keuze tussen Vault en Workload Identity, over waarom credentials die ooit zijn gecommit, hun verwijdering overleven.
07 · Traceerbaarheid
Hoe volgt u een wijziging van verzoek tot release?
Traceerbaarheid is statusregistratie die u kunt bevragen: van een draaiende versie terug naar het verzoek, en van een verzoek vooruit naar waar het draait. Elke stap moet het ID van de vorige stap vastleggen.
Vooruit: waar draait dit verzoek?
- Verzoek
PROJ-412Dit ID komt in de branchnaam of het commitbericht.
- Commit
9f3c2e1Beoordeeld in een pull request die de goedkeurder vastlegt.
- Build
build 418Legt de commit, de digest van het buildimage en de lockfile vast.
- Artifact
sha256:7d2ae91cOnveranderlijk, opgeslagen met zijn SBOM en provenance.
- Deployment
deploy 1093Legt vast welk artifact waarheen ging, wie goedkeurde en wanneer.
- Draaiend systeem
v2.14.0Meldt zijn versie, zodat u die kunt vergelijken met wat de deployment vastlegde.
Terug: waarom draait deze versie?
Een snelle test: neem een release van vorig kwartaal en meet hoe lang u over vier antwoorden doet. Welke commits? Wie keurde goed? Welke tests slaagden? Welk artifact draait nu? Als daar een vergadering voor nodig is, ontbreekt er een schakel.
08 · In de praktijk
Hoe ziet configuratiemanagement er op grote schaal uit?
Bij Nike werden de upgrades van Windows-servers in 900+ winkels met de hand uitgevoerd, verdeeld over vijf teams: 6 tot 8 uur per server, twee servers tegelijk. Eén self-service pipeline bracht dat terug tot ongeveer 3 uur per server, met 8 servers parallel, zoals de Nike-case beschrijft.
Vanuit configuratiemanagement bekeken is een upgrade van het hele serverpark één wijziging die honderden keren wordt toegepast. Vijf teams met een checklist houden vijf onvolledige registraties bij; één pipeline houdt één definitie en één rungeschiedenis bij. Herhaald herstelwerk is ook een signaal: bij Nike draaide een herstel van device-profielen 80 keer per week, telkens ongeveer 35 minuten. Dat werd een kwestie van één klik.
Bij ASML draaide self-service CI voor het domein Stage Position Measurement op Linux, in omgevingen met Git en met ClearCase, gestandaardiseerd voor meerdere teams en de eigen testomgevingen van ASML: dezelfde vier activiteiten op twee heel verschillende versiebeheersystemen. Meer daarover in de ASML-case.
09 · Tools
Welke tools heeft configuratiemanagement nodig?
Geen enkele tool doet configuratiemanagement in zijn eentje. Elke activiteit hierboven leunt op een ander soort tool, en de meeste teams hebben die al:
| Activiteit | Soort tool | Voorbeelden |
|---|---|---|
| Identificatie | Versiebeheer | Git, op GitHub, GitLab of Bitbucket |
| Wijzigingsbeheersing | Reviews en verplichte checks vóór de merge | Protected branches in GitHub of GitLab; wijzigingsrecords in Jira of ServiceNow |
| Builds en baselines | Artifact-repository | JFrog Artifactory, Sonatype Nexus Repository, een container-registry |
| Configuratie per omgeving | Configuratie als code en een secrets manager | Terraform of OpenTofu, Ansible; HashiCorp Vault of de secrets manager van uw cloud |
| Statusregistratie en audits | De gegevens die bovenstaande tools al bijhouden | Pull-requestgeschiedenis, pipelinelogs, artifactmetadata |
De tools zijn minder belangrijk dan de koppelingen ertussen: een ticketnummer in elke commit, een commit in elke build, een build in elk deploymentrecord.
10 · Zelftest
Is uw configuratiemanagement klaar voor een audit?
Loop deze punten na voor één recente productierelease. Elke regel is een ja of een nee.
Identificatie
- Code, pipelines, infrastructuurcode en omgevingsconfiguratie staan onder versiebeheer, elk met een eigenaar.
- Afhankelijkheden zijn vastgezet met een lockfile, images op digest.
Wijzigingsbeheersing
- Elke productiewijziging is beoordeeld, en de goedkeuring is vastgelegd.
- Noodwijzigingen gaan door dezelfde pipeline als gewone wijzigingen.
- Elke omgeving draait hetzelfde artifact.
Statusregistratie
- De wijzigingen sinds de vorige release zijn in enkele minuten uit systemen op te vragen.
- Elk artifact draagt zijn versie, commit en build, en de digest ervan is vastgelegd.
Audits
- Productie draait aantoonbaar het artifact dat de tests heeft doorstaan.
- Drift wordt periodiek gecontroleerd, en bevindingen zijn defecten.
- De release van vorig kwartaal is opnieuw te bouwen vanaf zijn tag.
Waar begint u?
Kies één releaseflow. Tag releases met geannoteerde tags, leg bij de deploy de digest van het artifact vast en laat de pipeline het change record schrijven. Dat dekt identificatie, statusregistratie en het meeste auditbewijs, nog voordat u een tool kiest.
11 · Begrippen
Begrippenlijst
- Baseline
- Een vastgestelde set versies op een bepaald moment, die alleen via wijzigingsbeheersing verandert.
- Change control board
- De groep die wijzigingen met grote impact goedkeurt.
- Configuratie-item
- Alles wat als één geheel wordt beheerd: een service, een library, een pipeline, een instellingenbestand.
- Digest
- Een hash van de inhoud die precies één artifact aanduidt. Anders dan een tag kan een digest niet verschuiven.
- Drift
- Het verschil tussen de gedeclareerde configuratie en de configuratie die werkelijk draait.
- Functionele configuratie-audit
- Controleert aan de hand van testresultaten of het product aan zijn eisen voldoet.
- Fysieke configuratie-audit
- Controleert of het gebouwde product overeenkomt met zijn build-to baseline.
- Promotie
- Hetzelfde artifact naar de volgende omgeving brengen zonder het opnieuw te bouwen.