Sdílet prostřednictvím


Připojení k Azure pomocí připojení služby Azure Resource Manager

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

Poznámka:

Zavádíme nové prostředí pro vytváření připojení ke službě Azure. Příjem ve vaší organizaci závisí na různých faktorech a může se vám stále zobrazovat starší uživatelské prostředí.

Připojení služby Azure Resource Manager umožňuje připojit se k prostředkům Azure, jako je Azure Key Vault, z vašeho kanálu. Toto připojení umožňuje použít kanál k nasazení do prostředků Azure, jako je aplikace Aplikace Azure Service, aniž byste museli pokaždé ověřovat.

Máte několik možností ověřování pro připojení k Azure pomocí připojení služby Azure Resource Manager. Doporučujeme používat federaci identit úloh s registrací aplikace nebo spravovanou identitou. Federace identit úloh eliminuje potřebu spravování tajemství.

Doporučené možnosti:

Poznámka:

Existují další možnosti ověřování připojení ke službě Azure Resource Manager, které nepoužívají federaci identit úloh. Tyto možnosti jsou k dispozici pro zpětnou kompatibilitu a hraniční případy a nedoporučuje se. Pokud připojení služby nastavujete poprvé, použijte federaci identit úloh. Pokud máte existující připojení služby, zkuste nejprve převodem připojení služby k použití federace identit úloh.

Vytvoření registrace aplikace s federací identit úloh (automaticky)

Tento přístup můžete použít, pokud jsou pro váš scénář splněny všechny následující položky:

  • Máte roli Vlastník vašeho předplatného Azure.
  • Nepřipojíte se ke službě Azure Stack ani k prostředím Azure US Government .
  • Všechny úlohy rozšíření z Marketplace, které používáte, se aktualizují, aby podporovaly federaci identit úloh.

Díky tomuto výběru se Azure DevOps automaticky dotazuje na předplatné, skupinu pro správu nebo pracovní prostor Machine Learning, ke kterému se chcete připojit, a vytvoří federaci identit úloh pro ověřování.

  1. V projektu Azure DevOps přejděte na >Service.

    Další informace najdete v tématu Otevření nastavení projektu.

  2. Vyberte Nové připojení služby a pak vyberte Azure Resource Manager a Další.

    Snímek obrazovky znázorňující volbu výběru Azure Resource Manageru

  3. Vyberte registraci aplikace (automaticky) s federací identit úloh přihlašovacích údajů.

    Snímek obrazovky s výběrem metody ověřování registrace aplikace (automatické) s vybranou identitou úlohy

  4. Vyberte úroveň oboru. Vyberte předplatné, skupinu pro správu nebo pracovní prostor Machine Learning. Skupiny pro správu jsou kontejnery, které pomáhají spravovat přístup, zásady a dodržování předpisů napříč několika předplatnými. Pracovní prostor Machine Learning je místo pro vytváření artefaktů strojového učení.

    • Do oboru předplatného zadejte následující parametry:

      Parametr Popis
      Předplatné Povinný: Vyberte předplatné Azure.
      Skupina prostředků Nepovinné. Vyberte skupinu prostředků Azure.
    • V oboru skupiny pro správu vyberte skupinu pro správu Azure.

    • Jako obor pracovního prostoru machine learningu zadejte následující parametry:

      Parametr Popis
      Předplatné Povinný: Vyberte předplatné Azure.
      Skupina prostředků Povinný: Vyberte skupinu prostředků obsahující pracovní prostor.
      Pracovní prostor Machine Learning Povinný: Vyberte pracovní prostor Azure Machine Learning.
  5. Zadejte název připojení služby.

  6. Volitelně můžete zadat popis připojení služby.

  7. Výběrem možnosti Udělit oprávnění pro přístup ke všem kanálům povolte používání tohoto připojení služby všem kanálům. Pokud tuto možnost nevyberete, musíte ručně udělit přístup ke každému kanálu, který používá toto připojení služby.

  8. Zvolte Uložit.

Vytvořte připojení služby pro existující uživatelsky přiřazenou spravovanou identitu

