GitHub Actions est la plateforme intégrée d’intégration et de livraison continues (CI/CD) de GitHub qui permet aux équipes de développement d’automatiser leur flux de travail, y compris le pipeline de construction, de test et de déploiement.

L’un des inconvénients de l’utilisation de GitHub Actions est que vos journaux sont publics et que n’importe qui peut y accéder avec les autorisations nécessaires.

Pour éviter que des données sensibles ne soient exposées dans les journaux de GitHub Actions, vous devez utiliser des variables d’environnement cryptées pour stocker les données sensibles en toute sécurité. Ces variables d’environnement cryptées sont connues sous le nom de GitHub Actions Secrets.

Cet article vous montre comment utiliser les GitHub Actions Secrets GitHub pour empêcher l’apparition d’informations sensibles dans vos journaux d’actions GitHub.

Conditions préalables :

Pour suivre ce tutoriel :

Comment sécuriser les journaux de vos actions GitHub

Lorsque vous créez des flux de travail en utilisant les Actions GitHub, n’importe quel visiteur de votre dépôt peut voir les journaux, qui ne devraient donc pas contenir d’informations sensibles. Cependant, vous ne pouvez pas simplement supprimer vos tokens, mots de passe et autres informations sensibles – vous en avez besoin pour les tests et pour que votre application fonctionne correctement.

La solution consiste à les masquer à l’aide de la commande de workflow ::add-mask::, qui place un astérisque (*) à la place des données sensibles auxquelles elle s’applique.

La section suivante vous montre comment masquer un journal.

Comment masquer les journaux

Tout d’abord, ouvrez le dépôt cloné dans votre éditeur de texte.

Créez le répertoire .github/workflows/ à la racine de votre dépôt pour stocker vos fichiers de flux de travail. Ensuite, créez un nouveau fichier nommé hide-secrets.yml dans le répertoire .github/workflows et ajoutez-y le code suivant :

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
    runs-on: ubuntu-latest
    steps:
      - name: echo a secret
        run: echo "your secret token is verySecretToken"

Validez les modifications et transférez-les dans votre dépôt GitHub. Le flux de travail GitHub Actions mis à jour est actif et sera déclenché chaque fois que vous apporterez une nouvelle modification.

Ouvrez votre dépôt sur GitHub et sélectionnez l’onglet Actions pour afficher les journaux. Votre flux de travail devrait apparaître comme ci-dessous :

Prévisualisez votre flux de travail
Prévisualisez votre flux de travail

En examinant les journaux du flux de travail, vous trouverez la chaîne verySecretToken affichée sur les journaux. Cliquez sur votre flux de travail, puis sur le nom de la tâche (print-secret-token) pour afficher le journal. Il devrait ressembler à ceci :

Examinez vos journaux d'action GitHub
Examinez vos journaux d’action GitHub

Pour le masquer, utilisez la commande ::add-mask::, modifiez le fichier hide-secrets.yml et ajoutez une nouvelle étape à la tâche print-secret-token:

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
    runs-on: ubuntu-latest
    steps:
      - name: Add Mask
        run: echo "::add-mask::verySecretToken"
      - name: echo a secret  
        run: echo "your secret token is verySecretToken"

Vous devez ajouter l’étape Add Mask au début, car le masquage ne s’applique qu’après l’exécution de ::add-mask::. Si vous placez le secret verySecretToken avant l’étape Add Mask, il apparaîtra toujours non masqué. Pour vous assurer que la valeur est masquée, il est donc essentiel d’utiliser ::add-mask:: dès que possible.

Une fois que vous aurez livré et publié vos modifications sur votre dépôt GitHub, la chaîne verySecretToken sera remplacée par des astérisques (*) partout où elle apparaîtra dans vos journaux :

Rendre les textes clairs
Rendre les textes clairs

Bien que cela corrige le problème de masquage, cela en introduit un nouveau. Votre verySecretToken est toujours dans le fichier de flux de travail, de sorte que toute personne ayant accès au code source peut le voir.

Un autre inconvénient du masquage de texte brut est que le masquage d’une partie seulement d’un mot masque toutes les occurrences de ce mot. Par exemple, prenez la phrase suivante : « Programming is great, but my most productive days are those when I do not write a program ». Si vous masquez le mot « program », il sera masqué non seulement à la fin de la phrase, mais aussi partout où il apparaît, comme dans « programming »

