Teilen über


Verbinden Sie sich mit Azure über eine Azure Resource Manager-Dienstverbindung

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Sie können eine Azure Resource Manager-Dienstverbindung verwenden, um eine Verbindung mit Azure-Ressourcen wie Azure Key Vault herzustellen. Wenn Sie eine Ressourcenmanager-Dienstverbindung verwenden, können Sie eine Pipeline verwenden, um eine Azure-Ressource wie eine Azure-App-Service-App bereitzustellen, ohne sich jedes Mal zu authentifizieren.

Sie haben mehrere Authentifizierungsoptionen für die Verbindung mit Azure mithilfe von Azure Resource Manager-Dienstverbindungen:

  • Dienstprinzipal mit Arbeitsauslastungsidentitätsverbund
  • Dienstprinzipal mit Geheimnis
  • Systemseitig zugewiesene verwaltete Identität
  • Öffentliches Profil

Die Dienstverbindung verwendet einen Dienstprinzipal, um sich mit Azure-Ressourcen zu authentifizieren.

Erstellen Sie eine Azure Resource Manager-Dienstverbindung, die Workload-Identitätsverbund verwendet

Workload Identity Federation verwendet OpenID Connect (OIDC) zur Authentifizierung mit Microsoft Entra geschützten Ressourcen ohne Verwendung von Geheimnissen. Sie können den Workload-Identitätsverbund automatisch für die Authentifizierung erstellen oder manuell erstellen.

Wir empfehlen Ihnen, diesen Ansatz zu verwenden, wenn alle folgenden Punkte auf Ihr Szenario zutreffen:

  • Sie die Rolle „Besitzer“ für Ihr Azure-Abonnement haben.
  • Sie stellen keine Verbindung mit dem Azure Stack oder den Azure US Government-Umgebungen bereit.
  • Alle Marketplace-Erweiterungsaufgaben, die Sie verwenden, werden aktualisiert, um den Workload-Identitätsverbund zu unterstützen.

Erstellen einer Dienstverbindung mit dem Workload-Identitätsverbund (automatisch)

Mit dieser Auswahl fragt Azure DevOps automatisch nach dem Abonnement-, Verwaltungs- oder Machine Learning-Arbeitsbereich ab, mit dem Sie eine Verbindung herstellen möchten, und erstellt einen Workloadidentitätsverbund für die Authentifizierung.

  1. Gehen Sie im Azure DevOps-Projekt auf Projekteinstellungen>Dienstverbindungen.

    Weitere Informationen finden Sie unter Projekteinstellungen öffnen.

  2. Wählen Sie "Neue Dienstverbindung" und dann "Azure Resource Manager " und "Weiter" aus.

    Screenshot, der die Auswahl von Azure Resource Manager zeigt.

  3. Wählen Sie "Workload Identity Federation" (automatisch) und "Weiter" aus.

    Screenshot der Auswahl der Workload Identity-Verbundmethode (automatisch).

  4. Wählen Sie eine Bereichsebene aus. Wählen Sie "Abonnement", "Verwaltungsgruppe" oder "Machine Learning Workspace" aus. Bei Verwaltungsgruppen handelt es sich um Container, mit denen Sie Zugriff, Richtlinien und Konformität abonnementübergreifend verwalten können. Ein Maschineller Lernarbeitsbereich ist ein Ort zum Erstellen von Machine Learning-Artefakten.

    • Geben Sie für den Abonnementbereich die folgenden Parameter ein:

      Parameter BESCHREIBUNG
      Abonnement Erforderlich. Wählen Sie das Azure-Abonnement aus.
      Ressourcengruppe Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
    • Wählen Sie für den Bereich "Verwaltungsgruppe " die Azure-Verwaltungsgruppe aus.

    • Geben Sie für den Bereich Machine Learning Workspace die folgenden Parameter ein:

      Parameter BESCHREIBUNG
      Abonnement Erforderlich. Wählen Sie das Azure-Abonnement aus.
      Ressourcengruppe Erforderlich. Wählen Sie die Ressourcengruppe aus, die den Arbeitsbereich enthält.
      Maschineller Lernarbeitsbereich Erforderlich. Wählen Sie den Azure Machine Learning-Arbeitsbereich aus.
  5. Geben Sie einen Dienstverbindungsnamen ein.

  6. Geben Sie optional eine Beschreibung für die Dienstverbindung ein.

  7. Wählen Sie "Zugriffsberechtigung für alle Pipelines erteilen" aus, damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.

  8. Wählen Sie Speichern.

