Azure Key Vault integreren in een GitHub Actions-werkstroom

Integreer Azure Key Vault in uw GitHub Actions-werkstroom om gevoelige referenties op één plaats veilig te beheren. Deze aanpak vermindert het risico op onbedoelde blootstelling of onbevoegde toegang tot gevoelige gegevens.

Deze voorbeeldwerkstroom voor GitHub Actions laat zien hoe u geheimen veilig ophaalt uit Azure Key Vault met behulp van OIDC-verificatie (OpenID Connect).

Vereiste voorwaarden

  • Configureer een federatieve identiteitsreferentie in een Microsoft Entra-toepassing of een door de gebruiker toegewezen beheerde identiteit. Meer informatie over verificatie bij Azure vanuit GitHub Actions door OpenID Connect. Wanneer u uw federatieve referenties instelt, slaat u deze geheimen op in GitHub:
    • AZURE_CLIENT_ID: de client-id van uw Azure-service-principal.
    • AZURE_TENANT_ID: uw Azure AD-tenant-id.
    • AZURE_SUBSCRIPTION_ID: uw Azure-abonnements-id.
    • KEYVAULT_NAME: de naam van uw sleutelkluis.
  • Machtigingen verlenen: zorg ervoor dat de service-principal de juiste toegang heeft tot de Sleutelkluis (bijvoorbeeld de rol Key Vault Secrets User).
  • Vervang door <SECRET_NAME> de naam van uw Key Vault-geheim.

Voorbeeld van gitHub Actions-werkstroom

Wat de werkstroom doet:

  • Triggers bij pushes naar de hoofdbranch
  • Maakt gebruik van OIDC-verificatie om verbinding te maken met Azure (geen wachtwoorden die zijn opgeslagen in GitHub)
  • Hiermee haalt u een geheim op uit Azure Key Vault
  • Maskert de geheime waarde met ::add-mask:: om te voorkomen dat deze wordt weergegeven in logboeken
  • Maakt het geheim beschikbaar als een omgevingsvariabele voor volgende stappen
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 }}

Aanvullende bronnen