Condividi tramite


Integrare Azure Key Vault in un flusso di lavoro di GitHub Actions

Integrare Azure Key Vault nel flusso di lavoro di GitHub Actions per gestire in modo sicuro le credenziali sensibili in un'unica posizione. Questo approccio riduce il rischio di esposizione accidentale o accesso non autorizzato ai dati sensibili.

Questo flusso di lavoro di esempio di GitHub Actions illustra come recuperare in modo sicuro i segreti da Azure Key Vault usando l'autenticazione OIDC (OpenID Connect).

Prerequisiti

  • Configurare una credenziale di identità federata in un'applicazione Microsoft Entra o in un'identità gestita assegnata dall'utente. Scopri come eseguire l'autenticazione su Azure tramite GitHub Actions utilizzando OpenID Connect. Quando si configurano le credenziali federate, archiviare questi segreti in GitHub:
    • AZURE_CLIENT_ID: ID del client del principale del servizio di Azure.
    • AZURE_TENANT_ID: ID tenant di Azure AD.
    • AZURE_SUBSCRIPTION_ID: ID sottoscrizione di Azure.
    • KEYVAULT_NAME: il nome del Key Vault.
  • Concedere le autorizzazioni: assicurarsi che l'entità servizio disponga dell'accesso appropriato al Key Vault, ad esempio il ruolo "Key Vault Secrets User".
  • Sostituire <SECRET_NAME> con il nome del segreto di Key Vault.

Esempio di flusso di lavoro di GitHub Actions

Operazioni del flusso di lavoro:

  • I trigger durante i push nel ramo principale
  • Usa l'autenticazione OIDC per connettersi ad Azure (nessuna password archiviata in GitHub)
  • Recupera un segreto da Azure Key Vault
  • Maschera il valore del segreto con ::add-mask:: per impedirne la visualizzazione nei log
  • Rende il segreto disponibile come variabile di ambiente per i passaggi successivi
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 }}

Risorse aggiuntive