Sdílet prostřednictvím


Integrace služby Azure Key Vault do pracovního postupu GitHub Actions

Integrujte Azure Key Vault do pracovního postupu GitHub Actions, abyste mohli bezpečně spravovat citlivé přihlašovací údaje na jednom místě. Tento přístup snižuje riziko náhodného vystavení nebo neoprávněného přístupu k citlivým datům.

Tento ukázkový pracovní postup GitHub Actions ukazuje, jak bezpečně načíst tajné kódy ze služby Azure Key Vault pomocí ověřování OpenID Connect (OIDC).

Požadavky

  • Nakonfigurujte přihlašovací údaje federované identity v aplikaci Microsoft Entra nebo spravované identitě přiřazené uživatelem. Zjistěte, jak provést ověření v Azure z GitHub Actions pomocí OpenID Connect. Při nastavování federovaných přihlašovacích údajů uložte tyto tajné kódy na GitHubu:
    • AZURE_CLIENT_ID: ID klienta služebního objektu Azure.
    • AZURE_TENANT_ID: ID tenanta Azure AD.
    • AZURE_SUBSCRIPTION_ID: ID vašeho předplatného Azure.
    • KEYVAULT_NAME: Název služby Key Vault.
  • Udělení oprávnění: Ujistěte se, že má služební principál odpovídající přístup k Key Vault (například role Uživatel tajemství služby Key Vault).
  • Nahraďte <SECRET_NAME> názvem tajného kódu služby Key Vault.

Ukázka pracovního postupu GitHub Actions

Co pracovní postup dělá:

  • Spouštěče při odeslání na hlavní větev
  • Používá ověřování OIDC pro připojení k Azure (žádná hesla uložená na GitHubu).
  • Načte tajný klíč ze služby Azure Key Vault.
  • Maskuje hodnotu tajného kódu, ::add-mask:: aby se zabránilo zobrazení v protokolech.
  • Zpřístupní utajovanou informaci jako proměnnou prostředí pro následné kroky.
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 }}

Dodatečné zdroje