M365Con 2027 – gratis online conferentie · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

GitHub Actions-secrets beheren: API-sleutels en wachtwoorden beveiligen in workflows

By ·

Leer hoe je je CI/CD-pipelines beveiligt door GitHub Actions-secrets correct te gebruiken. Ontdek best practices voor het veilig beheren van API-sleutels en toegangstokens.

Automatically translated with AI from the original post. Read the English original

Cover: GitHub Actions - Simply Explained

Wanneer je automatisering volledig zonder toezicht in de cloud draait, wordt het beveiligen van je inloggegevens cruciaal. Met goed beheer van GitHub Actions-secrets blijven je API-sleutels, deploymentwachtwoorden en toegangstokens buiten je broncode, terwijl de workflows die ze nodig hebben om je projecten te bouwen en uit te rollen er eenvoudig bij kunnen.

Belangrijkste punten

Waarom inloggegevens in platte tekst falen in CI/CD

Ontwikkelaars die haast hebben om een nieuwe pipeline op te zetten, zijn snel geneigd een API-sleutel rechtstreeks in een workflowconfiguratiebestand te plakken. Als de workflow privé is, wie zou hem dan zien? Deze manier van denken introduceert ernstige beveiligingskwetsbaarheden. Workflowbestanden worden met versiebeheer bijgehouden, wat betekent dat elke historische revisie, commit en branch een blijvende registratie bevat van alles wat in die YAML-documenten staat.

Daarnaast veranderen repositories vaak van machtigingen, gaan ze van privé naar publiek of worden ze door bijdragers geforkt. Als je inloggegevens als platte tekst in je configuratiebestanden staan, kan één verkeerde machtigingsinstelling je volledige productieomgeving blootstellen. Configuratiebestanden uitsluitend zien als instructies, en gevoelige gegevens opslaan in een versleutelde, losgekoppelde kluis, is de basisregel van moderne cloudbeveiliging.

De drie niveaus van GitHub-secrets

GitHub erkent dat verschillende inloggegevens verschillende bereiken hebben. Om toegangsbeheer efficiënt te maken, kun je secrets op drie afzonderlijke organisatieniveaus configureren.

Secrets op repositoryniveau

Repository-secrets horen uitsluitend bij één project. Als je een zelfstandige applicatie of een enkele plug-in bouwt, houden repository-secrets je verbindingsreeksen en deploymenttokens vast aan die ene werkruimte. Andere projecten binnen je organisatie kunnen er geen toegang toe krijgen.

Secrets op organisatieniveau

Wanneer meerdere repositories binnen een bedrijf toegang nodig hebben tot dezelfde gedeelde resources, zoals een centraal containerregister of een certificaat voor codeondertekening op bedrijfsniveau, voorkomen organisatie-secrets dat je dezelfde gegevens steeds opnieuw invoert. Beheerders kunnen beleid definiëren en specifieke repositories of teams aanwijzen die deze organisatiebrede inloggegevens mogen overnemen.

Secrets op omgevingsniveau

Omgevingssecrets koppelen inloggegevens aan specifieke deploymentdoelen, zoals staging- of productieomgevingen. Hier bewaar je de sleutels die nodig zijn om live systemen aan te passen. Belangrijk is dat je met omgevingssecrets verplichte reviewers kunt instellen. Zo moet een mens een deploymentrun handmatig goedkeuren voordat de productie-inloggegevens worden vrijgegeven en aan de runner worden overhandigd.

Hoe GitHub je gegevens beschermt tijdens transport

Beveiliging gaat verder dan alleen de plek waar geheimen worden opgeslagen; het gaat ook om hoe ze tijdens de uitvoering worden doorgegeven. Geheimen worden op je lokale machine versleuteld voordat ze naar GitHub worden verzonden, zodat ze nooit in leesbare tekst over het netwerk gaan. Eenmaal opgeslagen blijven ze volledig verborgen in de interface met de repository-instellingen.

