Partager via


Intégrer Azure Key Vault dans un workflow GitHub Actions

Intégrez Azure Key Vault à votre flux de travail GitHub Actions pour gérer en toute sécurité les informations d’identification sensibles dans un seul endroit. Cette approche réduit le risque d’exposition accidentelle ou d’accès non autorisé aux données sensibles.

Cet exemple de flux de travail GitHub Actions montre comment récupérer en toute sécurité des secrets à partir d’Azure Key Vault à l’aide de l’authentification OpenID Connect (OIDC).

Conditions préalables

  • Configurez un certificat d'identité fédérée sur une application Microsoft Entra ou une identité managée attribuée par l'utilisateur. Découvrez comment s’authentifier auprès d’Azure à partir de GitHub Actions par OpenID Connect. Lorsque vous configurez vos informations d’identification fédérées, stockez ces secrets dans GitHub :
    • AZURE_CLIENT_ID: ID client de votre principal de service Azure.
    • AZURE_TENANT_ID: ID de client Azure AD.
    • AZURE_SUBSCRIPTION_ID: ID de votre abonnement Azure.
    • KEYVAULT_NAME: nom de votre coffre de clés.
  • Accorder des autorisations : vérifiez que le principal de service dispose d’un accès approprié au coffre de clés (par exemple, rôle « Utilisateur des secrets Key Vault »).
  • Remplacez <SECRET_NAME> par votre nom de secret Key Vault.

Exemple de flux de travail GitHub Actions

Ce que fait le flux de travail :

  • Déclencheurs sur les envois (push) vers la branche principale
  • Utilise l’authentification OIDC pour se connecter à Azure (aucun mot de passe stocké dans GitHub)
  • Récupère un secret à partir d’Azure Key Vault
  • Masque la valeur secrète avec ::add-mask:: afin de l’empêcher d’apparaître dans les journaux.
  • Rend le secret disponible en tant que variable d’environnement pour les étapes suivantes
name: Access Azure Key Vault and pass secret to workflow

on:
  push:
    branches:
      - main

permissions:
  id-token: write
  contents: read

jobs:
  get-secret:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Azure 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: Retrieve secret from Key Vault
        id: keyvault
        uses: azure/CLI@v1
        with:
          inlineScript: |
            SECRET_VALUE=$(az keyvault secret show --name <SECRET_NAME> --vault-name ${{ secrets.KEYVAULT_NAME }} --query value -o tsv)
            echo "::add-mask::$SECRET_VALUE"
            echo "SECRET_VALUE=$SECRET_VALUE" >> $GITHUB_ENV
      - name: Use retrieved secret
        run: echo "The secret is successfully retrieved!"

      - name: Use SECRET_VALUE in deployment
        run: |
          ./deploy.sh
        env:
          SECRET_VALUE: ${{ env.SECRET_VALUE }}

Ressources supplémentaires