Cette page est la sœur de Les bases du développement de packages. Une connaissance de base de l’utilisation de GitHub Actions est supposée.
Risques de sécurité liés à GitHub Actions
Le danger des références par tag
En temps normal, on référence les GitHub Actions par tag, comme ceci :- Les tags sont mobiles — un tag peut être supprimé puis recréé sous le même nom.
- Risque d’altération — la prise de contrôle du compte du propriétaire du dépôt permet d’injecter du code malveillant.
- Attaque de la chaîne d’approvisionnement — si une action dont vous dépendez est attaquée, votre workflow est compromis.
Ce que font les projets Laravel officiels
Dans laravel/laravel et laravel/framework, toutes les actions sont épinglées à un hash de commit (SHA).Stratégie de mise en œuvre du pinning
Étape 1 : créer le fichier de configuration Dependabot
Créez.github/dependabot.yml à la racine du dépôt de votre package. Vous pouvez copier tel quel le fichier de Laravel.
- Analyse automatique — scanne les nouvelles versions des GitHub Actions.
- Création automatique de PR — crée automatiquement des PR de mise à jour lorsqu’une mise à jour est disponible.
- Contrôle de la stratégie de mise à jour — les actions non épinglées sont mises à jour par version, les actions épinglées le sont par SHA.
Étape 2 : épingler les actions existantes au SHA
Remplacez toutes les références d’actions dans vos workflows existants par un hash SHA. Cette opération peut être automatisée avec des outils tels que pinact.Automatisation avec pinact
Modification manuelle
Sipinact n’est pas disponible, consultez la page Lookup latest version de GitHub pour trouver le SHA de commit de chaque action, puis remplacez manuellement.
Étape 3 : activer la configuration Dependabot
Commitez et poussez.github/dependabot.yml dans le dépôt : Dependabot lance automatiquement son analyse.
Mécanisme de mise à jour automatique de Dependabot
Dependabot applique différentes stratégies de mise à jour en fonction de la configuration dansdependabot.yml.
Actions non épinglées
Actions épinglées
Exemple d’implémentation de workflow
Voici un exemple complet lorsque des actions sont utilisées dans plusieurs workflows.Gérer les PR de mise à jour Dependabot
Voici comment traiter les PR de mise à jour créées par Dependabot.PR de mise à jour d’une action isolée
- Vérifiez le résultat d’exécution du workflow.
- Vérifiez l’absence de changements cassants.
- Fusionnez.
PR de mise à jour de sécurité
Mise à jour groupée de plusieurs actions
Lorsquegroups est configuré dans dependabot.yml, plusieurs actions sont mises à jour dans une seule PR.
Avantages et inconvénients du pinning
Avantages
| Avantage | Description |
|---|---|
| Protection contre les attaques de chaîne d’approvisionnement | Référencer un hash de commit précis permet de résister à l’altération des actions. |
| Auditabilité | Vous pouvez suivre quand et à partir de quelle version chaque action a été mise à jour. |
| Mise à jour explicite | Comme Dependabot propose les mises à jour, chacune passe obligatoirement par une revue humaine. |
| Reproductibilité | Exécuter avec le même hash de commit reproduit exactement le même environnement. |
Inconvénients
| Inconvénient | Solution |
|---|---|
| Configuration initiale manuelle | Automatiser avec l’outil pinact. |
| Charge de gestion des mises à jour | Les PR automatiques via Dependabot minimisent le coût de mise en œuvre. |
| Manque de lisibilité | Assurer la lisibilité en indiquant la version en commentaire. |
Checklist d’audit de sécurité
Voici une checklist pour démarrer un nouveau projet de package.Configuration initiale
Configuration initiale
- Créer
.github/dependabot.yml - Épingler toutes les actions existantes au SHA
- Vérification effectuée avec
pinactou manuellement - Vérifier que les workflows s’exécutent correctement
Maintenance régulière
Maintenance régulière
- Revoir les PR Dependabot au moins une fois par semaine
- Fusionner en priorité les mises à jour de sécurité
- Toujours référencer par SHA à l’ajout d’une nouvelle action
- Vérifier l’état de tous les workflows une fois par mois
Audit
Audit
- Vérifier que toutes les références d’actions utilisent bien un SHA
- Vérifier que Dependabot est bien activé
- Vérifier que toutes les PR Dependabot des 6 derniers mois ont été fusionnées
Pages associées
Les bases du développement de packages
Découvrez comment développer un package Laravel autour d’un service provider.
Gestion de la compatibilité de versions de package
Découvrez la stratégie d’adaptation d’un package aux montées de version majeures de Laravel.