Wanneer een workflow wordt uitgevoerd, moet je een geheim expliciet bij naam doorgeven aan een stap of actie, met expressiesyntaxis zoals ${{ secrets.DATABASE_URL } }. Dit betekent dat een onbedoelde of kwaadaardige actie uit de marketplace van een derde partij niet automatisch elke credential in je repository kan pakken; hij krijgt alleen wat je er expliciet aan geeft.

Daarnaast scant GitHub de logboeken van taakuitvoer automatisch op gevoelige tekenreeksen en maskeert die. Als je script per ongeluk een geheime waarde naar de console echoot, probeert GitHub de tekens te vervangen door sterretjes. Omdat scripts tekenreeksen echter kunnen manipuleren of coderen voordat ze worden afgedrukt, is het vertrouwen op logmaskering geen vervanging voor het schrijven van veilige code.

Best practices voor veilige automatisering

Een robuust beheer van GitHub Actions-geheimen vraagt om specifieke dagelijkse gewoonten. Ten eerste: maak altijd onderscheid tussen een configuratie-instelling en een geheim. Als een waarde gewoon een publiek webadres, een omgevingsnaam of een niet-gevoelige feature flag is, bewaar die dan als platte tekst in je YAML-bestand, zodat je team gemakkelijk kan lezen hoe de pipeline werkt. Gebruik de geheimenfunctionaliteit uitsluitend voor gegevens die vertrouwelijk moeten blijven.

Ten tweede: hanteer het principe van minimale rechten. Genereer fijnmazige toegangstokens met zo kort mogelijke vervaldatums en het smalst mogelijke bereik aan machtigingen. Als een deploy-token alleen naar één specifieke S3-bucket hoeft te schrijven, geef het dan geen beheerrechten over je hele cloudinfrastructuur.

Conclusie

Het beheren van GitHub Actions-geheimen beheersen maakt van je CI/CD-pipelines geen potentiële beveiligingsrisico's meer, maar robuuste automatiseringsmotoren op enterprise-niveau. Door je credentials los te koppelen van je code en gelaagde toegangscontroles te gebruiken, kun je software snel uitrollen zonder in te leveren op beveiliging.

Wil je de basis van het bouwen van geautomatiseerde workflows verkennen? Bekijk dan de Luister de volledige aflevering. Luister mee in de volledige discussie voor meer informatie over het instellen van triggers, taken en runners voor je moderne cloudomgeving!

Veelgestelde vragen

Kan ik een GitHub Actions-geheim lezen in een pull request vanuit een fork?

Standaard voorkomt GitHub dat pull requests van externe bijdragers (forks) toegang krijgen tot de geheimen van je repository. Zo wordt voorkomen dat kwaadaardige code draait en je credentials steelt.

Hoe geef ik een geheim vanuit een workflow door aan een specifieke stap?

Je geeft geheimen door aan je workflow via de context 'env' binnen een stap of taak, door het GitHub-geheim te koppelen aan een omgevingsvariabele, bijvoorbeeld env: API_KEY: ${{ secrets.MY_API_KEY } }.

Zijn GitHub Actions-geheimen in logs gegarandeerd verborgen?

GitHub maskeert bekende geheime waarden automatisch in uitvoeringslogboeken, maar dit is geen absolute garantie. Als een geheime waarde wordt gemanipuleerd, gecodeerd of getransformeerd voordat ze wordt afgedrukt, kunnen delen ervan mogelijk alsnog zichtbaar worden.

Wat is het verschil tussen repository-geheimen en omgevingsgeheimen?

Repository-geheimen zijn beschikbaar voor elke workflow in een bepaalde repository, terwijl omgevingsgeheimen gekoppeld zijn aan specifieke implementatieomgevingen (zoals staging of productie) en handmatige goedkeuring door een reviewer kunnen vereisen.

GitHub Actions GitHub Fabric workspace

Related articles

RSS