Az Azure Key Vault integrálása GitHub Actions-munkafolyamatba

Integrálhatja az Azure Key Vaultot a GitHub Actions-munkafolyamatba a bizalmas hitelesítő adatok biztonságos kezelése érdekében egy helyen. Ez a megközelítés csökkenti a bizalmas adatok véletlen expozíciójának vagy jogosulatlan hozzáférésének kockázatát.

Ez a GitHub Actions-minta-munkafolyamat bemutatja, hogyan lehet biztonságosan lekérni a titkos kulcsokat az Azure Key Vaultból OpenID Connect (OIDC) hitelesítéssel.

Előfeltételek

  • A Microsoft Entra alkalmazáson vagy egy felhasználó által hozzárendelt felügyelt identitáson konfiguráljon összevont identitáshitelesítő adatot. Megtudhatja, hogyan végezhet hitelesítést az Azure-ban a GitHub Actions by OpenID Connect használatával. Az összevont hitelesítő adatok beállításakor tárolja ezeket a titkos kulcsokat a GitHubon:
    • AZURE_CLIENT_ID: Az Azure szolgáltatásfőszereplő ügyfélazonosítója.
    • AZURE_TENANT_ID: Az Azure AD-bérlői azonosító.
    • AZURE_SUBSCRIPTION_ID: Az Azure-előfizetés azonosítója.
    • KEYVAULT_NAME: A Key Vault neve.
  • Engedélyek megadása: Győződjön meg arról, hogy a szolgáltatási főazonosító megfelelő hozzáféréssel rendelkezik a Kulcstárhoz (például a "Kulcstár titkos jelszavak felhasználó" szerepkör).
  • Cserélje le <SECRET_NAME> a Key Vault titkos nevére.

GitHub Actions-munkafolyamat-minta

A munkafolyamat feladata:

  • Triggereket a fő ágba történő pusholásokkor
  • OIDC-hitelesítést használ az Azure-hoz való csatlakozáshoz (a GitHubon tárolt jelszavak nélkül)
  • Titkos kód lekérése az Azure Key Vaultból
  • Maszkolja a titkos értéket ::add-mask:: , hogy ne jelenjen meg a naplókban
  • A titkos kód elérhetővé válik környezeti változóként a következő lépésekhez
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 }}

További erőforrások