Nachdem die neue Dienstverbindung erstellt wurde, kopieren Sie den Verbindungsnamen und fügen ihn in Ihren Code als Wert für azureSubscription ein.

Für die Bereitstellung auf einer bestimmten Azure-Ressource benötigt die Aufgabe weitere Daten über diese Ressource. Wechseln Sie im Azure-Portal zur Ressource, und kopieren Sie die Daten dann in Ihren Code. Um beispielsweise eine Webanwendung bereitzustellen, kopieren Sie den Namen der Azure App Service-Anwendung und fügen ihn als Wert für WebAppName in Ihren Code ein.

Erstellen einer Dienstverbindung mit dem Workload-Identitätsverbund (manuell)

Verwenden Sie diese Option, um manuell eine Dienstverbindung zu erstellen, die einen vorhandenen Workload-Identitätsverbund für die Authentifizierung verwendet.

  1. Gehen Sie im Azure DevOps-Projekt auf Projekteinstellungen>Dienstverbindungen.

    Weitere Informationen finden Sie unter Projekteinstellungen öffnen.

  2. Wählen Sie "Neue Dienstverbindung" und dann "Azure Resource Manager " und "Weiter" aus.

    Screenshot der Auswahl der Workload Identity-Verbundmethode (manuell).

  3. Wählen Sie "Workload Identity Federation" (manuell) und "Weiter" aus.

    Screenshot, der die Auswahl eines Workload-Identitätsdienst-Verbindungstyps zeigt.

  4. In Schritt 1: Grundlagen:

    1. Geben Sie einen Dienstverbindungsnamen ein .
    2. Geben Sie optional unter Beschreibung eine Beschreibung ein.
    3. Wählen Sie "Zugriffsberechtigung für alle Pipelines erteilen" aus, damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.
    4. Wählen Sie Weiter aus.
  5. In Schritt 2: Dienstprinzipaldetails:

    Schritt 2: Dienstprinzipaldetails enthalten die folgenden Parameter. Sie können die folgenden Parameter eingeben oder auswählen:

    Parameter Beschreibung
    Aussteller Erforderlich. DevOps erstellt automatisch die Aussteller-URL wird automatisch erstellt.
    Antragstellerbezeichner Erforderlich. DevOps erstellt automatisch den Betreffbezeichner.
    Umgebung Erforderlich. Wählen Sie eine Cloudumgebung aus, mit der eine Verbindung hergestellt werden soll. Wenn Sie Azure Stack auswählen, geben Sie die Umgebungs-URL ein, die etwa wie https://management.local.azurestack.externalfolgt lautet.
    1. Wählen Sie die Bereichsebene aus. Wählen Sie "Abonnement", "Verwaltungsgruppe" oder "Machine Learning Workspace" aus. Bei Verwaltungsgruppen handelt es sich um Container, mit denen Sie Zugriff, Richtlinien und Konformität abonnementübergreifend verwalten können. Ein Maschineller Lernarbeitsbereich ist ein Ort zum Erstellen von Machine Learning-Artefakten.

      • Geben Sie für den Abonnementbereich die folgenden Parameter ein:

        Parameter Beschreibung
        Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
        Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
      • Geben Sie für den Bereich " Verwaltungsgruppe " die folgenden Parameter ein:

        Parameter Beschreibung
        Verwaltungsgruppen-ID Erforderlich. Geben Sie die Azure-Verwaltungsgruppen-ID ein.
        Verwaltungsgruppenname Erforderlich. Geben Sie den Namen der Azure-Verwaltungsgruppe ein.
      • Geben Sie für den Bereich Machine Learning Workspace die folgenden Parameter ein:

        Parameter Beschreibung
        Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
        Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
        Ressourcengruppe Erforderlich. Wählen Sie die Ressourcengruppe aus, die den Arbeitsbereich enthält.
        ML-Arbeitsbereichsname Erforderlich. Geben Sie den Namen des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
        ML-Arbeitsbereichsspeicherort Erforderlich. Geben Sie den Speicherort des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
    2. Geben Sie im Abschnitt "Authentifizierung " die folgenden Parameter ein, oder wählen Sie sie aus:

      Parameter Beschreibung
      Dienstprinzipal-ID Erforderlich. Geben Sie die Dienstprinzipal-ID ein.
      Mandanten-ID Erforderlich. Geben SIe die Mandanten-ID ein.
    3. Geben Sie im Abschnitt "Details" die folgenden Parameter ein:

      Parameter BESCHREIBUNG
      Verbindungsname Erforderlich. Der Name, mit dem Sie in den Aufgabeneigenschaften auf diese Dienstverbindung verweisen. Nicht der Name Ihres Azure-Abonnements.
      Beschreibung Optional. Geben Sie eine Beschreibung der Dienstverbindung ein.
    4. Wählen Sie im Abschnitt "Sicherheit" die Berechtigung "Zugriff für alle Pipelines erteilen" aus, damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.

    5. Wählen Sie " Überprüfen und speichern " aus, um die Dienstverbindung zu überprüfen und zu erstellen.

