Überblick
OpenID Connect (OIDC) ermöglicht Ihren GitHub Actions Workflows den Zugriff auf Ressourcen in Azure, ohne die Azure-Anmeldeinformationen als langlebige GitHub geheime Schlüssel zu speichern.
In diesem Leitfaden finden Sie eine Übersicht darüber, wie Sie Azure so konfigurieren, dass GitHubes dem OIDC als Verbundidentität vertraut, und enthält ein Workflowbeispiel für die Aktion, die Token für die azure/login Authentifizierung bei Azure verwendet und auf Ressourcen zugreift.
Voraussetzungen
-
Informationen zu den grundlegenden Konzepten, nach denen GitHub OpenID Connect (OIDC) sowie die Architektur und Vorteile des Protokolls verwendet, findest du unter OpenID Connect.
-
Bevor du fortfährst, musst du deine Sicherheitsstrategie planen, um sicherzustellen, dass Zugriffs-Token nur auf vorhersehbare Weise zugewiesen werden. Zur Steuerung, wie dein Cloud-Anbieter Zugriffs-Token ausgibt, musst du mindestens eine Bedingung definieren, damit nicht vertrauenswürdige Repositorys keine Zugriffs-Token für deine Cloud-Ressourcen anfordern können. Weitere Informationen finden Sie unter OpenID Connect.
-
Beachte, dass du bestimmte Werte in der folgenden Dokumentation ersetzen musst, wenn du den Leitfaden auf GHE.com verwendest. Weitere Informationen findest du unter OpenID Connect.
Hinzufügen der Verbundanmeldeinformationen zu Azure
GitHubDer OIDC-Anbieter arbeitet mit dem Workload-Identitätsverbund von Azure zusammen. Eine Übersicht finden Sie in der Microsoft-Dokumentation unter [Workloadidentitätsverbund](https://docs.microsoft.com/en-us/azure/active-directory/develop/workload-identity-federation).
Um den OIDC-Identitätsanbieter in Azure zu konfigurieren, müssen Sie die folgende Konfiguration ausführen. Anweisungen zum Vornehmen dieser Änderungen finden Sie in the Azure documentation.
Im folgenden Verfahren erstellen Sie eine Anwendung für die Microsoft Entra-ID (zuvor azure AD genannt).
- Erstellen einer Entra-ID-Anwendung und eines Dienstprinzipals.
- Fügen Sie Verbundanmeldeinformationen für die Entra-ID-Anwendung hinzu.
- Erstellen Sie GitHub geheime Schlüssel zum Speichern der Azure-Konfiguration.
Weitere Anleitungen zum Konfigurieren des Identitätsanbieters:
- Lesen Sie OpenID Connect zum Thema Sicherheitshärtung. Ein Beispiel findest du unter OpenID Connect.
- Für die Einstellung
audiencewird der Wertapi://AzureADTokenExchangeempfohlen. Sie können hier jedoch auch andere Werte angeben.
Aktualisieren des GitHub Actions Workflows
Um deine Workflows für OIDC zu aktualisieren, musst du zwei Änderungen an deinen YAML-Daten vornehmen:
- Füge die Berechtigungseinstellungen für das Token hinzu.
- Verwenden Sie die Aktion
azure/login, um das OIDC-Token (JWT) für ein Cloudzugriffstoken auszutauschen.
Hinweis
Wenn Umgebungen in Workflows oder in OIDC-Richtlinien verwendet werden, wird empfohlen, der Umgebung Schutzregeln für zusätzliche Sicherheit hinzuzufügen. Du kannst z. B. Bereitstellungsregeln für eine Umgebung konfigurieren, um einzuschränken, welche Verzweigungen und Tags in der Umgebung oder in geheimen Umgebungsschlüsseln bereitgestellt werden können. Weitere Informationen finden Sie unter Verwalten von Umgebungen für die Bereitstellung.
Hinzufügen von Berechtigungseinstellungen
Für die Job- oder Workflow-Ausführung ist eine permissions-Einstellung mit id-token: write erforderlich, damit der OIDC-Anbieter von GitHub für jede Ausführung einen JSON-Web-Token erstellen kann.
Hinweis
Wenn du id-token: write in den Berechtigungen des Workflows festlegst, erhält der Workflow keine Berechtigung zum Ändern oder Schreiben in Ressourcen. Stattdessen kann der Workflow ausschließlich ein OIDC-Token für eine Aktion oder einen Schritt anfordern (abrufen) und verwenden (festlegen). Dieses Token wird anschließend zur Authentifizierung bei externen Diensten mithilfe eines kurzlebigen Zugriffstokens verwendet.
Ausführliche Informationen zu erforderlichen Berechtigungen, Konfigurationsbeispielen und erweiterten Szenarios findest du unter OpenID Connect-Referenz.
Anfordern des Zugriffstokens
Die azure/login Aktion empfängt einen JWT vom GitHub OIDC-Anbieter und fordert dann ein Zugriffstoken von Azure an. Weitere Informationen finden Sie in der Dokumentation azure/login.
Im folgenden Beispiel wird ein OIDC-ID-Token mit Azure ausgetauscht, um ein Zugriffstoken zu empfangen, das dann für den Zugriff auf Cloudressourcen verwendet werden kann.
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
name: Run Azure Login with OIDC
on: [push]
permissions:
id-token: write
contents: read
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 'Az CLI login'
uses: azure/login@8c334a195cbb38e46038007b304988d888bf676a
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: 'Run az commands'
run: |
az account show
az group list
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.
name: Run Azure Login with OIDC
on: [push]
permissions:
id-token: write
contents: read
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 'Az CLI login'
uses: azure/login@8c334a195cbb38e46038007b304988d888bf676a
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: 'Run az commands'
run: |
az account show
az group list