Utiliser une identité de charge de travail à partir d’un workflow GitHub Actions

Effectué

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