Nachdem die neue Dienstverbindung erstellt wurde, kopieren Sie den Verbindungsnamen und fügen ihn in Ihren Code als Wert für azureSubscription ein.

Für die Bereitstellung auf einer bestimmten Azure-Ressource benötigt die Aufgabe weitere Daten über diese Ressource. Wechseln Sie im Azure-Portal zur Ressource, und kopieren Sie die Daten dann in Ihren Code. Um beispielsweise eine Webanwendung bereitzustellen, kopieren Sie den Namen der Azure App Service-Anwendung und fügen ihn als Wert für WebAppName in Ihren Code ein.

Konvertieren einer bestehenden Azure Resource Manager-Dienstverbindung zur Verwendung von Workload-Identitätsverbünden

Sie können eine bestehende Azure Resource Manager-Dienstverbindung schnell konvertieren, um einen Workload-Identitätsverbund für die Authentifizierung anstelle eines Dienstprinzipals zu verwenden. Sie können das Dienstverbindungskonvertierungstool in Azure DevOps verwenden, wenn Ihre Dienstverbindung diese Anforderungen erfüllt:

  • Azure DevOps hat ursprünglich die Dienstverbindung erstellt. Wenn Sie Ihre Dienstverbindung manuell erstellen, können Sie die Dienstverbindung nicht mit dem Dienstverbindungskonvertierungstool konvertieren, da Azure DevOps keine Berechtigung hat, seine eigenen Anmeldeinformationen zu ändern.
  • Nur ein Projekt verwendet die Dienstverbindung. Sie können Projekt-Service-übergreifende Verbindungen nicht konvertieren.

So konvertieren Sie eine Dienstverbindung:

  1. Gehen Sie im Azure DevOps-Projekt auf Projekteinstellungen>Dienstverbindungen.

    Weitere Informationen finden Sie unter Projekteinstellungen öffnen.

  2. Wählen Sie die Dienstverbindung aus, die Sie in eine Workload-Identität umwandeln möchten.

  3. Wählen Sie Konvertieren aus.

    Screenshot, der die Auswahl der Konvertierung für Verbund-Anmeldeinformationen zeigt.

    Wenn Sie über eine vorhandene Dienstprinzipalanmeldeinformationen mit einem abgelaufenen geheimen Schlüssel verfügen, wird eine andere Option zum Konvertieren angezeigt.

    Screenshot, der die Option zur Konvertierung in Verbund-Anmeldeinformationen zeigt, wenn Sie ein abgelaufenes Zertifikat haben.

  4. Wählen Sie erneut Konvertieren aus, um zu bestätigen, dass Sie eine neue Dienstverbindung erstellen möchten.

    Die Umwandlung kann einige Minuten dauern. Wenn Sie die Verbindung rückgängig machen wollen, müssen Sie sie innerhalb von sieben Tagen rückgängig machen.

Konvertierung mehrerer Azure Resource Manager-Dienstverbindungen mit einem Skript

Verwenden Sie ein Skript, um mehrere Dienstverbindungen auf einmal zu aktualisieren, damit sie nun den Workload-Identitätsverbund für die Authentifizierung verwenden.