Tato možnost slouží k automatickému vytvoření přihlašovacích údajů identity úlohy pro existující spravovanou identitu přiřazenou uživatelem. Před zahájením musíte mít existující spravovanou identitu přiřazenou uživatelem.

  1. V projektu Azure DevOps přejděte na >Service.

    Další informace najdete v tématu Otevření nastavení projektu.

  2. Vyberte Nové připojení služby a pak vyberte Azure Resource Manager a Další.

    Snímek obrazovky znázorňující volbu výběru Azure Resource Manageru

  3. Vyberte Spravovaná identita.

    Snímek obrazovky znázorňující výběr spravované identity s identitou přiřazenou uživatelem v Azure Resource Manageru

  4. V kroku 1: Podrobnosti o spravované identitě:

    1. Vyberte předplatné pro spravovanou identitu. Toto je předplatné Azure, které obsahuje vaši spravovanou identitu.
    2. Vyberte skupinu prostředků pro spravovanou identitu. Toto je skupina prostředků, která obsahuje vaši spravovanou identitu.
    3. Vyberte spravovanou identitu. Jedná se o spravovanou identitu ve vaší skupině prostředků, kterou použijete pro přístup k prostředkům.
  5. V kroku 2: Obor Azure:

    1. Vyberte úroveň oboru. Vyberte předplatné, skupinu pro správu nebo pracovní prostor Machine Learning. Skupiny pro správu jsou kontejnery, které pomáhají spravovat přístup, zásady a dodržování předpisů napříč několika předplatnými. Pracovní prostor Machine Learning je místo pro vytváření artefaktů strojového učení.

      • Do oboru předplatného zadejte následující parametry:

        Parametr Popis
        Předplatné pro připojení ke službě Povinný: Vyberte název předplatného Azure, ke které bude vaše spravovaná identita přistupovat.
        Skupina prostředků pro připojení ke službě Nepovinné. Zadejte, pokud chcete omezit přístup ke spravované identitě na jednu skupinu prostředků.
      • Pro obor skupiny pro správu zadejte následující parametry:

        Parametr Popis
        Skupina pro správu Povinný: Vyberte skupinu pro správu Azure.
      • Jako obor pracovního prostoru machine learningu zadejte následující parametry:

        Parametr Popis
        Předplatné Povinný: Vyberte název předplatného Azure.
        Skupina prostředků pro připojení ke službě Nepovinné. Vyberte skupinu prostředků obsahující pracovní prostor.
        Pracovní prostor ML Povinný: Zadejte název existujícího pracovního prostoru Azure Machine Learning.
    2. V kroku 3: Podrobnosti o připojení služby: oddíl zadejte nebo vyberte následující parametry:

      Parametr Popis
      Název připojení služby Povinný: Název, který použijete pro odkaz na toto připojení služby ve vlastnostech úlohy. Nejedná se o název vašeho předplatného Azure.
      Referenční informace ke správě služeb Nepovinné. Kontextové informace z databáze ITSM
      Popis Nepovinné. Zadejte popis připojení služby.
    3. V části Zabezpečení vyberte Udělit přístupové oprávnění všem kanálům, aby bylo možné používat toto připojení ke službě všem kanálům. Pokud tuto možnost nevyberete, musíte ručně udělit přístup ke každému kanálu, který používá toto připojení služby.

    4. Výběrem možnosti Uložit ověřte a vytvořte připojení služby.

Převod existujícího připojení služby na použití federace identit úloh

Existující připojení služby Azure Resource Manager můžete rychle převést tak, aby místo tajného kódu používalo federaci identit úloh. Nástroj pro převod připojení služby v Azure DevOps můžete použít, pokud vaše připojení služby splňuje tyto požadavky:

  • Azure DevOps původně vytvořilo připojení služby. Pokud ručně vytvoříte připojení služby, nemůžete připojení služby převést pomocí nástroje pro převod připojení služby, protože Azure DevOps nemá oprávnění ke změně vlastních přihlašovacích údajů.
  • Připojení služby používá pouze jeden projekt. Připojení mezi projektové služby se nedají převést.

