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:
- registrace aplikace (automatická) s federace identit úloh
- Spravovaná identita, která vytvoří přihlašovací údaje federace identit úloh a připojí se k existující spravované identitě přiřazené uživatelem. Tuto možnost použijte, pokud nemáte oprávnění k vytvoření registrace aplikace.
- registrace aplikace nebo spravované identity (ručně) s federací identit pracovní zátěže nebo tajným klíčem. Ruční konfigurace je časově náročnější než automatická konfigurace a měla by se používat jenom v případě, že jste se už pokusili použít automatickou možnost.
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.
- automatická registrace aplikace s tajným kódem
-
spravovaná identita přiřazená agentem - Publikování profilu
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í.
V projektu Azure DevOps přejděte na >Service.
Další informace najdete v tématu Otevření nastavení projektu.
Vyberte Nové připojení služby a pak vyberte Azure Resource Manager a Další.
Vyberte registraci aplikace (automaticky) s federací identit úloh přihlašovacích údajů.
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.
Zadejte název připojení služby.
Volitelně můžete zadat popis připojení služby.
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.
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.
V projektu Azure DevOps přejděte na >Service.
Další informace najdete v tématu Otevření nastavení projektu.
Vyberte Nové připojení služby a pak vyberte Azure Resource Manager a Další.
Vyberte Spravovaná identita.
V kroku 1: Podrobnosti o spravované identitě:
- Vyberte předplatné pro spravovanou identitu. Toto je předplatné Azure, které obsahuje vaši spravovanou identitu.
- Vyberte skupinu prostředků pro spravovanou identitu. Toto je skupina prostředků, která obsahuje vaši spravovanou identitu.
- Vyberte spravovanou identitu. Jedná se o spravovanou identitu ve vaší skupině prostředků, kterou použijete pro přístup k prostředkům.
V kroku 2: Obor Azure:
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.
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. 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.
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:
V projektu Azure DevOps přejděte na >Service.
Další informace najdete v tématu Otevření nastavení projektu.
Vyberte připojení služby, které chcete převést na použití identity úlohy.
Vyberte Převést.
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.
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ě:
V projektu Azure DevOps přejděte na >Service.
Vyberte existující připojení služby, které se má vrátit.
Vyberte Vrátit převod na původní schéma.
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:
- Použití portálu k vytvoření aplikace Microsoft Entra a instančního objektu, který má přístup k prostředkům
- Vytvoření instančního objektu Azure s certifikátem pomocí Azure PowerShellu
Vytvoření připojení služby, které používá existující instanční objekt:
V projektu Azure DevOps přejděte na >Service.
Další informace najdete v tématu Otevření nastavení projektu.
Vyberte Nové připojení služby a pak vyberte Azure Resource Manager a Další.
Vyberte Instanční objekt (ruční) a Další.
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
.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.
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í. 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. Vyberte Ověřit a uložit , abyste ověřili a vytvořili připojení služby.
V projektu Azure DevOps přejděte na >Service.
Další informace najdete v tématu Otevření nastavení projektu.
Vyberte Nové připojení služby a pak vyberte Azure Resource Manager.
V dialogovém okně Přidat připojení ke službě Azure Resource Manager vyplňte následující pole:
Zadejte název připojení.
Vyberte prostředí. Pokud vyberete Azure Stack, zadejte adresu URL prostředí, což je něco jako
https://management.local.azurestack.external
.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.
Zadejte ID instančního objektu.
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.
Zadejte ID tenanta.
Výběrem možnosti Ověřit připojení ověřte připojení služby.
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.
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
- Projděte si tipy pro řešení potíží.
- Získejte rady o Stack Overflow.
- Zveřejněte své otázky, vyhledejte odpovědi nebo navrhněte funkci v komunitě vývojářů Azure DevOps.
- Získejte podporu pro Azure DevOps.