Gérer les secrets dans GitHub
Les secrets sont des variables que vous créez au niveau d’une organisation, d’un dépôt ou d’un environnement de dépôt. Ces secrets sont disponibles pour être utilisés dans les workflows GitHub Actions.
GitHub Actions ne peut lire un secret que si vous l’incluez explicitement dans un fichier de workflow.
Secrets au niveau de l’organisation
Pour les secrets stockés au niveau de l’organisation, vous pouvez utiliser des politiques d’accès pour contrôler quels dépôts peuvent utiliser ces secrets.
Les secrets au niveau de l’organisation permettent de partager des secrets entre plusieurs dépôts, ce qui réduit le besoin de les dupliquer.
La mise à jour d’un secret à un seul endroit garantit que le changement est pris en compte dans tous les workflows qui l’utilisent.
Secrets au niveau de l’environnement
Pour les secrets stockés au niveau de l’environnement, vous pouvez activer des examinateurs obligatoires pour contrôler l’accès.
Un job de workflow ne peut pas accéder aux secrets d’environnement sans l’approbation des personnes requises.
Remarque
Vous pouvez configurer vos workflows pour s’authentifier directement auprès d’Azure afin d’accéder à des ressources.
Nommer vos secrets
Les règles suivantes s’appliquent aux noms de secrets :
- Les noms ne peuvent contenir que des caractères alphanumériques (
[a-z]
,[A-Z]
,[0-9]
) ou des tirets bas (_
). Les espaces ne sont pas autorisés. - Les noms ne doivent pas commencer par le préfixe
GITHUB_
. - Les noms ne doivent pas commencer par un chiffre.
- Les noms ne sont pas sensibles à la casse.
- Les noms doivent être uniques au niveau où ils sont créés.
Pour garantir que GitHub masque vos secrets dans les journaux, évitez d’utiliser des données structurées comme valeurs de secrets (par exemple, évitez les secrets contenant du JSON ou des blobs Git encodés).
Accéder à vos secrets
Définissez le secret comme une entrée ou une variable d’environnement dans le fichier de workflow pour le rendre disponible à une action.
Vous pouvez utiliser et lire les secrets dans un fichier de workflow si vous avez les droits pour modifier ce fichier.
Pour plus d’informations, consultez la page Permissions d’accès sur GitHub.
- Les secrets d’organisation et de dépôt sont lus lorsque l’exécution du workflow est mise en file d’attente.
- Les secrets d’environnement sont lus lorsque le job qui référence l’environnement démarre.
- Vous pouvez également gérer les secrets via l’API REST.
Limiter les permissions des identifiants
Il est recommandé d’accorder le minimum de permissions nécessaires.
Par exemple, au lieu d’utiliser des identifiants personnels, utilisez des clés de déploiement ou un compte de service.
Accordez des permissions en lecture seule si cela suffit, et limitez l’accès autant que possible.
- Lors de la génération d’un jeton d’accès personnel classique, sélectionnez le minimum de portées nécessaires.
- Lors de la génération d’un jeton d’accès personnel à granularité fine, sélectionnez les permissions minimales et l’accès aux dépôts requis.
Créer des secrets
Pour créer des secrets ou des variables sur GitHub :
- Pour un dépôt personnel, vous devez être propriétaire du dépôt.
- Pour un dépôt d’organisation, vous devez avoir un accès administrateur.
- Pour créer des secrets via l’API REST, vous devez avoir un accès collaborateur.
Étapes pour créer un secret :
- Sélectionnez Settings dans la barre de navigation supérieure du dépôt.
- Dans la section Security de la barre latérale gauche, sélectionnez le menu déroulant Secrets and variables.
- Sélectionnez Actions pour accéder à la page des secrets et variables des Actions.
Utiliser des secrets dans un workflow
Pour fournir un secret à une action en tant qu’entrée ou variable d’environnement, utilisez le contexte secrets
pour accéder aux secrets créés dans votre dépôt.
steps:
- name: Hello world action
with: # Set the secret as an input
super_secret: ${{ secrets.SuperSecret }}
env: # Or as an environment variable
super_secret: ${{ secrets.SuperSecret }}
⚠️ Les secrets ne peuvent pas être référencés directement dans une condition if:
.
Il est recommandé de définir les secrets comme variables d’environnement au niveau du job, puis de référencer ces variables pour exécuter conditionnellement des étapes.
Si la valeur d’un secret n’est pas définie, l’expression qui le référence (comme ${{ secrets.SuperSecret }}
dans l’exemple) renverra une chaîne vide.