Verwenden von GitHub Actions zum Herstellen einer Verbindung mit Azure

Informieren Sie sich über die Verwendung der Azure-Anmeldung mit Azure PowerShell oder Azure CLI, um die Interaktion mit Ihren Azure-Ressourcen zu ermöglichen.

Für die Verwendung von Azure PowerShell oder der Azure CLI in einem GitHub Actions-Workflow müssen Sie sich zuerst mit der Aktion Azure-Anmeldung anmelden.

Die Azure-Anmeldeaktion unterstützt zwei verschiedene Möglichkeiten der Authentifizierung bei Azure:

Standardmäßig protokolliert sich die Anmeldeaktion mit der Azure CLI und richtet die GitHub Actions-Runner-Umgebung für Azure CLI ein. Azure PowerShell kann mithilfe der Eigenschaft enable-AzPSSession der Azure-Anmeldeaktion genutzt werden. Dadurch wird die GitHub Actions runner-Umgebung mit dem Azure PowerShell-Modul eingerichtet.

Sie können die Azure-Anmeldung verwenden, um eine Verbindung mit öffentlichen oder unabhängigen (Sovereign) Clouds herzustellen, z. B. Azure Government und Azure Stack Hub.

Verwenden der Azure-Anmeldeaktion mit OpenID Connect

Um eine Azure-Anmeldung mit OpenID Connect einzurichten und sie in einem GitHub Actions-Workflow zu verwenden, benötigen Sie Folgendes:

  • Eine Microsoft Entra-Anwendung mit einem Dienstprinzipal, der Ihrem Abonnement eine entsprechende Rolle zugewiesen wurde.
  • Eine Microsoft Entra-Anwendung, die mit einer Verbundanmeldeinformation konfiguriert ist, um Token zu vertrauen, die von GitHub-Aktionen an Ihr GitHub-Repository ausgestellt wurden. Sie können dies im Azure-Portal oder mit Microsoft Graph-REST-APIs konfigurieren.
  • Ein GitHub-Aktionen-Workflow, der GitHub-Ausgabetoken an den Workflow anfordert und die Azure-Anmeldeaktion verwendet.

Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals

Sie müssen einen Microsoft Entra-Anwendungsprinzipal und einen Dienstprinzipal erstellen und dann Ihrer Anwendung eine Rolle für Ihr Abonnement zuweisen, damit Ihr Workflow Zugriff auf Ihr Abonnement hat.

  1. Wenn Sie nicht über eine vorhandene Anwendung verfügen, registrieren Sie eine neue Microsoft Entra-Anwendung und einen Neuen Dienstprinzipal, der auf Ressourcen zugreifen kann. Achten Sie bei diesem Prozess auf Folgendes:

    • Registrieren Sie Ihre Anwendung mit der Microsoft Entra-ID, und erstellen Sie einen Dienstprinzipal.
    • Zuweisen einer Rolle zur Anwendung
  2. Öffnen Sie App-Registrierungen im Azure-Portal, und suchen Sie Ihre Anwendung. Kopieren Sie die Werte für Anwendungs-ID (Client) und Verzeichnis-ID (Mandant) zur Verwendung in Ihrem GitHub Actions-Workflow.

  3. Öffnen Sie Abonnements im Azure-Portal, und suchen Sie Ihr Abonnement. Kopieren Sie die Abonnement-ID.

Hinzufügen von Verbundanmeldeinformationen

Sie können Verbundanmeldeinformationen im Azure-Portal oder mit der Microsoft Graph-REST-API hinzufügen.

  1. Wechseln Sie zu App-Registrierungen im Azure-Portal, und öffnen Sie die App, die Sie konfigurieren möchten.
  2. Wechseln Sie in der App zu Zertifikate und Geheimnisse.
    Select Certificates & secrets.
  3. Wählen Sie auf der Registerkarte Verbundanmeldeinformationen die Option Anmeldeinformationen hinzufügen aus. Add the federated credential
  4. Wählen Sie das Anmeldeinformationsszenario GitHub Actions stellt die Azure-Ressourcen bereit aus. Generieren Sie Ihre Anmeldeinformationen, indem Sie Details zu Ihren Anmeldeinformationen eingeben.
Feld Beschreibung Beispiel
Organisation Ihr GitHub-Organisationsname oder GitHub-Benutzername. contoso
Repository Der Name Ihres GitHub-Repositorys. contoso-app
Entitätstyp Der Filter, der verwendet wird, um die OIDC-Anforderungen von GitHub-Workflows zu erfassen. Dieses Feld wird verwendet, um den Anspruch subject zu generieren. Environment, , BranchPull requestTag
GitHub-Name Der Name der Umgebung, des Branchs oder des Tags. main
Name Bezeichner für die Verbundanmeldeinformationen. contoso-deploy