Převod připojení služby:

  1. V projektu Azure DevOps přejděte na >Service.

    Další informace najdete v tématu Otevření nastavení projektu.

  2. Vyberte připojení služby, které chcete převést na použití identity úlohy.

  3. Vyberte Převést.

    Snímek obrazovky znázorňující výběr možnosti Převést pro federované přihlašovací údaje

    Pokud máte existující přihlašovací údaje s tajným kódem, jehož platnost vypršela, zobrazí se jiná možnost převodu.

    Snímek obrazovky znázorňující možnost převodu na používání federovaných přihlašovacích údajů, pokud máte certifikát s vypršenou platností

  4. Opětovným výběrem možnosti Převést potvrďte, že chcete vytvořit nové připojení služby.

    Převod může trvat několik minut. Pokud chcete připojení vrátit zpět, musíte ho vrátit do sedmi dnů.

Převod více připojení ke službám pomocí skriptu

Pomocí skriptu můžete aktualizovat více připojení služeb najednou, aby teď pro ověřování používala federaci identit úloh.

Tento ukázkový skript PowerShellu vyžaduje dva parametry: organizace Azure DevOps (příklad: https://dev.azure.com/fabrikam-tailspin) a projekt Azure DevOps (příklad: Space game web agent). Skript pak načte přidružená připojení služeb pro váš projekt a organizaci Azure DevOps.

Při převodu připojení služeb na použití federace identit úloh se zobrazí výzva k potvrzení aktualizace pro každé připojení, které ho ještě nepoužívá. Po potvrzení skript aktualizuje tato připojení služby prostřednictvím rozhraní REST API Azure DevOps, aby využíval federaci identit úloh.

Skript vyžaduje ke spuštění PowerShellu 7.3 nebo novějšího a Azure CLI . Uložte skript do .ps1 souboru a spusťte ho pomocí PowerShellu 7.

#!/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)'"
}

Vrácení existujícího připojení služby, které používá tajný kód

Převedené automatické připojení služby můžete vrátit se svým tajným kódem sedm dní. Po sedmi dnech ručně vytvořte nový tajný klíč.

Pokud připojení služby vytvoříte a převedete ručně, nemůžete připojení služby vrátit zpět pomocí nástroje pro převod připojení služby, protože Azure DevOps nemá oprávnění ke změně vlastních přihlašovacích údajů.

Vrácení připojení ke službě:

  1. V projektu Azure DevOps přejděte na >Service.

  2. Vyberte existující připojení služby, které se má vrátit.

  3. Vyberte Vrátit převod na původní schéma.

    Snímek obrazovky znázorňující výběr možnosti vrácení federovaných přihlašovacích údajů

  4. Výběrem možnosti Zpět potvrďte svoji volbu.

Vytvořte připojení služby, které používá existující služební principál

Pokud chcete použít předdefinovanou sadu přístupových oprávnění a pro tento účel ještě nemáte definovaný instanční objekt, vytvořte pomocí jednoho z těchto kurzů nový instanční objekt:

