💼 Management Samenvatting
Secrets management is een kritieke beveiligingsmaatregel voor CI/CD-pipelines en DevOps-omgevingen. Het voorkomt dat gevoelige informatie zoals API-keys, database credentials, certificaten en connection strings worden blootgesteld in code, configuratiebestanden of logs.
✓ GitHub Actions
✓ Azure Pipelines
✓ CI/CD
✓ DevSecOps
Zonder adequaat secrets management lopen organisaties het risico dat credentials worden gecompromitteerd via exposed secrets in repositories, logs of configuratiebestanden. Dit kan leiden tot ongeautoriseerde toegang tot cloud resources, data exfiltration, supply chain attacks en niet-naleving van regelgeving zoals NIS2 en BIO. Voor Nederlandse overheidsorganisaties die werken met gevoelige data en kritieke systemen, is een robuust secrets management framework geen optie maar een absolute noodzaak.
Connection:
Connect-AzAccount, az loginRequired Modules: Az.Accounts, Az.KeyVault
Implementatie
Dit artikel beschrijft een complete aanpak voor secrets management binnen Azure DevOps en CI/CD-omgevingen. We behandelen het gebruik van Azure Key Vault, GitHub Secrets, Azure DevOps Variable Groups, en best practices voor het veilig injecteren van secrets in pipelines. Het artikel bevat praktische richtlijnen voor secret rotation, audit logging, access control en compliance monitoring. Het bijbehorende PowerShell-script automatiseert secret scanning, compliance checks en remediation voor CI/CD-omgevingen.
Foundation en Architectuur voor Secrets Management
Een robuust secrets management framework begint bij een duidelijke architectuur die alle lagen van de CI/CD-stack beschermt. Dit omvat niet alleen de opslag van secrets, maar ook het transport, de injectie in runtime omgevingen, en de lifecycle management inclusief rotation en revocation. Nederlandse overheidsorganisaties moeten hun secrets management inrichten volgens de principes van least privilege, defense in depth en zero trust, waarbij elke access tot secrets wordt geverifieerd, gelogd en geaudit.
Azure Key Vault vormt de centrale component voor secrets management in Azure-omgevingen. Key Vault biedt secure storage voor secrets, keys en certificates, met integratie naar Azure Active Directory voor authentication en authorization. Organisaties moeten meerdere Key Vaults inrichten voor verschillende omgevingen (development, test, production) en verschillende security boundaries, waarbij network rules en firewall policies toegang beperken tot geautoriseerde IP-ranges en virtual networks. Access policies worden geconfigureerd met role-based access control (RBAC), waarbij alleen specifieke service principals en managed identities toegang hebben tot specifieke secrets.
Voor CI/CD-pipelines worden secrets nooit hardcoded in YAML files, scripts of configuratiebestanden. In plaats daarvan worden secrets opgeslagen in Azure Key Vault of native secret stores zoals Azure DevOps Variable Groups (met secret flags) of GitHub Secrets. Pipelines refereren naar secrets via variabelen, waarbij de daadwerkelijke waarden nooit worden blootgesteld in logs of console output. Azure Pipelines ondersteunt native integratie met Key Vault via de Azure Key Vault task, die secrets ophaalt en beschikbaar maakt als pipeline variables. GitHub Actions gebruikt de secrets context om secrets veilig te injecteren in workflow steps.
Secret scanning is essentieel om te voorkomen dat secrets per ongeluk worden gecommit naar repositories. Tools zoals GitHub Advanced Security, GitGuardian of TruffleHog scannen automatisch commits, pull requests en historische repositories op bekende secret patterns zoals API keys, passwords, tokens en connection strings. Wanneer een secret wordt gedetecteerd, worden automatisch alerts gegenereerd en kunnen preventieve maatregelen worden genomen zoals het automatisch revoken van exposed secrets en het forceren van secret rotation. Het script in dit artikel integreert secret scanning in de CI/CD-pipeline als een verplichte security gate.
Audit logging en monitoring zijn cruciaal voor compliance en security incident response. Alle access tot secrets wordt gelogd in Azure Monitor of vergelijkbare logging platforms, inclusief wie toegang heeft gevraagd, wanneer, voor welk secret, en of de access succesvol was. Deze logs worden opgeslagen in een tamper-proof format met integriteitscontroles, zodat ze kunnen worden gebruikt als bewijs in audits of forensische onderzoeken. Automated alerts worden geconfigureerd voor verdachte activiteiten zoals ongebruikelijke access patterns, failed authentication attempts of access buiten normale business hours.
Secret Lifecycle Management en Rotation
Gebruik PowerShell-script secrets-management.ps1 (functie Invoke-SecretRotation) – Automatiseert secret rotation voor alle secrets in Azure Key Vault en update gerelateerde configuraties..
Secret lifecycle management omvat de volledige cyclus van secret creation, usage, rotation en revocation. Secrets moeten regelmatig worden geroteerd volgens een vastgesteld schema, bijvoorbeeld elke 90 dagen voor high-privilege credentials of elke 180 dagen voor standard credentials. Rotation policies worden geconfigureerd in Azure Key Vault of via automation scripts die periodiek nieuwe secrets genereren, oude secrets vervangen en alle afhankelijke systemen updaten. Het script in dit artikel automatiseert deze rotation processen, waarbij het eerst nieuwe secrets genereert, deze test in een staging omgeving, en pas daarna de productie omgeving update.
Automatic secret rotation is beschikbaar voor bepaalde Azure-services zoals storage accounts, SQL databases en Cosmos DB, waarbij Key Vault automatisch nieuwe credentials genereert en roteert zonder downtime. Voor custom applicaties en externe systemen moet rotation worden geautomatiseerd via scripts of CI/CD-pipelines. Het rotation proces moet idempotent zijn, zodat het veilig kan worden herhaald zonder side effects, en moet rollback mogelijkheden bevatten voor het geval dat nieuwe secrets problemen veroorzaken.
Secret versioning in Azure Key Vault maakt het mogelijk om meerdere versies van een secret bij te houden, wat handig is tijdens rotation wanneer zowel oude als nieuwe versies tijdelijk nodig zijn. Oude versies worden automatisch gearchiveerd volgens retention policies, maar blijven beschikbaar voor forensische doeleinden of rollback scenarios. Access policies kunnen worden geconfigureerd om alleen specifieke versies toegankelijk te maken voor bepaalde principals, wat extra security granulariteit biedt.
Revocation procedures zijn essentieel voor incident response. Wanneer een secret wordt gecompromitteerd of wanneer een medewerker de organisatie verlaat, moeten alle gerelateerde secrets onmiddellijk worden gerevoked. Het script ondersteunt emergency revocation waarbij alle versies van een secret worden disabled en alle afhankelijke systemen worden geïnformeerd. Revocation wordt gelogd en geaudit, en kan worden geautomatiseerd via integration met HR-systemen of security incident management platforms.
CI/CD Pipeline Integratie en Best Practices
Gebruik PowerShell-script secrets-management.ps1 (functie Invoke-SecretScan) – Scant CI/CD-pipelines en repositories op exposed secrets en genereert compliance rapporten..
CI/CD-pipelines moeten worden geconfigureerd om secrets veilig te gebruiken zonder ze bloot te stellen in logs of artifacts. In Azure Pipelines worden secrets gedefinieerd als variables met de secret flag, waardoor ze worden gemasked in logs en nooit worden blootgesteld in console output. Variable Groups kunnen worden gekoppeld aan Azure Key Vault, waarbij secrets automatisch worden gesynchroniseerd. Pipelines gebruiken de Azure Key Vault task om secrets op te halen en beschikbaar te maken als pipeline variables, waarbij de daadwerkelijke waarden nooit worden getoond of gelogd.
GitHub Actions gebruikt de secrets context om secrets veilig te injecteren in workflows. Secrets worden gedefinieerd op repository, environment of organization level, waarbij environment secrets extra protection bieden door goedkeuringsvereisten en deployment restrictions. Workflows refereren naar secrets via de secrets context, waarbij de syntax `${{ secrets.SECRET_NAME }}` ervoor zorgt dat secrets worden gemasked in logs. GitHub Advanced Security biedt secret scanning die automatisch detecteert wanneer secrets worden gecommit of gepusht naar repositories.
Best practices voor pipeline security omvatten het gebruik van managed identities waar mogelijk, zodat applicaties authenticeren zonder expliciete credentials. Service connections in Azure DevOps gebruiken service principals met minimale privileges, waarbij credentials worden opgeslagen in Azure Key Vault in plaats van in Azure DevOps zelf. Pipeline artifacts en build outputs worden gescand op exposed secrets voordat ze worden gepubliceerd, en failed scans blokkeren de pipeline execution.
Multi-stage pipelines vereisen extra aandacht voor secret management omdat secrets mogelijk moeten worden doorgegeven tussen stages. In plaats van secrets door te geven als parameters of variables, moeten pipelines gebruik maken van secure mechanisms zoals Key Vault references of managed identity authentication. Secrets worden nooit opgeslagen in pipeline artifacts, deployment packages of configuration files die worden gedistribueerd naar target environments.
Compliance, Audit en Incident Response
Gebruik PowerShell-script secrets-management.ps1 (functie Invoke-SecretsComplianceCheck) – Controleert compliance met NIS2, BIO en andere relevante regelgeving voor secrets management..
Compliance monitoring voor secrets management vereist een geïntegreerde aanpak die technische controls combineert met organisatorische processen. Nederlandse overheidsorganisaties moeten aantonen dat hun secrets management voldoet aan NIS2, BIO, ISO 27001 en andere relevante regelgeving. Dit betekent dat alle secret access wordt gelogd, gedocumenteerd en regelmatig geaudit. Compliance checks worden geautomatiseerd waar mogelijk, maar worden aangevuld met periodieke handmatige reviews door compliance officers en auditors.
NIS2 compliance vereist dat organisaties adequate maatregelen treffen voor het beheer van security risks, inclusief access control en incident response. Secrets management draagt hieraan bij door te zorgen dat alleen geautoriseerde principals toegang hebben tot gevoelige credentials, dat alle access wordt gelogd en geaudit, en dat incident response procedures beschikbaar zijn voor het geval dat secrets worden gecompromitteerd. Het script genereert automatisch compliance reports die deze controls documenteren.
BIO compliance vereist specifieke controls rond logging, access management en incident response. Secrets management implementeert deze controls door alle secret access te loggen met volledige audit trails, door role-based access control te implementeren met minimale privileges, en door incident response playbooks te hebben voor secret compromittering scenarios. Audit logs worden opgeslagen volgens Archiefwet vereisten, met retention periods die voldoen aan wettelijke verplichtingen.
Incident response voor exposed secrets vereist snelle actie om schade te beperken. Wanneer een secret wordt gedetecteerd in een repository, log of configuratiebestand, moeten onmiddellijk de volgende stappen worden genomen: het secret wordt gerevoked in alle systemen, nieuwe secrets worden gegenereerd en gedeployed, alle afhankelijke systemen worden geüpdatet, en een forensische analyse wordt uitgevoerd om te bepalen of het secret is misbruikt. Het script ondersteunt automated incident response door gecompromitteerde secrets te detecteren, te revoken en alerts te genereren naar security teams.
Regelmatige compliance assessments evalueren of secrets management processen nog voldoen aan de laatste regelgeving en best practices. Deze assessments worden uitgevoerd door interne audit teams of externe auditors, waarbij zowel technische controls als organisatorische processen worden geëvalueerd. Bevindingen worden vertaald naar concrete verbeteracties die worden opgenomen in een remediation roadmap. Compliance metrics worden gerapporteerd aan management en toezichthouders, waarbij trends worden geanalyseerd om te identificeren waar aanvullende maatregelen nodig zijn.
Compliance & Frameworks
- BIO: 09.01, 09.02, 10.01, 12.01, 16.01 - Secrets management ondersteunt BIO-eisen rond toegangsbeheer, logging, incident response en continue verbetering van beveiligingsmaatregelen.
- ISO 27001:2022: A.5.1, A.9.1, A.9.2, A.12.6 - ISO 27001 vereist security policies, access control en secure development; secrets management implementeert deze voor CI/CD-omgevingen.
- NIS2: Artikel - NIS2 vereist risicobeheer, incident response en supply chain security; secrets management adresseert deze eisen voor DevOps-omgevingen.
Automation
Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).
Risico zonder implementatie
Management Samenvatting
Implementeer een complete secrets management aanpak met Azure Key Vault, automated rotation, secret scanning en compliance monitoring. Gebruik het script secrets-management.ps1 voor geautomatiseerde secret lifecycle management en compliance checks.
- Implementatietijd: 280 uur
- FTE required: 0.6 FTE