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:
- Dienstprinzipal mit Geheimnissen
- OpenID-Verbinden (OIDC) mit einem Azure-Dienstprinzipal mithilfe einer Verbundidentitäts-Anmeldeinformationen
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.
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
Ö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.
Ö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.
- Wechseln Sie zu App-Registrierungen im Azure-Portal, und öffnen Sie die App, die Sie konfigurieren möchten.
- Wechseln Sie in der App zu Zertifikate und Geheimnisse.
- Wählen Sie auf der Registerkarte Verbundanmeldeinformationen die Option Anmeldeinformationen hinzufügen aus.
- 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 , , Branch Pull request Tag |
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.
Öffnen Sie Ihr GitHub-Repository, und navigieren Sie zu Einstellungen.
Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.
Erstellen Sie Geheimnisse für
AZURE_CLIENT_ID
,AZURE_TENANT_ID
undAZURE_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 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.
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.
Ö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
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.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
Wechseln Sie in GitHub zu Ihrem Repository.
Gehen Sie im Navigationsmenü auf Einstellungen.
Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.
Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.
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
.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.