Skip to main content

Travailler avec la protection contre les commits (push protection) depuis la ligne de commande

Découvrez vos options pour débloquer votre push depuis la ligne de commande vers GitHub si secret scanning détecte un secret dans vos modifications.

Qui peut utiliser cette fonctionnalité ?

Utilisateurs avec accès en écriture

Résoudre un push bloqué

Pour résoudre un push bloqué, vous devez supprimer le secret de tous les commits dans lesquels il apparaît.

Supprimer un secret introduit par le dernier commit sur votre branche

  1. Supprimez le secret de votre code.
  2. Pour valider les modifications, exécutez git commit --amend --all. Cela met à jour le commit d’origine qui a introduit le secret, au lieu de créer un nouveau commit.
  3. Envoyer vos modifications avec git push.

Supprimer un secret introduit par un commit antérieur sur votre branche

  1. Examinez le message d’erreur qui s’est affiché lorsque vous avez tenté de pousser votre branche ; il répertorie tous les commits qui contiennent le secret.

    remote:   —— GitHub Personal Access Token ——————————————————————
    remote:    locations:
    remote:      - commit: 8728dbe67
    remote:        path: README.md:4
    remote:      - commit: 03d69e5d3
    remote:        path: README.md:4
    remote:      - commit: 8053f7b27
    remote:        path: README.md:4
    
  2. Ensuite, exécutez git log afin d’afficher l’historique complet de tous les commits de votre branche, ainsi que leurs horodatages correspondants.

    test-repo (test-branch)]$ git log
    commit 8053f7b27 (HEAD -> main)
    Author: Octocat <1000+octocat@users.noreply.github.com
    Date:   Tue Jan 30 13:03:37 2024 +0100
    
      my fourth commit message
    
    commit 03d69e5d3
    Author: Octocat <1000+octocat@users.noreply.github.com>
    Date:   Tue Jan 30 13:02:59 2024 +0100
    
      my third commit message
    
    commit 8728dbe67
    Author: Octocat <1000+octocat@users.noreply.github.com
    Date:   Tue Jan 30 13:01:36 2024 +0100
    
      my second commit message
    
    commit 6057cbe51
    Author: Octocat <1000+octocat@users.noreply.github.com
    Date:   Tue Jan 30 12:58:24 2024 +0100
    
      my first commit message
    
    
  3. Focusing only on the commits that contain the secret, use the output of git log to identify which commit comes earliest in your Git history.

    • In the example, commit 8728dbe67 was the first commit to contain the secret.
  4. Start an interactive rebase with git rebase -i <COMMIT-ID>~1.

    • For <COMMIT-ID>, use the commit identified in step 3. For example, git rebase -i 8728dbe67~1.
  5. In the editor, choose to edit the commit identified in step 3 by changing pick to edit on the first line of the text.

    edit 8728dbe67 my second commit message
    pick 03d69e5d3 my third commit message
    pick 8053f7b27 my fourth commit message
    
  6. Enregistrez et fermez l’éditeur pour démarrer le rebase interactif.

  7. Supprimez le secret de votre code.

  8. Ajoutez vos modifications à la zone de staging à l’aide de git add ..

    Remarque

    La commande complète est git add . :

    • Il y a un espace entre add et ..
    • Le point qui suit l’espace fait partie de la commande.
  9. Validez vos modifications à l’aide de git commit --amend.

  10. Exécutez git rebase --continue pour terminer la relocalisation.

  11. Envoyer vos modifications avec git push.

Contournement de la protection Push

Remarque

Si vous ne voyez pas l’option permettant de contourner le blocage, vous devez supprimer le secret du commit ou soumettre une demande de « privilèges de contournement » afin de pouvoir pousser le secret bloqué. Consultez Demande de privilèges de contournement.

  1. Accédez à l'URL renvoyée par GitHub quand votre envoi (push) a été bloqué, en tant que même utilisateur qui a effectué l’envoi (push). Si un autre utilisateur tente de visiter cette URL, il reçoit une erreur 404.

  2. Choisissez l’option qui décrit le mieux la raison pour laquelle vous devez être en mesure de pousser le secret.

    • Si le secret est utilisé uniquement dans des tests et ne représente aucune menace, cliquez sur Il est utilisé dans des tests.
    • Si la chaîne détectée n’est pas un secret, cliquez sur Il s’agit d’un faux positif.
    • Si le secret est réel, mais que vous avez l’intention de le corriger plus tard, cliquez sur Je le corrigerai plus tard.
  3. Cliquez sur M’autoriser à pousser ce secret.

  4. Retentez la poussée sur la ligne de commande dans un délai de trois heures. Si vous n’effectuez pas la poussée dans les trois heures, vous devrez répéter ce processus.

Demande de privilèges de contournement

  • Si votre demande est approuvée, vous pouvez envoyer (push) la validation (ou les validations) contenant le secret au référentiel, ainsi que les validations futures qui contiennent le même secret.
  • Si votre demande est refusée, vous devez supprimer le secret de toutes les validations avant d’envoyer (push) à nouveau. Pour obtenir des informations sur la manière de supprimer un secret bloqué, consultez Résoudre un push bloqué.

Lectures complémentaires

  •           [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui)
    
  •         [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api)