Utiliser GitHub Actions pour se connecter à Azure

Découvrez comment utiliser la connexion Azure avec Azure PowerShell ou Azure CLI pour interagir avec vos ressources Azure.

Pour utiliser Azure PowerShell ou Azure CLI dans un workflow GitHub Actions, vous devez d’abord vous connecter avec l’action Connexion Azure.

L’action Azure login prend en charge deux méthodes d’authentification différentes auprès d’Azure :

Par défaut, l’action de connexion se connecte avec Azure CLI et configure l’environnement d’exécuteur GitHub Actions pour Azure CLI. Vous pouvez utiliser Azure PowerShell avec la propriété enable-AzPSSession de l’action de connexion Azure. Cela configure l’environnement d’exécuteur GitHub Actions avec le module Azure PowerShell.

Vous pouvez utiliser la connexion Azure pour vous connecter à des clouds publics ou souverains, notamment Azure Government et Azure Stack Hub.

Utiliser l’action Azure login avec OpenID Connect

Pour configurer une action Azure login avec OpenID Connect et l’utiliser dans un workflow GitHub Actions, vous avez besoin des éléments suivants :

  • Une application Microsoft Entra, avec un principal de service qui a été affecté avec un rôle approprié à votre abonnement.
  • Une application Microsoft Entra configurée avec des informations d’identification fédérées pour approuver les jetons émis par GitHub Actions dans votre dépôt GitHub. Vous pouvez le configurer dans le Portail Azure ou avec les API REST Microsoft Graph.
  • Flux de travail GitHub Actions qui demande des jetons de problème GitHub au flux de travail et utilise l’action de connexion Azure.

Créer une application Microsoft Entra et un principal de service

Vous devez créer une application Microsoft Entra et un principal de service, puis attribuer un rôle sur votre abonnement à votre application afin que votre flux de travail ait accès à votre abonnement.

  1. Si vous n’avez pas d’application existante, inscrivez une nouvelle application Microsoft Entra et un principal de service qui peuvent accéder aux ressources. Dans le cadre de ce processus, veillez à effectuer les opérations suivantes :

    • Inscrire votre application avec l’ID Microsoft Entra et créer un principal de service
    • Attribuer un rôle à l’application
  2. Ouvrez Inscriptions d’applications dans le portail Azure et recherchez votre application. Copiez les valeurs définies pour ID d’application (client) et ID d’annuaire (locataire). Vous en aurez besoin dans votre workflow GitHub Actions.

  3. Ouvrez Abonnements dans le portail Azure et recherchez votre abonnement. Copiez l’ID d’abonnement.

Ajouter des informations d’identification fédérées

Cous pouvez ajouter des informations d’identification fédérées dans le portail Azure ou avec l’API REST Microsoft Graph.

  1. Accédez à Inscriptions d’applications dans le portail Azure et ouvrez l’application que vous souhaitez configurer.
  2. Dans l’application, accédez à Certificats et secrets.
    Select Certificates & secrets.
  3. Dans l’onglet Informations d’identification fédérées, sélectionnez Ajouter des informations d’identification. Add the federated credential
  4. Sélectionnez le scénario d’informations d’identification GitHub Actions deploying Azure resources. Entrez les détails de vos informations d’identification pour les générer.
Champ Description Exemple
Organization Nom de votre organisation GitHub ou nom d’utilisateur GitHub. contoso
Référentiel Nom de votre dépôt GitHub. contoso-app
Type d'entité Filtre utilisé pour définir l’étendue des demandes OIDC des workflows GitHub. Ce champ est utilisé pour générer la revendication subject. Environment, , BranchPull request, ,Tag
Nom GitHub Nom de l’environnement, de la branche ou de l’étiquette. main
Nom Identificateur des informations d’identification fédérées. contoso-deploy

Pour obtenir une vue d’ensemble plus détaillée, consultez Configurer une application pour approuver un dépôt GitHub.

