Utiliser une identité de charge de travail à partir d’un workflow GitHub Actions
Une fois que vous avez créé une identité de charge de travail et que vous lui avez attribué l’accès à votre environnement Azure, il est temps de l’utiliser dans votre workflow GitHub Actions. Dans cette unité, vous découvrez les deux modifications que vous devez apporter à votre définition de workflow.
Autoriser le workflow à demander des jetons
Vous devez autoriser votre workflow de déploiement à demander des jetons. Dans votre workflow, ajoutez la propriété permissions
:
permissions:
id-token: write
contents: read
Connexion à Azure
Votre workflow de déploiement utilise l’action azure/login
pour vous connecter à Azure. Lorsque vous utilisez une identité de charge de travail, vous devez spécifier trois entrées :
Entrée | Description |
---|---|
client-id |
ID d’application pour l’inscription d’application. Veillez à utiliser l’ID d’application et non l’ID d’objet. |
tenant-id |
L’identificateur unique de votre locataire Microsoft Entra (répertoire). |
subscription-id |
ID d’abonnement Azure sur lequel vous allez effectuer le déploiement. |
Chacune de ces valeurs est un GUID.
Lorsque vous définissez les valeurs, vous pouvez choisir de les spécifier directement dans votre fichier de définition de workflow :
- uses: azure/login@v1
with:
client-id: 'A123b4567c-1234-1a2b-2b1a-1234abc12345'
tenant-id: 'aaaabbbb-0000-cccc-1111-dddd2222eeee'
subscription-id: 'B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0'
Toutefois, certaines organisations traitent ces identificateurs comme des données secrètes ou n’autorisent pas la validation des identificateurs dans les dépôts Git. Vous pouvez également utiliser des secrets GitHub pour spécifier les valeurs :
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
Tout au long des parcours d’apprentissage pour Bicep, nous utilisons des secrets pour stocker et gérer ces identificateurs. Vous pouvez décider quelle approche convient le mieux à votre organisation.
Déployer sur Azure
Une fois que votre workflow s’est connecté à Azure, vous pouvez déployer un fichier Bicep à l’aide de l’action azure/arm-deploy
. La définition de workflow suivante montre un workflow de déploiement Bicep complet qui utilise des identités de workflow :
name: MyWorkflow
on: [workflow_dispatch]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: repo
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
with:
resourceGroupName: ToyWebsite
template: ./deploy/main.bicep