Skip to main content
Om het risico van aanvallen op en manipulatie van GitHub-actions af te dekken, is het pinnen van GitHub Actions een beveiligingsmaatregel die ook de officiële Laravel-projecten toepassen. Op deze pagina leggen we praktisch uit welke beveiligingsmaatregelen je als pakketontwikkelaar zou moeten implementeren.
Deze pagina is een zusterpagina van Basis van pakketontwikkeling. We gaan ervan uit dat je bekend bent met het basisgebruik van GitHub Actions.

Beveiligingsrisico’s van GitHub Actions

Het gevaar van verwijzen via tags

Normaal gesproken worden GitHub Actions als volgt via tags gerefereerd.
De problemen met deze aanpak:
  • Tags zijn verplaatsbaar — een tag kan worden verwijderd en opnieuw aangemaakt onder dezelfde naam
  • Manipulatierisico — via een overgenomen account van de repository-eigenaar kan kwaadaardige code worden geïnjecteerd
  • Supply-chain-aanvallen — als een action waarvan je afhankelijk bent wordt aangevallen, is jouw workflow gecompromitteerd

Hoe de officiële Laravel-projecten dit aanpakken

In laravel/laravel en laravel/framework zijn alle actions gepind op commithashes (SHA).

Implementatiestrategie voor pinnen

Stap 1: het Dependabot-configuratiebestand aanmaken

Maak in de repository van je pakket het bestand .github/dependabot.yml aan. Je kunt het bestand van Laravel gewoon kopiëren.
Dit bestand vervult de volgende rollen:
  • Automatisch scannen — scant op nieuwe versies van GitHub Actions
  • Automatisch PR’s aanmaken — maakt automatisch een update-PR aan als er een update beschikbaar is
  • De updatemethode sturen — niet-gepinde actions worden per versie geüpdatet, gepinde actions per SHA

Stap 2: bestaande actions pinnen op SHA

Verander alle action-referenties in je bestaande workflows naar SHA-hashes. Dit kun je automatiseren met tools zoals pinact.

Automatiseren met de pinact-tool

Handmatig aanpassen

Als pinact niet beschikbaar is, zoek je de commit-SHA van elke action op via de GitHub-pagina Lookup latest version en vervang je ze handmatig.

Stap 3: de Dependabot-configuratie activeren

Zodra je .github/dependabot.yml naar de repository commit en pusht, begint Dependabot automatisch te scannen.

Het automatische updatemechanisme van Dependabot

Dependabot past op basis van de instellingen in dependabot.yml verschillende updatestrategieën toe.

Niet-gepinde actions

Update door Dependabot: de versierange wordt bijgewerkt naar een nieuwe versie
Deze aanpak is gericht op gemak en kan omgaan met verplaatste tags, maar het beveiligingsrisico blijft bestaan.

Gepinde actions

Update door Dependabot: wordt bijgewerkt naar de commithash van de nieuwe versie
Deze aanpak is het veiligst. Ook bij een nieuwe versie verwijs je naar een commithash en ben je dus bestand tegen manipulatie.

Voorbeeldimplementatie van workflows

Een compleet voorbeeld voor wanneer je actions in meerdere workflows gebruikt.

Omgaan met update-PR’s van Dependabot

De update-PR’s die Dependabot aanmaakt, handel je als volgt af.

Update-PR voor een enkele action

Zo’n eenvoudige update pak je als volgt aan:
  1. Controleer het resultaat van de workflowrun
  2. Controleer op breaking changes
  3. Merge en klaar

Beveiligingsupdate-PR

Updates die een beveiligingsfix betreffen, merge je met voorrang.

Gegroepeerde updates van meerdere actions

Als je groups hebt geconfigureerd in dependabot.yml, worden meerdere actions in één PR geüpdatet.
Door alle action-updates in één PR te bundelen, verminder je het aantal merges.

Voor- en nadelen van pinnen

Voordelen

Nadelen

Checklist voor beveiligingsaudits

Een checklist voor wanneer je een nieuw pakketproject start.
  • .github/dependabot.yml aangemaakt
  • Alle bestaande actions gepind op SHA
  • Gecontroleerd met pinact of handmatig
  • Gecontroleerd dat de workflows correct draaien
  • Update-PR’s van Dependabot minstens wekelijks reviewen
  • Beveiligingsupdates met voorrang mergen
  • Nieuwe actions altijd via SHA refereren
  • Eén keer per maand de status van alle workflows controleren
  • Controleren of alle action-referenties SHA’s zijn
  • Controleren of Dependabot is ingeschakeld
  • Controleren of alle Dependabot-PR’s van de afgelopen 6 maanden zijn gemerged

Gerelateerde pagina’s

Basis van pakketontwikkeling

Leer hoe je Laravel-pakketten ontwikkelt met service providers als kern.

Versiecompatibiliteit van pakketten beheren

Leer strategieën om je pakket mee te laten gaan met major versie-upgrades van Laravel.
Laatst gewijzigd op 6 september 2026