Créer des secrets GitHub

Vous devez fournir l’ID de client, l’ID de locataire et l’ID d’abonnement de votre application à l’action de connexion. Vous pouvez fournir ces valeurs directement dans le workflow ou les stocker dans des secrets GitHub et les référencer dans votre workflow. L’enregistrement des valeurs en tant que secrets GitHub est l’option la plus sécurisée.

  1. Ouvrez votre dépôt GitHub et accédez à Settings (Paramètres).

    Select Settings in the navigation

  2. Sélectionnez Sécurité > Secrets et variables > Actions.

    Choose to add a secret

  3. Créez des secrets pour AZURE_CLIENT_ID, AZURE_TENANT_ID et AZURE_SUBSCRIPTION_ID. Utilisez ces valeurs de votre application Azure Active Directory pour vos secrets GitHub :

    Secret GitHub Application Azure Active Directory
    AZURE_CLIENT_ID ID d’application (client)
    AZURE_TENANT_ID ID de l’annuaire (locataire)
    AZURE_SUBSCRIPTION_ID Identifiant d’abonnement
  4. Enregistrez chaque secret en sélectionnant Ajouter un secret.

Configurer Azure Login avec l’authentification OpenID Connect

Votre workflow GitHub Actions utilise OpenID Connect pour s’authentifier auprès d’Azure. Pour en savoir plus sur cette interaction, consultez la documentation sur GitHub Actions.

Dans cet exemple, vous allez utiliser OpenID Connecter Azure CLI pour vous authentifier auprès d’Azure avec l’action de connexion Azure. L’exemple utilise des secrets GitHub pour les valeurs client-id, tenant-id et subscription-id. Vous pouvez également passer ces valeurs directement dans l’action login.

L’action de connexion Azure inclut un paramètre d’entrée facultatif audience qui est défini par défaut api://AzureADTokenExchangesur . Vous pouvez mettre à jour ce paramètre pour les valeurs d’audience personnalisées.

Ce flux de travail s’authentifie auprès d’OpenID Connecter et utilise Azure CLI pour obtenir les détails de l’abonnement connecté et du groupe de ressources de liste.

name: Run Azure Login with OpenID Connect
on: [push]

permissions:
      id-token: write
      contents: read
      
jobs: 
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: 'Az CLI login'
      uses: azure/login@v1
      with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
  
    - name: 'Run Azure CLI commands'
      run: |
          az account show
          az group list
          pwd 

Vérifier la réussite de la connexion Azure avec OpenID

Ouvrez l’action Az CLI login et vérifiez qu’elle a bien abouti. Vous devriez voir le message Login successful. Si votre connexion échoue, vous voyez le message Az CLI Login failed..

GitHub Actions Azure Login successful.

Utiliser l’action Azure login avec un secret de principal de service

Pour utiliser Azure login avec un principal de service, vous devez d’abord ajouter votre principal de service Azure en tant que secret à votre dépôt GitHub.

Créer un principal du service

Dans cet exemple, vous créez un secret nommé AZURE_CREDENTIALS que vous pourrez utiliser pour vous authentifier auprès d’Azure.

  1. Ouvrez Azure Cloud Shell sur le portail Azure ou Azure CLI localement.

    Remarque

    Si vous utilisez Azure Stack Hub, vous devez définir votre point de terminaison d’administration SQL sur not supported. az cloud update -n {environmentName} --endpoint-sql-management https://notsupported

  2. Créez un principal de service pour votre application dans le portail Azure. Le principal de service doit être affecté à un rôle approprié.

        az ad sp create-for-rbac --name "myApp" --role contributor \
                                    --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \
                                    --json-auth
    

    Le paramètre --json-auth génère le dictionnaire de résultats accepté par l’action de connexion, accessible dans les versions >d’Azure CLI = 2.51.0. Les versions antérieures à celle-ci utilisent --sdk-auth avec un avertissement de dépréciation.

  3. Copiez l’objet JSON pour votre principal de service.

    {
        "clientId": "<GUID>",
        "clientSecret": "<GUID>",
        "subscriptionId": "<GUID>",
        "tenantId": "<GUID>",
        (...)
    }
    