Vytvoření připojení služby, které používá existující instanční objekt:

  1. V projektu Azure DevOps přejděte na >Service.

    Další informace najdete v tématu Otevření nastavení projektu.

  2. Vyberte Nové připojení služby a pak vyberte Azure Resource Manager a Další.

    Snímek obrazovky znázorňující výběr Azure Resource Manageru

  3. Vyberte Instanční objekt (ruční) a Další.

    Snímek obrazovky znázorňující výběr metody ověřování instančního objektu (ruční)

  4. V dialogovém okně Připojení k nové službě Azure vyberte prostředí. Pokud vyberete Azure Stack, zadejte adresu URL prostředí, což je něco jako https://management.local.azurestack.external.

  5. Vyberte úroveň oboru. Vyberte předplatné nebo skupinu pro správu. Skupiny pro správu jsou kontejnery, které pomáhají spravovat přístup, zásady a dodržování předpisů napříč několika předplatnými.

    • Do oboru předplatného zadejte následující parametry:

      Parametr Popis
      ID předplatného Povinný: Zadejte ID předplatného Azure.
      Název předplatného Povinný: Zadejte název předplatného Azure.
    • Pro obor skupiny pro správu zadejte následující parametry:

      Parametr Popis
      ID skupiny pro správu Povinný: Zadejte ID skupiny pro správu Azure.
      Název skupiny pro správu Povinný: Zadejte název skupiny pro správu Azure.
  6. V části Ověřování zadejte nebo vyberte následující parametry:

    Parametr Popis
    ID instančního objektu Povinný: Zadejte ID instančního objektu.
    Pověření Vyberte klíč instančního objektu nebo certifikát. Pokud jste vybrali instanční klíč, zadejte klíč (heslo). Pokud jste vybrali Certifikát, zadejte certifikát.
    ID tenanta Povinný: Zadejte ID klienta.
    Ověřit Výběrem ověřte zadaná nastavení.
  7. V části Podrobnosti zadejte následující parametry:

    Parametr Popis
    Název připojení Povinný: Název, který použijete pro odkaz na toto připojení služby ve vlastnostech úlohy. Nejedná se o název vašeho předplatného Azure.
    Popis Nepovinné. Zadejte popis připojení služby.
    Zabezpečení Výběrem možnosti Udělit oprávnění pro přístup ke všem kanálům povolte používání tohoto připojení služby všem kanálům. Pokud tuto možnost nevyberete, musíte ručně udělit přístup ke každému kanálu, který používá toto připojení služby.
  8. Vyberte Ověřit a uložit , abyste ověřili a vytvořili připojení služby.

  1. V projektu Azure DevOps přejděte na >Service.

    Další informace najdete v tématu Otevření nastavení projektu.

  2. Vyberte Nové připojení služby a pak vyberte Azure Resource Manager.

    Snímek obrazovky znázorňující výběr Azure Resource Manageru

  3. V dialogovém okně Přidat připojení ke službě Azure Resource Manager vyplňte následující pole:

    Snímek obrazovky s přidáním připojení služby Azure Resource Manager

    1. Zadejte název připojení.

    2. Vyberte prostředí. Pokud vyberete Azure Stack, zadejte adresu URL prostředí, což je něco jako https://management.local.azurestack.external.

    3. Vyberte úroveň oboru, **Předplatné nebo skupinu pro správu. Skupiny pro správu jsou kontejnery, které pomáhají spravovat přístup, zásady a dodržování předpisů napříč několika předplatnými.

      • Do oboru předplatného zadejte následující parametry:

        Parametr Popis
        ID předplatného Povinný: Zadejte ID předplatného Azure.
        Název předplatného Povinný: Zadejte název předplatného Azure.
      • Pro obor skupiny pro správu zadejte následující parametry:

        Parametr Popis
        ID skupiny pro správu Povinný: Zadejte ID skupiny pro správu Azure.
        Název skupiny pro správu Povinný: Zadejte název skupiny pro správu Azure.
    4. Zadejte ID instančního objektu.

    5. Vyberte typ přihlašovacích údajů:

      • Klíč instančního objektu: Zadejte klíč instančního objektu (heslo).
      • Certifikát: Zadejte obsah souboru .perm včetně oddílů certifikátu i privátního klíče.
    6. Zadejte ID tenanta.

    7. Výběrem možnosti Ověřit připojení ověřte připojení služby.

    8. Volitelně můžete vybrat Možnost Povolit všem kanálům používat toto připojení. Pokud tuto možnost nevyberete, musíte ručně udělit přístup ke každému kanálu, který používá toto připojení služby.

    9. Výběrem možnosti Uložit vytvořte připojení služby.

Po vytvoření nového připojení služby:

  • Pokud používáte připojení služby v uživatelském rozhraní, vyberte název připojení, který jste přiřadili v nastavení předplatného Azure vašeho kanálu.
  • Pokud používáte připojení služby v souboru YAML, zkopírujte název připojení a vložte ho do kódu jako hodnotu pro azureSubscription.

V případě potřeby upravte instanční objekt tak, aby zpřístupnil příslušná oprávnění.

Další informace o ověřování pomocí instančního objektu najdete v tématu Použití řízení přístupu na základě role ke správě přístupu k prostředkům předplatného Azure nebo blogový příspěvek Automatizace nasazení skupiny prostředků Azure pomocí instančního objektu v sadě Visual Studio.

Další informace najdete v tématu Řešení potíží s připojeními služeb Azure Resource Manageru.

Nápověda a podpora