Eine ausführlichere Übersicht finden Sie unter Konfigurieren einer Vertrauensstellung zwischen einer App und einem GitHub-Repository (Vorschauversion).

Erstellen von GitHub-Geheimnissen

Sie müssen die Client-ID Ihrer Anwendung, die Mandanten-ID und die Abonnement-ID für die Anmeldeaktion bereitstellen. Diese Werte können entweder direkt im Workflow bereitgestellt werden oder in GitHub-Geheimnissen gespeichert und darauf in Ihrem Workflow verwiesen werden. Das Speichern der Werte als GitHub-Geheimnisse ist die sicherere Option.

  1. Öffnen Sie Ihr GitHub-Repository, und navigieren Sie zu Einstellungen.

    Select Settings in the navigation

  2. Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.

    Choose to add a secret

  3. Erstellen Sie Geheimnisse für AZURE_CLIENT_ID, AZURE_TENANT_ID und AZURE_SUBSCRIPTION_ID. Verwenden Sie diese Werte aus Ihrer Azure Active Directory-Anwendung für Ihre GitHub-Geheimnisse:

    GitHub-Geheimnis Azure Active Directory-Anwendung
    AZURE_CLIENT_ID Anwendungs-ID (Client)
    AZURE_TENANT_ID Verzeichnis-ID (Mandant)
    AZURE_SUBSCRIPTION_ID Abonnement-ID
  4. Speichern Sie jedes Geheimnis, indem Sie Geheimnis hinzufügen auswählen.

Einrichten der Azure-Anmeldung mit OpenID Connect-Authentifizierung

Ihr GitHub Actions-Workflow verwendet OpenID Connect für die Authentifizierung bei Azure. Weitere Informationen zu dieser Interaktion finden Sie in der Dokumentation zu GitHub Actions.

In diesem Beispiel verwenden Sie OpenID Verbinden Azure CLI, um sich mit Azure mit der Azure-Anmeldeaktion zu authentifizieren. Im Beispiel werden GitHub-Geheimnisse für die Werte client-id, tenant-id und subscription-id verwendet. Sie können diese Werte auch direkt in der Anmeldeaktion übergeben.

Die Azure-Anmeldeaktion enthält einen optionalen audience Eingabeparameter, der standardmäßig auf api://AzureADTokenExchange. Sie können diesen Parameter für benutzerdefinierte Zielgruppenwerte aktualisieren.

Dieser Workflow authentifiziert sich mit OpenID Verbinden und verwendet Azure CLI, um die Details der verbundenen Abonnement- und Listenressourcengruppe abzurufen.

name: Run Azure Login with OpenID Connect
on: [push]

permissions:
      id-token: write
      contents: read
      
jobs: 
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: 'Az CLI 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: 'Run Azure CLI commands'
      run: |
          az account show
          az group list
          pwd 

Überprüfen der erfolgreichen Azure-Anmeldung mit OpenID

Öffnen Sie die Aktion Az CLI login, und überprüfen Sie, ob sie erfolgreich ausgeführt wurde. Die Meldung Login successful sollte angezeigt werden. Wenn Ihre Anmeldung nicht erfolgreich ist, wird die Meldung Az CLI Login failed. angezeigt.

GitHub Actions Azure Login successful.

Verwenden der Azure-Anmeldeaktion mit einem Dienstprinzipalgeheimnis

Zur Verwendung der Azure-Anmeldung mit einem Dienstprinzipal müssen Sie Ihren Azure-Dienstprinzipal zunächst Ihrem GitHub-Repository als Geheimnis hinzufügen.

Erstellen eines Dienstprinzipals

In diesem Beispiel erstellen Sie ein Geheimnis mit dem Namen AZURE_CREDENTIALS, das Sie für die Authentifizierung bei Azure verwenden können.

  1. Öffnen Sie Azure Cloud Shell im Azure-Portal oder lokal die Azure CLI.

    Hinweis

    Bei Verwendung von Azure Stack Hub müssen Sie Ihren SQL Management-Endpunkt auf not supported festlegen. az cloud update -n {environmentName} --endpoint-sql-management https://notsupported

  2. Erstellen Sie im Azure-Portal für Ihre App einen neuen Dienstprinzipal. Der Dienstprinzipal muss einer entsprechenden Rolle zugewiesen werden.

        az ad sp create-for-rbac --name "myApp" --role contributor \
                                    --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \
                                    --json-auth
    

    Der Parameter --json-auth gibt das Von der Anmeldeaktion akzeptierte Ergebniswörterbuch aus, auf das in Azure CLI-Versionen >zugegriffen werden kann = 2.51.0. Frühere Versionen nutzen --sdk-auth mit einer Einstellungswarnung.

  3. Kopieren Sie das JSON-Objekt für Ihren Dienstprinzipal.

    {
        "clientId": "<GUID>",
        "clientSecret": "<GUID>",
        "subscriptionId": "<GUID>",
        "tenantId": "<GUID>",
        (...)
    }
    