Ajouter le principal de service en tant que secret GitHub

  1. Dans GitHub, accédez à votre dépôt.

  2. Sélectionnez Paramètres dans le volet de navigation.

  3. Sélectionnez Sécurité > Secrets et variables > Actions.

    Screenshot of select Actions menu item.

  4. Sélectionnez New repository secret (Nouveau secret de dépôt).

  5. Collez l’intégralité de la sortie JSON de la commande Azure CLI dans le champ de valeur du secret. Nommez le secret AZURE_CREDENTIALS.

  6. Sélectionnez Ajouter un secret.

Utiliser l’action de connexion Azure

Utilisez le secret du principal de service avec l’action Connexion Azure pour vous authentifier auprès d’Azure.

Dans ce workflow, vous vous authentifiez à l’aide de l’action Connexion Azure avec les détails du principal de service stockés dans secrets.AZURE_CREDENTIALS. Ensuite, vous exécutez une action Azure CLI. Pour plus d’informations sur le référencement des secrets GitHub dans un fichier de workflow, consultez Utilisation de secrets chiffrés dans un workflow dans les documents GitHub.

Une fois que vous disposez d’une étape de connexion Azure active, vous pouvez utiliser les actions Azure PowerShell ou Azure CLI. Vous pouvez aussi utiliser d’autres actions Azure comme Déployer une application web Azure et Azure Functions.

on: [push]

name: AzureLoginSample

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Log in with Azure
        uses: azure/login@v1
        with:
          creds: '${{ secrets.AZURE_CREDENTIALS }}'

Utiliser l’action Azure PowerShell

Dans cet exemple, vous vous connectez en utilisant l’action Connexion Azure, puis récupérez un groupe de ressources avec l’action Azure PowerShell.

on: [push]

name: AzureLoginSample

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Log in with Azure
        uses: azure/login@v1
        with:
          creds: '${{ secrets.AZURE_CREDENTIALS }}'
          enable-AzPSSession: true
      - name: Azure PowerShell Action
        uses: Azure/powershell@v1
        with:
          inlineScript: Get-AzResourceGroup -Name "< YOUR RESOURCE GROUP >"
          azPSVersion: "latest"

Utiliser l’action Azure CLI

Dans cet exemple, vous vous connectez en utilisant l’action de connexion Azure, puis vous obtenez un groupe de ressources avec l’action Azure CLI.

on: [push]

name: AzureLoginSample

jobs:
build-and-deploy:
  runs-on: ubuntu-latest
  steps:

    - name: Log in with Azure
      uses: azure/login@v1
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Azure CLI script
      uses: azure/CLI@v1
      with:
          azcliversion: 2.0.72
          inlineScript: |
            az account show
            az storage -h

Se connecter aux clouds Azure Government et Azure Stack Hub

Pour vous connecter à l’un des clouds Azure Government, définissez le paramètre facultatif « environment » avec les noms de cloud pris en charge AzureUSGovernment ou AzureChinaCloud. Si ce paramètre n’est pas spécifié, il prend la valeur par défaut AzureCloud et se connecte au cloud public Azure.

   - name: Login to Azure US Gov Cloud with CLI
     uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
          environment: 'AzureUSGovernment'
          enable-AzPSSession: false
   - name: Login to Azure US Gov Cloud with Az Powershell
      uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
          environment: 'AzureUSGovernment'
          enable-AzPSSession: true

Se connecter à partir d’autres services Azure

Les articles suivants fournissent des informations sur la connexion à GitHub à partir d’Azure et d’autres services.

Microsoft Entra ID

Power BI

Connecteurs

Azure Databricks