Gérer les secrets dans GitHub
Les secrets sont des variables que vous créez dans une organisation, un dépôt ou un environnement de référentiel. Les secrets sont disponibles pour être utilisés dans les flux de travail GitHub Actions. GitHub Actions ne peut lire un secret que si vous incluez explicitement le secret dans un flux de travail.
Pour les secrets stockés au niveau de l’organisation, vous pouvez utiliser des stratégies d’accès pour contrôler les référentiels pouvant utiliser les secrets de l’organisation. En utilisant des secrets au niveau de l’organisation, vous pouvez partager des secrets entre plusieurs référentiels. Cela réduit la nécessité de créer des secrets en double. La mise à jour d’un secret d’organisation dans un emplacement garantit également que la modification prend effet dans tous les flux de travail de référentiel qui utilisent ce secret.
Pour les secrets stockés au niveau de l’environnement, vous pouvez permettre aux réviseurs nécessaires de contrôler l’accès aux secrets. Une tâche de flux de travail ne peut pas accéder aux secrets d’environnement, sauf si approuvée par des approbateurs requis.
Remarque
Vous pouvez configurer vos flux de travail pour vous authentifier directement auprès d’Azure pour accéder aux ressources.
Nommage de 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 traits de soulignement (_). Les espaces ne sont pas autorisés. - Les noms ne doivent pas commencer par le
GITHUB_préfixe. - Les noms ne doivent pas commencer par un nombre.
- Les noms ne respectent pas la casse.
- Les noms doivent être uniques au niveau auquel ils sont créés.
Pour vous assurer que GitHub inscrit votre secret dans les journaux, évitez d’utiliser des données structurées comme valeurs de secrets. Par exemple, évitez de créer des secrets qui contiennent des objets blob Git JSON ou encodés.
Accès à vos secrets
Définissez le secret en tant que variable d’entrée ou d’environnement dans le fichier de flux de travail pour le rendre disponible pour une action. Vous pouvez utiliser et lire des secrets dans un fichier de flux de travail si vous avez accès à la modification du fichier. Pour plus d’informations, visitez les autorisations Access sur GitHub.
Les secrets de l’organisation et du référentiel sont lus lorsqu’une exécution de flux de travail est mise en file d’attente. En revanche, les secrets d’environnement sont lus lorsqu’un travail référençant l’environnement démarre. Vous pouvez également gérer les secrets à l’aide de l’API REST.
Limitation des autorisations d’informations d’identification
Il est recommandé d’accorder les autorisations minimales possibles. Par exemple, au lieu d’utiliser des informations d’identification personnelles, utilisez des clés de déploiement ou un compte de service. Envisagez d’accorder des autorisations en lecture seule si c’est la seule action requise et limitez l’accès autant que possible.
Lors de la génération d'un jeton d'accès personnel (classique), sélectionnez les étendues les moins nombreuses nécessaires. Lors de la génération d’un jeton d’accès personnel affiné, sélectionnez les autorisations minimales et l’accès au référentiel requis.
Création de secrets
Pour créer des secrets ou des variables sur GitHub pour un dépôt de compte personnel, vous devez être le propriétaire du référentiel. Pour créer des secrets ou des variables sur GitHub pour un dépôt d'organisation, vous devez disposer d'un accès admin. Enfin, pour créer des secrets ou des variables pour un dépôt de compte personnel ou un référentiel d’organisation via l’API REST, vous devez disposer d’un accès collaborateur.
Les secrets peuvent être créés par :
- Sélectionnez Paramètres dans la barre de navigation supérieure de votre référentiel.
- Dans la section Sécurité de la navigation de gauche, sélectionnez la liste déroulante Secrets et variables .
- Sélectionnez Actions pour accéder à la page des secrets et variables d'Actions .
Utilisation de secrets dans un flux de travail
Pour fournir une action avec un secret en tant que variable d’entrée ou d’environnement, vous pouvez utiliser le secrets contexte pour accéder aux secrets créés dans votre référentiel. Le code suivant montre un exemple d’accès aux secrets dans un flux de travail.
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 directement référencés dans les conditions if:. Envisagez de définir des secrets en tant que variables d’environnement au niveau du travail, puis de référencer les variables d’environnement pour exécuter des étapes conditionnelles dans le travail.
Si la valeur d’un secret n’est pas définie, la valeur de retour d’une expression référençant le secret (par ${{ secrets.SuperSecret }} exemple) est une chaîne vide.