Aller au contenu
English
CI/CD & Automatisation medium

Règles de protection des déploiements GitHub

Read this page in English

30 min de lecture

Un environnement sans règle n'est qu'une étiquette. Ce sont les règles de protection qui en font une frontière : exiger une approbation humaine, imposer un délai avant exécution, restreindre les branches autorisées à déployer, ou déléguer la décision à un système tiers. Cette page détaille les quatre, avec leurs limites chiffrées et le comportement exact des secrets pendant l'attente.

  • Exiger une approbation et savoir qui peut l'accorder, et qui ne peut pas
  • Utiliser le délai d'attente comme fenêtre d'annulation, sans payer la minute
  • Restreindre les branches et tags autorisés à déployer sur une cible
  • Brancher une règle personnalisée portée par un outil d'observabilité ou d'ITSM
  • Comprendre pourquoi les secrets ne fuitent pas pendant l'attente d'approbation
RègleCe qu'elle contrôleLimite
Required reviewersQui autorise le déploiementJusqu'à 6 personnes ou équipes
Wait timerCombien de temps on attend avant de démarrer1 à 43 200 minutes (30 jours)
Deployment branches and tagsD'où le déploiement peut partir3 politiques possibles
Custom deployment protection rulesDécision déléguée à un tiers6 règles actives au maximum

Elles se cumulent. Un environnement de production sérieux en combine typiquement trois : approbation humaine, restriction aux branches protégées, et parfois une règle personnalisée qui vérifie l'absence d'incident en cours.

La règle Required reviewers met le job en pause et attend qu'une personne autorisée valide. Vous désignez jusqu'à six utilisateurs ou équipes, et une seule approbation suffit à débloquer le job. Ce n'est donc pas un quorum : c'est une liste de personnes habilitées, dont n'importe laquelle peut ouvrir la porte.

Un détail compte beaucoup en pratique : quand l'auto-approbation est désactivée dans les réglages, la personne qui a déclenché le déploiement ne peut pas l'approuver elle-même. C'est ce qui distingue un vrai contrôle à quatre yeux d'une case à cocher.

C'est le point le plus important de toute cette page, et le plus souvent ignoré :

Un job ne peut pas accéder aux secrets de l'environnement tant qu'un des relecteurs requis ne l'a pas approuvé.

Autrement dit, l'attente n'est pas une pause cosmétique avant un job déjà armé. Tant que l'approbation n'est pas donnée, le runner n'a jamais vu le jeton de production. Un workflow compromis qui atteindrait l'étape de déploiement n'obtiendrait rien de plus qu'une demande d'approbation visible par toute l'équipe.

jobs:
deploy-production:
needs: deploy-staging
runs-on: ubuntu-24.04
environment:
name: production # environnement avec required reviewers
url: https://mon-app.example.com
steps:
- name: Déployer en production
run: ./deploy.sh
env:
# Ce secret n'est délivré qu'après l'approbation humaine
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}

Le wait timer retarde le démarrage du job de 1 à 43 200 minutes, soit jusqu'à 30 jours. Sa vertu n'est pas de ralentir, mais d'ouvrir une fenêtre d'annulation : si un problème apparaît juste après la fusion, vous avez le temps d'arrêter l'exécution avant qu'elle ne touche la production.

Un point de facturation à connaître, parce qu'il lève l'objection la plus fréquente : le temps d'attente n'est pas facturé. Vous ne payez pas des minutes de runner pendant que le compteur tourne, le job n'a pas encore démarré.

En pratique, cinq à quinze minutes suffisent pour une fenêtre utile. Au-delà, vous n'obtenez plus une sécurité mais une file d'attente, et l'équipe prendra l'habitude de contourner le mécanisme.

La troisième règle répond à une question simple : d'où a-t-on le droit de déployer sur cette cible ? Trois politiques sont proposées :

PolitiqueEffetUsage typique
Aucune restrictionToute branche ou tag peut déployerEnvironnement de test jetable
Branches protégées uniquementSeules les branches couvertes par une règle de protectionProduction simple
Branches et tags sélectionnésMotifs de noms explicites (main, release/*, v*)Production avec branches de release

Sans cette règle, n'importe quelle branche de fonctionnalité peut, par un workflow déclenché manuellement, viser l'environnement production et consommer ses secrets. La restriction ferme cette porte avant l'exécution : le job échoue immédiatement, sans jamais obtenir les secrets.

La quatrième règle, custom deployment protection rules, délègue l'autorisation à un service tiers via une application GitHub. Le déploiement reste en attente jusqu'à ce que ce service réponde. GitHub cite notamment Datadog, Honeycomb et ServiceNow parmi les intégrations disponibles, et un environnement accepte six règles actives au maximum.

L'intérêt n'est pas de rajouter un clic, mais d'automatiser un critère que l'humain évalue mal ou trop tard :

  • l'observabilité refuse le déploiement si le taux d'erreur de la version en place dépasse un seuil, ou si un budget d'erreur est déjà consommé ;
  • l'ITSM refuse le déploiement hors fenêtre de changement approuvée, ou si un incident majeur est ouvert.

C'est le niveau de maturité au-dessus de l'approbation humaine : la question « a-t-on le droit de déployer maintenant ? » cesse de dépendre de la vigilance d'une personne un vendredi soir.

Poser les quatre règles d'un coup sur un dépôt existant produit surtout du contournement. L'ordre qui tient dans la durée va du moins coûteux au plus exigeant :

ÉtapeRègle poséeCe qu'elle coûte à l'équipe
1Branches autorisées sur productionRien, personne ne déployait depuis ailleurs
2Secrets déplacés au niveau environnementUne migration, une fois
3Approbation requise sur productionUn clic par mise en production
4Délai d'attente de 10 minutesDix minutes, récupérables en annulation
5Règle personnalisée liée aux incidentsUne intégration à maintenir

Les deux premières étapes ne se négocient pas : elles sont gratuites en friction et ferment les deux voies les plus utilisées. Les suivantes se discutent avec l'équipe, parce qu'elles se paient en temps.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • Quatre règles protègent un environnement : approbation, délai d'attente, branches autorisées et règles personnalisées.
  • L'approbation accepte jusqu'à six relecteurs ou équipes, et une seule approbation débloque le job ; l'initiateur ne peut pas s'auto-approuver quand l'option est désactivée.
  • Les secrets d'environnement ne sont pas délivrés avant l'approbation : l'attente est une vraie barrière, pas une pause devant un job déjà armé.
  • Le délai d'attente va de 1 à 43 200 minutes et n'est pas facturé.
  • La politique de branches empêche une branche de fonctionnalité de viser la production, mais ne remplace pas la protection de la branche elle-même.
  • Les règles personnalisées (six au maximum) délèguent la décision à l'observabilité ou à l'ITSM, et automatisent le « peut-on déployer maintenant ? ».

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn