Integrera Azure Key Vault i ett GitHub Actions-arbetsflöde

Integrera Azure Key Vault i ditt GitHub Actions-arbetsflöde för att hantera känsliga autentiseringsuppgifter på ett säkert sätt. Den här metoden minskar risken för oavsiktlig exponering eller obehörig åtkomst till känsliga data.

Det här GitHub Actions-exempelarbetsflödet visar hur du på ett säkert sätt hämtar hemligheter från Azure Key Vault med hjälp av OIDC-autentisering (OpenID Connect).

Förutsättningar

  • Konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program eller en användartilldelad hanterad identitet. Lär dig hur du autentiserar till Azure från GitHub Actions via OpenID Connect. När du konfigurerar dina federerade autentiseringsuppgifter lagrar du dessa hemligheter i GitHub:
    • AZURE_CLIENT_ID: Ditt Azure-tjänsthuvudnamns klient-ID.
    • AZURE_TENANT_ID: Ditt Azure AD-klient-ID.
    • AZURE_SUBSCRIPTION_ID: Ditt Azure-prenumerations-ID.
    • KEYVAULT_NAME: Ditt Key Vault-namn.
  • Bevilja behörigheter: Kontrollera att tjänsthuvudet har rätt tillgång till nyckelvalvet (till exempel rollen "Key Vault Secrets User").
  • Ersätt <SECRET_NAME> med ditt nyckelvalvshemlighetsnamn.

Exempel på GitHub Actions-arbetsflöde

Vad arbetsflödet gör:

  • Utlösare vid push-överföring till huvudgrenen
  • Använder OIDC-autentisering för att ansluta till Azure (inga lösenord lagras i GitHub)
  • Hämtar en hemlighet från Azure Key Vault
  • Maskerar det hemliga värdet med ::add-mask:: för att förhindra att det visas i loggar
  • Gör hemligheten tillgänglig som en miljövariabel för efterföljande steg
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 }}

Ytterligare resurser