Dieses PowerShell-Beispielskript erfordert zwei Parameter: Azure DevOps Organisation (Beispiel: https://dev.azure.com/fabrikam-tailspin) und Azure DevOps-Projekt (Beispiel: Space game web agent). Das Skript ruft dann die zugehörigen Dienstverbindungen für Ihr Azure DevOps-Projekt und Ihre Organisation ab.

Wenn Sie Dienstverbindungen in die Verwendung des Workload-Identitätsverbunds konvertieren, werden Sie aufgefordert, das Update für jede Verbindung zu bestätigen, die sie noch nicht verwendet. Nach Bestätigung aktualisiert das Skript diese Dienstverbindungen über die Azure DevOps-REST-API, um den Workload-Identitätsverbund zu nutzen.

Das Skript benötigt PowerShell 7.3 oder neuer und Azure CLI zum Ausführen. Speichern Sie das Skript in einer .ps1 Datei, und führen Sie es mit PowerShell 7 aus.

#!/usr/bin/env pwsh
<# 
.SYNOPSIS 
    Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation

.LINK
    https://aka.ms/azdo-rm-workload-identity-conversion

.EXAMPLE
    ./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#> 

#Requires -Version 7.3

param ( 
    [parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
    [string]
    [ValidateNotNullOrEmpty()]
    $Project,

    [parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
    [uri]
    [ValidateNotNullOrEmpty()]
    $OrganizationUrl
) 
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard" 

#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798" # application id of Azure DevOps 
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')

#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
        | Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
    Write-Warning "No convertible service connections found"
    exit 1
}

foreach ($serviceEndpoint in $serviceEndpoints) {
    # Prompt user to confirm conversion
    $choices = @(
        [System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
        [System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
        [System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
    )
    $prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
    $decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)

    if ($decision -eq 0) {

        Write-Host "$($choices[$decision].HelpMessage)"
    } elseif ($decision -eq 1) {
        Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
        continue 
    } elseif ($decision -ge 2) {
        Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
        exit 
    }

    # Prepare request body
    $serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
    $serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
    $serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
    $serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
    $putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
    # Convert service connection
    az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
            | ConvertFrom-Json | Set-Variable updatedServiceEndpoint

    $updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
    if (!$updatedServiceEndpoint) {
        Write-Debug "Empty response"
        Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
        exit 1
    }
    Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}

Wiederherstellen einer bestehenden Azure Resource Manager Service-Verbindung, die ein Dienstprinzipalgeheimnis verwendet

Sie können eine konvertierte automatische Dienstverbindung mit ihrem geheimen Schlüssel sieben Tage lang wiederherstellen. Erstellen Sie nach sieben Tagen manuell ein neues Geheimnis.

Wenn Sie Ihre Dienstverbindung manuell erstellen und konvertieren, können Sie die Dienstverbindung nicht mit dem Dienstverbindungskonvertierungstool rückgängig machen, da Azure DevOps keine Berechtigung hat, seine eigenen Anmeldeinformationen zu ändern.

Um eine Dienstverbindung rückgängig zu machen:

  1. Gehen Sie im Azure DevOps-Projekt zu Pipelines>Service connections.

  2. Wählen Sie eine bestehende Dienstverbindung aus, die Sie wiederherstellen möchten.

  3. Wählen Sie Konvertierung in das ursprüngliche Schema zurückversetzen aus.

    Screenshot, der die Auswahl von Revert für eine Verbund-Anmeldeinformation zeigt.

  4. Wählen Sie Wiederherstellen erneut aus, um Ihre Auswahl zu bestätigen.

Erstellen Sie eine Azure Resource Manager-Dienstverbindung, die ein Dienstprinzipalgeheimnis verwendet

Sie können eine Dienstverbindung einrichten, um sich mit Azure-Ressourcen zu authentifizieren, indem Sie einen Dienstprinzipalschlüssel verwenden. Dieser Ansatz ist nützlich, wenn Sie Berechtigungen für Azure-Ressourcen, auf die Benutzer über die Dienstverbindung zugreifen, weiter einschränken müssen.

Sie können die Dienstverbindung manuell oder automatisch konfigurieren. Es empfiehlt sich, den automatischen Ansatz zu verwenden, wenn Sie sich als Besitzer der Azure Pipelines-Organisation und des Azure-Abonnements angemeldet haben, und Sie müssen keine weiteren Berechtigungen für Azure-Ressourcen einschränken, auf die Benutzer über die Dienstverbindung zugreifen.

Wir empfehlen Ihnen, diesen Ansatz zu verwenden, wenn alle folgenden Punkte auf Ihr Szenario zutreffen:

  • Sie sind als Besitzer*in der Azure Pipelines-Organisation und des Azure-Abonnements angemeldet.
  • Sie müssen die Berechtigungen für Azure-Ressourcen, auf die Benutzer über die Dienstverbindung zugreifen, nicht weiter einschränken.
  • Sie stellen keine Verbindung zu Azure Stack oder zu einer Azure Government Cloud her.
  • Sie stellen keine Verbindung von Azure DevOps Server 2019 oder früheren Versionen von Team Foundation Server her.

So erstellen Sie die Dienstverbindung:

  1. Gehen Sie im Azure DevOps-Projekt auf Projekteinstellungen>Dienstverbindungen.

    Weitere Informationen finden Sie unter Projekteinstellungen öffnen.

  2. Wählen Sie "Neue Dienstverbindung" und dann "Azure Resource Manager " und "Weiter" aus.

    Screenshot der Auswahl des Azure Resource Manager.

  3. Wählen Sie Dienstprinzipal (automatisch) und Next aus.

    Screenshot, der die Auswahl einer Dienstprinzipalauthentifizierungsmethode (automatisch) zeigt.

  4. Wählen Sie die Bereichsebene aus. Wählen Sie "Abonnement", "Verwaltungsgruppe" oder "Machine Learning Workspace" aus. Bei Verwaltungsgruppen handelt es sich um Container, mit denen Sie Zugriff, Richtlinien und Konformität abonnementübergreifend verwalten können. Ein Maschineller Lernarbeitsbereich ist ein Ort zum Erstellen von Machine Learning-Artefakten.

    • Geben Sie für den Abonnementbereich die folgenden Parameter ein:

      Parameter Beschreibung
      Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
      Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
    • Geben Sie für den Bereich "Verwaltungsgruppe " die folgenden Parameter ein, und wählen Sie die Azure-Verwaltungsgruppe aus.

    • Geben Sie für den Bereich Machine Learning Workspace die folgenden Parameter ein:

      Parameter Beschreibung
      Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
      Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
      Ressourcengruppe Erforderlich. Wählen Sie die Ressourcengruppe aus, die den Arbeitsbereich enthält.
      ML-Arbeitsbereichsname Erforderlich. Geben Sie den Namen des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
      ML-Arbeitsbereichsspeicherort Erforderlich. Geben Sie den Speicherort des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
  5. Geben Sie einen Dienstverbindungsnamen ein.

  6. Geben Sie optional eine Beschreibung für die Dienstverbindung ein.

  7. Wählen Sie "Zugriffsberechtigung für alle Pipelines erteilen" aus, damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.

  8. Wählen Sie Speichern.

Nach dem Erstellen der neuen Dienstverbindung:

  • Wenn Sie den klassischen Editor verwenden, wählen Sie den Verbindungsnamen, den Sie in der Einstellung Azure-Abonnement Ihrer Pipeline zugewiesen haben.
  • Wenn Sie eine YAML-Datei verwenden, kopieren Sie den Verbindungsnamen als Wert für azureSubscriptionin Ihren Code.

Um eine bestimmte Azure-Ressource bereitzustellen, fügen Sie der Aufgabe weitere Informationen über die Ressource hinzu:

  • Wenn Sie den klassischen Editor verwenden, wählen Sie die Daten aus, die der Aufgabe hinzugefügt werden sollen. Wählen Sie zum Beispiel den Namen des App-Dienstes.
  • Wenn Sie eine YAML-Datei verwenden, rufen Sie die Ressource im Azure-Portal auf. Kopieren Sie die benötigten Daten und fügen Sie sie in Ihren Aufgabencode ein. Wenn Sie beispielsweise eine Web-App bereitstellen möchten, kopieren Sie den Namen der App Service-App und fügen ihn als Wert für WebAppName in die YAML der Aufgabe ein.

Hinweis

Wenn Sie diesen Ansatz befolgen, stellt Azure DevOps eine Verbindung mit Microsoft Entra ID her und erstellt eine App-Registrierung mit einem Geheimnis, das drei Monate gültig ist. Wenn sich die Dienstverbindung dem Ablaufen annähert, zeigt Microsoft Entra ID die folgende Aufforderung an: Ein Zertifikat oder Geheimnis läuft bald ab. Erstellen Sie das Element neu. In diesem Szenario müssen Sie die Dienstverbindung aktualisieren.

Um eine Dienstverbindung zu aktualisieren, bearbeiten Sie im Azure DevOps-Portal die Verbindung und wählen dann Verify. Nachdem Sie die Bearbeitung gespeichert haben, ist die Dienstverbindung noch drei Monate lang gültig.

Wir empfehlen, dass Sie den Workload-Identitätsverbund verwenden, anstatt ein Geheimnis zu erstellen. Wenn Sie den Workload-Identitätsverbund verwenden, brauchen Sie die Geheimnisse nicht zu wechseln, und die Anwendungsregistrierung behält ihren Zweck bei. Um mit der Verwendung des Workload-Identitätsverbunds zu beginnen, wechseln Sie zur Seite „Dienstverbindungsdetails“, und wählen Sie „Konvertieren“ aus. Die Dienstverbindung wird so umgewandelt, dass sie anstelle eines Geheimnisses einen Workload-Identitätsverbund verwendet. Weitere Informationen finden Sie unter Konvertieren Sie eine vorhandene Azure Resource Manager-Dienstverbindung zur Verwendung von Workload-Identitätsverbünden.

Weitere Informationen finden Sie unter Fehlerbehebung bei einer Azure Resource Manager-Dienstverbindung.

Wenn Sie Probleme bei der Verwendung dieses Ansatzes haben (z. B. keine Abonnements in der Dropdownliste) oder wenn Sie Benutzerberechtigungen einschränken möchten, können Sie stattdessen einen Dienstprinzipal oder einen virtuellen Computer mit einer verwalteten Identität verwenden.

Erstellen Sie eine Azure Resource Manager-Dienstverbindung, die einen vorhandenen Dienstprinzipal verwendet

Wenn Sie einen vordefinierten Satz von Zugriffsberechtigungen verwenden möchten und noch keinen Dienstprinzipal für diesen Zweck definiert haben, folgen Sie einem dieser Tutorials, um einen neuen Dienstprinzipal zu erstellen:

So erstellen Sie eine Dienstverbindung, die einen vorhandenen Dienstprinzipal verwendet:

  1. Gehen Sie im Azure DevOps-Projekt auf Projekteinstellungen>Dienstverbindungen.

    Weitere Informationen finden Sie unter Projekteinstellungen öffnen.

  2. Wählen Sie "Neue Dienstverbindung" und dann "Azure Resource Manager " und "Weiter" aus.

    Screenshot der Auswahl des Azure Resource Manager.

  3. Wählen Sie "Dienstprinzipal" (manuell) und "Weiter" aus.

    Screenshot der Auswahl einer Dienstprinzipalauthentifizierungsmethode (manuell).

  4. Wählen Sie im Dialogfeld "Neue Azure-Dienstverbindung " die Option "Umgebung" aus. Wenn Sie Azure Stack auswählen, geben Sie die Umgebungs-URL ein, die etwa wie https://management.local.azurestack.externalfolgt lautet.

  5. Wählen Sie die Bereichsebene aus. Wählen Sie "Abonnement", "Verwaltungsgruppe" oder "Machine Learning Workspace" aus. Bei Verwaltungsgruppen handelt es sich um Container, mit denen Sie Zugriff, Richtlinien und Konformität abonnementübergreifend verwalten können. Ein Maschineller Lernarbeitsbereich ist ein Ort zum Erstellen von Machine Learning-Artefakten.

    • Geben Sie für den Abonnementbereich die folgenden Parameter ein:

      Parameter Beschreibung
      Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
      Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
    • Geben Sie für den Bereich " Verwaltungsgruppe " die folgenden Parameter ein:

      Parameter Beschreibung
      Verwaltungsgruppen-ID Erforderlich. Geben Sie die Azure-Verwaltungsgruppen-ID ein.
      Verwaltungsgruppenname Erforderlich. Geben Sie den Namen der Azure-Verwaltungsgruppe ein.
    • Geben Sie für den Bereich Machine Learning Workspace die folgenden Parameter ein:

      Parameter Beschreibung
      Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
      Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
      Ressourcengruppe Erforderlich. Wählen Sie die Ressourcengruppe aus, die den Arbeitsbereich enthält.
      ML-Arbeitsbereichsname Erforderlich. Geben Sie den Namen des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
      ML-Arbeitsbereichsspeicherort Erforderlich. Geben Sie den Speicherort des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
  6. Geben Sie im Abschnitt "Authentifizierung " die folgenden Parameter ein, oder wählen Sie sie aus:

    Parameter Beschreibung
    Dienstprinzipal-ID Erforderlich. Geben Sie die Dienstprinzipal-ID ein.
    Credential Wählen Sie "Dienstprinzipalschlüssel" oder "Zertifikat" aus. Wenn Sie den Dienstprinzipalschlüssel ausgewählt haben, geben Sie den Schlüssel (Kennwort) ein. Wenn Sie "Zertifikat" ausgewählt haben, geben Sie das Zertifikat ein.
    Mandanten-ID Erforderlich. Geben SIe die Mandanten-ID ein.
    Überprüfen Wählen Sie diese Option aus, um die von Ihnen eingegebenen Einstellungen zu überprüfen.
  7. Geben Sie im Abschnitt "Details" die folgenden Parameter ein:

    Parameter BESCHREIBUNG
    Verbindungsname Erforderlich. Der Name, mit dem Sie in den Aufgabeneigenschaften auf diese Dienstverbindung verweisen. Nicht der Name Ihres Azure-Abonnements.
    Beschreibung Optional. Geben Sie eine Beschreibung der Dienstverbindung ein.
    Security Wählen Sie "Zugriffsberechtigung für alle Pipelines erteilen" aus, damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.
  8. Wählen Sie " Überprüfen und speichern " aus, um die Dienstverbindung zu überprüfen und zu erstellen.

Nach dem Erstellen der neuen Dienstverbindung:

  • Wenn Sie die Dienstverbindung in der Benutzeroberfläche verwenden, wählen Sie den Verbindungsnamen, den Sie in der Einstellung Azure-Abonnement Ihrer Pipeline zugewiesen haben.
  • Wenn Sie die Serviceverbindung in einer YAML-Datei verwenden, kopieren Sie den Verbindungsnamen und fügen ihn als Wert für azureSubscription in Ihren Code ein.

Ändern Sie bei Bedarf den Dienstprinzipal, um die entsprechenden Berechtigungen freizugeben.

Weitere Informationen über die Authentifizierung mit einem Dienstprinzipal finden Sie unter Verwenden Sie rollenbasierte Zugriffskontrolle, um den Zugriff auf Ihre Azure-Abonnementressourcen zu verwalten oder im Blogbeitrag Automatisieren Sie die Bereitstellung einer Azure-Ressourcengruppe mit einem Dienstprinzipal in Visual Studio.

Weitere Informationen finden Sie unter Fehlerbehebung für Azure Resource Manager-Dienstverbindungen.

Erstellen einer Azure Resource Manager-Dienstverbindung mit einem virtuellen Computer, der eine verwaltete Identität verwendet

Hinweis

Um eine verwaltete Identität zur Authentifizierung zu verwenden, müssen Sie einen selbst gehosteten Agent auf einem virtuellen Azure-Computer (VM) verwenden.

Sie können selbst gehostete Agents auf Azure-VMs so konfigurieren, dass sie eine von Azure verwaltete Identität in Microsoft Entra-ID verwenden. In diesem Szenario verwenden Sie die vom System zugewiesene verwaltete Identität (Dienstprinzipal), um den Agents Zugriff auf jede Azure-Ressource zu gewähren, die Microsoft Entra-ID unterstützt, z. B. eine Instanz von Azure Key Vault.

  1. Gehen Sie im Azure DevOps-Projekt auf Projekteinstellungen>Dienstverbindungen.

    Weitere Informationen finden Sie unter Projekteinstellungen öffnen.

  2. Wählen Sie "Neue Dienstverbindung" und dann "Azure Resource Manager " und "Weiter" aus.

    Screenshot, der die Auswahl eines Dienstverbindungstyps zeigt.

  3. Wählen Sie verwaltete Identität für die Authentifizierungsmethode aus.

    Screenshot der Auswahl der Verwalteten Dienstidentitätsauthentifizierungsmethode.

  4. Wählen Sie für "Umgebung" den Namen der Umgebung aus (Azure Cloud-, Azure Stack- oder Government-Cloudoptionen).

  5. Wählen Sie die Bereichsebene aus. Wählen Sie "Abonnement", "Verwaltungsgruppe" oder "Machine Learning Workspace" aus. Bei Verwaltungsgruppen handelt es sich um Container, mit denen Sie Zugriff, Richtlinien und Konformität abonnementübergreifend verwalten können. Ein Maschineller Lernarbeitsbereich ist ein Ort zum Erstellen von Machine Learning-Artefakten.

    • Geben Sie für den Abonnementbereich die folgenden Parameter ein:

      Parameter Beschreibung
      Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
      Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
    • Geben Sie für den Bereich " Verwaltungsgruppe " die folgenden Parameter ein:

      Parameter Beschreibung
      Verwaltungsgruppen-ID Erforderlich. Geben Sie die Azure-Verwaltungsgruppen-ID ein.
      Verwaltungsgruppenname Erforderlich. Geben Sie den Namen der Azure-Verwaltungsgruppe ein.
    • Geben Sie für den Bereich Machine Learning Workspace die folgenden Parameter ein:

      Parameter Beschreibung
      Abonnement-ID Erforderlich. Geben Sie die Azure-Abonnement-ID ein.
      Abonnementname Erforderlich. Geben Sie den Namen des Azure-Abonnements ein.
      Ressourcengruppe Erforderlich. Wählen Sie die Ressourcengruppe aus, die den Arbeitsbereich enthält.
      ML-Arbeitsbereichsname Erforderlich. Geben Sie den Namen des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
      ML-Arbeitsbereichsspeicherort Erforderlich. Geben Sie den Speicherort des vorhandenen Azure Machine Learning-Arbeitsbereichs ein.
  6. Geben Sie die Mandanten-ID ein.

  7. Geben Sie den Namen der Dienstverbindung ein.

  8. Geben Sie optional eine Beschreibung für die Dienstverbindung ein.

  9. Wählen Sie "Zugriffsberechtigung für alle Pipelines erteilen" aus, damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.

  10. Wählen Sie Speichern.

  11. Nach dem Erstellen der neuen Dienstverbindung:

    • Wenn Sie die Dienstverbindung in der Benutzeroberfläche verwenden, wählen Sie den Verbindungsnamen, den Sie in der Einstellung Azure-Abonnement Ihrer Pipeline zugewiesen haben.
    • Wenn Sie die Serviceverbindung in einer YAML-Datei verwenden, kopieren Sie den Verbindungsnamen als Wert für azureSubscription in Ihren Code.
  12. Stellen Sie sicher, dass die VM (Agent) über die erforderlichen Berechtigungen verfügt.

    Wenn Ihr Code beispielsweise den Azure Resource Manager aufrufen muss, weisen Sie der VM die entsprechende Rolle zu, indem Sie die rollenbasierte Zugriffskontrolle (RBAC) in Microsoft Entra ID verwenden.

    Weitere Informationen finden Sie unter Wie kann ich verwaltete Identitäten für Azure-Ressourcen verwenden? und Verwenden Sie rollenbasierte Zugriffskontrolle, um den Zugriff auf Ihre Azure-Abonnementressourcen zu verwalten.

Weitere Informationen über den Prozess finden Sie unter Fehlerbehebung bei Azure Resource Manager-Dienstverbindungen.

Erstellen einer Dienstverbindung mithilfe eines Veröffentlichungsprofils

Sie können eine Dienstverbindung mithilfe eines Veröffentlichungsprofils erstellen. Sie können ein Veröffentlichungsprofil verwenden, um eine Dienstverbindung mit einem Azure-App Dienst zu erstellen.

  1. Gehen Sie im Azure DevOps-Projekt auf Projekteinstellungen>Dienstverbindungen.

    Weitere Informationen finden Sie unter Projekteinstellungen öffnen.

  2. Wählen Sie "Neue Dienstverbindung" und dann "Azure Resource Manager " und "Weiter" aus.

    Screenshot der Auswahl von Azure Resource Manager.

  3. Wählen Sie "Profil veröffentlichen" für die Authentifizierungsmethode und dann "Weiter" aus.

    Screenshot der Auswahl der Auswahl der Veröffentlichungsprofilauthentifizierungsmethode.

  4. Legen Sie die folgenden Parameter fest:

    Parameter BESCHREIBUNG
    Abonnement Erforderlich. Wählen Sie ein Azure-Abonnement aus. Wenn keine Azure-Abonnements oder -Instanzen angezeigt werden, siehe Fehlerbehebung für Azure Resource Manager-Dienstverbindungen.
    WebApp Erforderlich. Geben Sie den Namen der Azure-App Dienst-App ein.
    Dienstverbindungsname Erforderlich. Der Name, mit dem Sie in den Aufgabeneigenschaften auf diese Dienstverbindung verweisen. Nicht der Name Ihres Azure-Abonnements.
    Beschreibung Optional. Die Beschreibung der Dienstverbindung.
  5. Wählen Sie "Zugriffsberechtigung für alle Pipelines erteilen" aus, damit alle Pipelines diese Dienstverbindung verwenden können. Wenn Sie diese Option nicht auswählen, müssen Sie manuell Zugriff auf jede Pipeline gewähren, die diese Dienstverbindung verwendet.

  6. Wählen Sie Speichern.

Nach dem Erstellen der neuen Dienstverbindung:

  • Wenn Sie die Dienstverbindung in der Benutzeroberfläche verwenden, wählen Sie den Verbindungsnamen, den Sie in der Einstellung Azure-Abonnement Ihrer Pipeline zugewiesen haben.
  • Wenn Sie die Serviceverbindung in einer YAML-Datei verwenden, kopieren Sie den Verbindungsnamen und fügen ihn als Wert für azureSubscription in Ihren Code ein.

Herstellen einer Verbindung mit einer Azure Government-Cloud

Informationen zur Verbindung mit einer Azure Government Cloud finden Sie unter Connect von Azure Pipelines (Azure Government Cloud).

Herstellen einer Verbindung mit Azure Stack

Informationen zur Verbindung mit Azure Stack finden Sie in diesen Artikeln:

Hilfe und Support