Si vous essayez de masquer du texte brut, vous obtiendrez quelque chose comme ceci :

Problème de masquage des textes en clair
Problème de masquage des textes en clair

Une meilleure approche pour masquer les données sensibles dans les logs GitHub Actions est d’utiliser GitHub Actions Secrets, comme démontré dans la section suivante.

Comment utiliser GitHub Actions Secrets

Vous pouvez utiliser les GitHub Actions Secrets pour stocker toutes les données privées que vous souhaitez utiliser dans votre flux d’actions GitHub. Les secrets sont créés sous forme de paires clé/valeur au niveau du dépôt ou de l’organisation.

Alors que ce dépôt ne peut accéder qu’aux secrets créés au niveau du dépôt, les secrets créés au niveau de l’organisation sont partagés par tous les référentiels au sein d’une organisation.

Les secrets créés au niveau du dépôt peuvent être utilisés dans des actions par toute personne disposant d’autorisations de collaborateur. Vous pouvez modifier la valeur de vos secrets à tout moment. Cependant, les secrets ne peuvent pas être utilisés avec des flux de travail provenant d’un dépôt forké.

Les directives suivantes s’appliquent à la dénomination des secrets :

  • Les noms de secrets ne peuvent pas contenir d’espaces.
  • Les noms de secrets ne sont pas sensibles à la casse.
  • Les noms de secrets ne peuvent pas commencer par un chiffre.
  • Les noms de secrets ne doivent pas commencer par le préfixe GITHUB_.
  • Les noms de secrets doivent être uniques – les secrets portant le même nom ne peuvent pas exister au même niveau.

Vous pouvez utiliser ces secrets dans le flux de travail des actions GitHub en ajoutant simplement secrets avant votre nom de secret en tant que variable YML, comme indiqué ci-dessous :

${{ secrets.MY_SECRET_TOKEN }}

Vous pouvez également masquer les secrets pour plus de sécurité, comme indiqué dans la section suivante.

Comment masquer les secrets

Tout d’abord, créez un secret GitHub. Dans votre dépôt sur GitHub, cliquez sur l’onglet Réglages, sélectionnez Secrets > Actions dans la colonne latérale de gauche, puis cliquez sur Nouveau secret de dépôt pour ajouter un nouveau secret :

Créer un nouveau secret de dépôt
Créer un nouveau secret de dépôt

Donnez un nom et une valeur à votre secret, puis cliquez sur Ajouter un secret:

Ajouter un nouveau secret GitHub
Ajouter un nouveau secret GitHub

Maintenant que vous avez créé votre secret et que vous lui avez donné la valeur verySecretToken, vous pouvez l’utiliser dans votre fichier de flux de travail. Ouvrez votre fichier hide-secrets.yml et apportez les modifications suivantes :

name: Hide Sensitive Information
on: push
jobs:
  print-secret-token:
    runs-on: ubuntu-latest
    steps:
      - name: Add Mask
        run: echo "::add-mask::${{ secrets.MY_SECRET_TOKEN }}"
      - name: Echo a secret  
        run: echo "your secret token is ${{ secrets.MY_SECRET_TOKEN }}"

La seule différence entre ce code et le code précédent est que vous avez remplacé le jeton secret par votre secret GitHub nouvellement créé « ${{ secrets.MY_SECRET_TOKEN }}. »

Une fois que vous avez validé le code et poussé les modifications vers votre dépôt GitHub, vos secrets sont masqués :

GitHub Actions Secrets masqués
GitHub Actions Secrets masqués

Résumé

Vous ne devez pas révéler d’informations sensibles dans vos journaux d’action GitHub. Le masquage de texte brut est un moyen de cacher des données, mais toute personne accédant à vos fichiers de flux de travail peut voir les informations que vous essayez de cacher.

Comme le montre ce tutoriel, GitHub Actions Secret est une approche beaucoup plus sûre pour sauvegarder vos données sensibles, puis les masquer.

Lisez notre documentation pour en savoir plus sur l’utilisation de Git chez Kinsta. Essayez gratuitement notre hébergement d’applications.

Jeremy Holcombe Kinsta

Content & Marketing Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems ;).