Azure-DevOps-Pipeline benötigt Azure-Zugriff? Azure DevOps Federation konfigurieren
Eine Azure-DevOps-Pipeline benötigt Azure-Zugriff, ohne ein Client-Secret oder einen privaten Zertifikatschlüssel zu speichern.
Verwende eine Azure-Resource-Manager-Dienstverbindung mit Workload Identity Federation:
Pipeline fordert ein kurzlebiges Token an
-> Microsoft Entra überprüft die föderierte Vertrauensbeziehung
-> Microsoft Entra stellt ein Azure-Zugriffstoken aus
-> Pipeline greift auf ihre autorisierten Ressourcen zu
Demo vorbereiten
Erstelle oder wähle eine dedizierte Ressourcengruppe:
rg-azdo-federation-demo
Die Demo-Verbindung erhält nur Reader-Zugriff auf diese Ressourcengruppe.

Du benötigst Berechtigungen zum Erstellen von Dienstverbindungen im Azure-DevOps-Projekt, der Microsoft-Entra-Identität und einer Azure-Rollenzuweisung.
Dienstverbindung erstellen
Öffne im Azure-DevOps-Projekt:
Project settings
> Pipelines
> Service connections
> New service connection

Wähle Azure Resource Manager und anschließend:
App registration (automatic)
Credential: Workload identity federation
Die genaue Bezeichnung kann leicht abweichen. Als Authentifizierungsmethode muss Workload Identity Federation und nicht ein Secret ausgewählt sein.
Konfiguriere:
Scope level: Subscription
Subscription: <Demo-Abonnement>
Resource group: rg-azdo-federation-demo
Service connection name: azure-wif-demo
Aktiviere nicht Grant access permission to all pipelines. Autorisiere später nur die Demo-Pipeline.

Wähle Save.
Azure-Berechtigungen prüfen
Öffne die Demo-Ressourcengruppe:
Access control (IAM)
> Role assignments
Prüfe, ob der für die Verbindung erstellte Dienstprinzipal Folgendes besitzt:
Role: Reader
Scope: rg-azdo-federation-demo
Ersetze für diese Demo jede automatisch zugewiesene umfassendere Rolle durch Reader.

Prüfpipeline erstellen
Füge azure-pipelines.yml zum Repository hinzu:
trigger: none
pool:
vmImage: ubuntu-latest
steps:
- task: AzureCLI@2
displayName: Verify federated Azure access
inputs:
azureSubscription: azure-wif-demo
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
az account show --output table
az group show --name rg-azdo-federation-demo --output table
Der Wert azureSubscription muss exakt dem Namen der Dienstverbindung entsprechen. Die Aufgabe authentifiziert sich über die Verbindung; das YAML benötigt kein Client-Secret.
Autorisieren und ausführen
Erstelle die Pipeline aus azure-pipelines.yml und wähle Run.
Erlaube beim ersten Lauf dieser Pipeline die Verwendung von azure-wif-demo. Gewähre nicht allen Pipelines Zugriff.

Die Aufgabe sollte das erwartete Abonnement und die Ressourcengruppe anzeigen.

Problembehandlung
Prüfe bei einem Fehler, ob der Name der Dienstverbindung mit dem YAML übereinstimmt, die Pipeline autorisiert ist, die Verbindung bereit ist und die Identität weiterhin ihre Azure-Rolle besitzt. Selbstgehostete Agents benötigen Azure CLI 2.30 oder neuer.
Enterprise-Hinweis
- separate Verbindungen für jede Anwendung und Umgebung erstellen
- Zugriff auf die erforderliche Ressourcengruppe oder Ressource begrenzen
- nur die erforderliche Azure-Rolle gewähren
- ausgewählte Pipelines statt aller Pipelines autorisieren
- Genehmigungen und Prüfungen für Produktions-Dienstverbindungen hinzufügen
- Verwendung der Dienstverbindung und Azure-Aktivitätsprotokolle überwachen
- ungenutzte Verbindungen, Identitäten und Rollenzuweisungen entfernen
Workload Identity Federation entfernt gespeicherte Authentifizierungs-Secrets. Sie ersetzt nicht Autorisierung mit geringsten Rechten, Pipeline-Reviews, Genehmigungen oder Überwachung.