Hinzufügen des Dienstprinzipals als GitHub-Geheimschlüssel

  1. Wechseln Sie in GitHub zu Ihrem Repository.

  2. Gehen Sie im Navigationsmenü auf Einstellungen.

  3. Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.

    Screenshot of select Actions menu item.

  4. Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.

  5. Fügen Sie die gesamte JSON-Ausgabe aus dem Azure CLI-Befehl in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis den Namen AZURE_CREDENTIALS.

  6. Klicken Sie auf Add secret (Geheimnis hinzufügen).

Verwenden der Aktion „Azure-Anmeldung“

Verwenden Sie das Dienstprinzipalgeheimnis mit der Aktion „Azure-Anmeldung“, um die Authentifizierung bei Azure durchzuführen.

In diesem Workflow authentifizieren Sie sich mit der Aktion „Azure-Anmeldung“ und den Dienstprinzipaldetails, die in secrets.AZURE_CREDENTIALS gespeichert sind. Anschließend führen Sie eine Azure CLI-Aktion aus. Weitere Informationen zum Verweisen auf GitHub-Geheimnisse in einer Workflowdatei finden Sie in den GitHub-Dokumentationen unter Verwenden verschlüsselter Geheimnisse in einem Workflow.

Wenn Sie über einen funktionierenden Schritt zur Azure-Anmeldung verfügen, können Sie die Azure PowerShell- oder Azure CLI-Aktionen verwenden. Sie können auch andere Azure-Aktionen wie die Azure-Web-App-Bereitstellung und Azure-Funktionen verwenden.

on: [push]

name: AzureLoginSample

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Log in with Azure
        uses: azure/login@v1
        with:
          creds: '${{ secrets.AZURE_CREDENTIALS }}'

Verwenden der Azure PowerShell-Aktion

In diesem Beispiel melden Sie sich mit der Aktion „Azure-Anmeldung“ an und rufen dann mit der Azure PowerShell-Aktion eine Ressourcengruppe ab.

on: [push]

name: AzureLoginSample

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Log in with Azure
        uses: azure/login@v1
        with:
          creds: '${{ secrets.AZURE_CREDENTIALS }}'
          enable-AzPSSession: true
      - name: Azure PowerShell Action
        uses: Azure/powershell@v1
        with:
          inlineScript: Get-AzResourceGroup -Name "< YOUR RESOURCE GROUP >"
          azPSVersion: "latest"

Verwenden der Azure CLI-Aktion

In diesem Beispiel melden Sie sich mit der Aktion „Azure-Anmeldung“ an und rufen dann mit der Azure CLI-Aktion eine Ressourcengruppe ab.

on: [push]

name: AzureLoginSample

jobs:
build-and-deploy:
  runs-on: ubuntu-latest
  steps:

    - name: Log in with Azure
      uses: azure/login@v1
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Azure CLI script
      uses: azure/CLI@v1
      with:
          azcliversion: 2.0.72
          inlineScript: |
            az account show
            az storage -h

Herstellen einer Verbindung mit Azure Government- und Azure Stack Hub-Clouds

Legen Sie für die Anmeldung bei einer Azure Government-Cloud die optionale Parameterumgebung mit den unterstützten Cloudnamen AzureUSGovernment oder AzureChinaCloud fest. Wenn dieser Parameter nicht angegeben ist, wird der Standardwert AzureCloud verwendet und eine Verbindung mit der öffentlichen Azure-Cloud hergestellt.

   - name: Login to Azure US Gov Cloud with CLI
     uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
          environment: 'AzureUSGovernment'
          enable-AzPSSession: false
   - name: Login to Azure US Gov Cloud with Az Powershell
      uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
          environment: 'AzureUSGovernment'
          enable-AzPSSession: true

Herstellen einer Verbindung mit anderen Azure-Diensten

In den folgenden Artikeln finden Sie ausführliche Informationen zum Herstellen einer Verbindung mit GitHub aus Azure und anderen Diensten.

Microsoft Entra ID

Power BI

Connectors

Azure Databricks