Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Služby Azure DevOps
Poznámka:
Tato funkce se zavádí tento týden a další. Pokud tuto funkci ještě v projektu služby Azure DevOps Services nevidíte, vraťte se za několik dní.
Připojení služby Azure DevOps umožňuje, aby se vaše kanály ověřily v Azure DevOps bez tokenů PAT (Personal Access Tokens) pomocí identit úloh Microsoft Entra. Instanční objekty a spravované identity přistupují k Azure DevOps prostřednictvím federace identit zátěžových aplikací, která eliminuje nutnost spravovat a obměňovat tajné kódy.
Výhody
- PAT-free ověřování: Eliminujte potřebu vytvářet, ukládat a obnovovat osobní přístupové tokeny.
- Nejnižší oprávnění: Místo oprávnění účtu sdílené služby sestavení používejte oprávnění pro jednotlivé kanály.
- Vylepšené zabezpečení: Používejte federované přihlašovací údaje Entra s automatickou obměnou tokeny.
- Přístup mezi organizacemi: Přistupujte k prostředkům Azure DevOps v různých organizacích pomocí jediného připojení ke službě.
- Audit trail: Všechny pokusy o ověření se protokolují v protokolech auditu Azure DevOps.
Podporované scénáře
Připojení služby Azure DevOps podporuje tyto scénáře:
- Repository resources: Podívejte se na kód z úložišť v různých organizacích Azure DevOps.
- Kanály Artifact: Přístup ke kanálům Azure Artifacts (NuGet, npm, Maven, Python, Cargo, Conda) napříč organizacemi bez použití PAT.
- volání REST API: Ověřte se do Azure DevOps rozhraní REST API z inline skriptů.
- publikování Rozšíření: Publikujte rozšíření na Visual Studio Marketplace
Předpoklady
Pokud chcete vytvořit připojení služby Azure DevOps, potřebujete:
- Organizace Azure DevOps
- Principál služby Entra nebo spravovaná identita pro použití při ověřování
- Creator nebo Administrator role pro připojení služeb v projektu Azure DevOps, kde vytváříte připojení služby. Ve výchozím nastavení mají členové skupiny Endpoint Creators roli Tvůrce. Další informace naleznete v tématu Nastavení zabezpečení připojení služby.
- Pokud přistupujete k prostředkům napříč organizacemi, musí být hlavní služba nebo spravovaná identita přidána jako uživatel do každé cílové organizace.
Krok 1: Vytvoření připojení služby ve stejné organizaci
Pokud je hlavní služba ve stejné organizaci Azure DevOps jako připojení služby:
Přidejte principál služby do vaší organizace
Ve vaší organizaci Azure DevOps přejděte na Nastavení uspořádání>Uživatelé.
Vyberte Přidat uživatele.
Zadejte podrobnosti pro manažera služby:
- Název: Název služebního objektu nebo spravované identity nebo ID objektu
- Úroveň přístupu: Vyberte odpovídající úroveň přístupu. Použijte Basic pro standardní přístup
Přiřaďte služebního principála nebo spravovanou identitu projektu, ve kterém budete vytvářet připojení služby, například přidáním do skupiny Čtenáři.
Potvrďte volbu Přidat.
Přiřaďte další oprávnění na úrovni prostředků ke služebnímu účtu nebo spravované identitě.
Krok 2: Vytvoření připojení služby
V projektu Azure DevOps přejděte na Nastavení projektu>Připojení služby.
Vyberte Nové připojení služby.
Jako typ připojení služby vyberte Azure DevOps.
Vyplňte formulář:
- Identita: Vyberte instanční objekt, který jste přidali do vaší organizace.
-
Název připojení služby: Zadejte popisný název připojení (například
my-azdo-connection) - Popis (volitelné): Přidání podrobností o účelu připojení
Výběrem možnosti Uložit vytvořte připojení služby.
Vytvořte připojení služby pro přístup mezi různými organizacemi
Pro přístup k prostředkům v jiné organizaci Azure DevOps, která je připojena ke stejnému tenantovi Entra ID:
Při vytváření připojení služby postupujte podle pokynů v části Vytvoření připojení služby ve stejné organizaci, ale při vytváření připojení služby vyberte Jinou organizaci .
Zadejte název cílové Azure DevOps organizace.
Zástupce služby musíte také přidat jako uživatele v cílové organizaci.
Použijte připojení služby v kanálu.
Prozkoumejte repozitáře od různých organizací
pool:
vmImage: 'ubuntu-latest'
resources:
repositories:
- repository: external-repo
type: git
endpoint: my-azdo-connection
name: 'external-project/external-repo'
ref: 'refs/heads/main'
steps:
- checkout: self
- checkout: external-repo
Odkaz na šablonu z jiné organizace
resources:
repositories:
- repository: templates
type: git
endpoint: my-azdo-connection
name: 'external-project/external-repo'
ref: "refs/heads/main"
steps:
- template: azdosc-template.yml@templates
Přístup k informačním kanálům artefaktů
Použijte služební připojení pro úkoly ověřování artefaktů.
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: 'my-azdo-connection'
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: '**/*.csproj'
Volání Azure DevOps ze skriptu
- task: AzureCLI@3
displayName: Secret-less
inputs:
connectionType: 'azureDevOps'
azureDevOpsServiceConnection: 'my-azdo-connection'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
az rest --method get `
--url "https://status.dev.azure.com/_apis/status/health?api-version=7.1-preview.1" `
--resource 499b84ac-1321-427f-aa17-267ca6975798 `
--query "sort_by(services[?id=='Pipelines'].geographies | [], &name)" `
-o table
az devops configure -l
az devops project list --query "value[].{Name:name, Id:id}" `
-o table
az pipelines pool list --query "[].{Id:id, Name:name}" `
-o table
- task: AzureCLI@3
displayName: Use Entra access token
inputs:
connectionType: 'azureDevOps'
azureDevOpsServiceConnection: 'my-azdo-connection'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
# Get access token for Azure DevOps
$token = az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" `
--query "accessToken" `
--output tsv
# Use token in REST API call
$headers = @{
Authorization = "Bearer $token"
"Content-Type" = "application/json"
}
$body = @{
name = "Test Build"
} | ConvertTo-Json
Invoke-RestMethod -Uri "$(System.CollectionUri)$(System.TeamProject)/_apis/build/definitions?api-version=7.1" `
-Method POST `
-Headers $headers `
-Body $body
Úloha AzureCLI@3 používá Azure DevOps CLI, která je předinstalovaná na agentech hostovaných Microsoft. U agentů v místním prostředí potřebujete Azure CLI s rozšířením azure-devops.
azure-devops Pokud rozšíření není nainstalované, úloha AzureCLI@3 ji nainstaluje za běhu.
Osvědčené postupy zabezpečení
- Minimální oprávnění: Přiřaďte servisnímu účtu pouze ta oprávnění, která potřebuje pro vaše konkrétní úlohy v kanálu.
- Přístup k auditu: Pravidelně kontrolujte protokoly auditu a monitorujte využití připojení služby.
- Použití oboru: K omezení sdílených oprávnění použijte samostatná připojení služeb pro různé projekty nebo organizace.
Troubleshooting
Návod
Pro lepší zabezpečení přiřaďte principálu služby jenom potřebná oprávnění, pravidelně kontrolujte protokoly auditu a pro různé projekty nebo organizace používejte samostatná připojení.
Vytvoření připojení služby se nezdařilo.
Příčina: Služební principal není přidaný do vaší organizace nebo nemáte požadovaná oprávnění.
Oprava :
- Zkontrolujte, že jste aplikační objekt přidali jako uživatele vaší organizaci.
- Zkontrolujte, jestli máte příslušná oprávnění k vytváření připojení služeb.
- Ujistěte se, že má služební principál požadovanou úroveň přístupu v organizaci.
Potrubí nelze ověřit
Příčina: Název připojení ke službě neodpovídá odkazu YAML nebo služební účet nemá oprávnění k cílovým prostředkům.
Oprava :
- Zkontrolujte, jestli název připojení služby ve vašem kanálu YAML odpovídá názvu, který jste vytvořili.
- Zkontrolujte, jestli má instanční objekt příslušná oprávnění pro prostředky, ke kterým přistupujete.
- Zkontrolujte auditní protokoly Azure DevOps, zda nedošlo k chybám při ověřování.
- Odkaz na nejčastější dotazy k aplikačním objektům a spravovaným identitám.
- V případě statusových kódů Microsoft Entra AADSTS si projděte seznam zpráv o chybách.
Přístup mezi organizacemi nefunguje
Příčina: Instanční objekt služby jste nepřidali jako uživatele v obou organizacích, nebo jste chybně napsali název cílové organizace.
Oprava :
- Přidejte servisní účet jako uživatele v obou organizacích.
- Zkontrolujte, jestli je název cílové organizace správně napsaný v konfiguraci připojení služby.
- Zkontrolujte, jestli má instanční objekt požadovaná oprávnění v cílové organizaci.
Běžné chybové zprávy
| Zpráva | Význam a zmírnění rizik |
|---|---|
| CHYBA: TF401444: Přihlaste se alespoň jednou jako 72f988bf-86f1-41af-91ab-2d7cd011db47\72f988bf-86f1-4 1af-91ab-2d7cd011db47\115c3ab3-943b-4e0c-96ed-1a1763fbaa44 ve webovém prohlížeči pro povolení přístupu ke službě. | Zkontrolujte, že jste aplikační objekt přidali jako uživatele vaší organizaci. |
Spravovaná identita / servisní principál <sp/msi name> nemá přístup k organizaci Azure DevOps <org>. Ujistěte se, že byla identita přidána do organizace. Viz https://aka.ms/azdosc#prerequisites. |
Přidejte hlavní název služby jako uživatele do cílové organizace a přiřaďte jej k požadovanému projektu. |
| Nemáte oprávnění k vybrané identitě. Připojení služby se uloží jako koncept. Pokud chcete konfiguraci dokončit, obraťte se na vlastníka identity a vytvořte federované přihlašovací údaje na portálu Azure pomocí níže uvedených identifikátorů vystavitele a subjektu. | Přihlášený uživatel nemá dostatečná oprávnění k vytvoření federovaných přihlašovacích údajů. Postupujte podle zobrazených pokynů a vytvořte federované přihlašovací údaje přímo na identitě. |
| VS800075: Projekt s ID vstfs:///Classification/TeamProject/00000000-0000-00000000-000000000000 neexistuje nebo k němu nemáte oprávnění. | Identita připojení služby se do projektu nepřidá. Přejděte na stránku > s podrobnostmi o připojení služby Zobrazit přístup v aktuální organizaci> Členem > Vyberte skupinu, do které chcete přidat identitu, například do Readers skupiny. Případně přejděte do nastavení organizace>Uživatelé>. Identita použitá pro připojení > ke službě Spravovat přístup> a vyberte projekty, ke kterým identita potřebuje přístup. |
Microsoft Entra ID chybové zprávy
Následující tabulka uvádí běžné kódy chyb Microsoft Entra ID a možné problémy související s připojením služby identit úloh:
| Zpráva | Možný problém |
|---|---|
| AADSTS700016: Aplikace s identifikátorem **** nebyla nalezena. | Identita použitá pro připojení služby již neexistuje, pravděpodobně byla odebrána z připojení služby nebo je nesprávně nakonfigurovaná. Pokud připojení služby konfigurujete ručně s předem vytvořenou identitou, ujistěte se, že appID/clientId je správně nakonfigurovaná. |
| AADSTS7000215: Byl poskytnut neplatný tajný klíč klienta. | Používáte připojení služby s tajným kódem, jehož platnost vypršela. Převeďte připojení služby na federaci identit úloh a nahraďte tajný kód s vypršenou platností federovanými přihlašovacími údaji. |
| AADSTS700024: Přihlašovací prohlášení klienta není v platném časovém rozsahu. | Pokud k chybě dojde přibližně po 1 hodině, použijte místo toho připojení služby k federaci identit úloh a spravované identitě . Tokeny spravované identity mají životnost přibližně 24 hodin. Pokud k chybě dojde před 1 hodinou, ale po 10 minutách, přesuňte příkazy, které (implicitně) požadují přístupový token, například přístup k úložišti Azure na začátek skriptu. Přístupový token se ukládá do mezipaměti pro další příkazy. |
AADSTS70021: Pro předložené tvrzení nebyl nalezen žádný odpovídající záznam federované identity. Vystavitel kontrolního výrazu: https://app.vstoken.visualstudio.com. |
Nebyly vytvořeny žádné federované přihlašovací údaje nebo adresa URL vystavitele není správná. Správná adresa URL vystavitele má formát https://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Adresu URL vystavitele můžete opravit úpravou a uložením připojení služby. Pokud Azure DevOps vaši identitu nevytvořil, musíte vystavitele aktualizovat ručně. Správného vydavatele najdete v editačním dialogu připojení služby nebo v odpovědi, pokud používáte REST API. |
AADSTS70021: Pro předložené tvrzení nebyl nalezen žádný odpovídající záznam federované identity. Vystavitel kontrolního výrazu: https://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Předmět kontrolního výrazu: sc://<org>/<project>/<service-connection>. |
Adresa URL vystavitele nebo předmět federace se neshoduje. Organizace nebo projekt Azure DevOps byly přejmenovány nebo bylo přejmenováno ručně vytvořené připojení služby, aniž by se aktualizoval předmět federace u identity. |
| AADSTS700211: Nebyl nalezen žádný odpovídající záznam federované identity pro předloženého vydavatele tvrzení | Nebyla vytvořena žádná federovaná pověření nebo adresa URL poskytovatele není správná. |
| AADSTS700213: Nebyl nalezen odpovídající záznam federované identity pro uvedené subjektové tvrzení. | Nebyly vytvořeny žádné federované přihlašovací údaje nebo subjekt není správný. |
| AADSTS700223 | Federace identit úloh je v tenantovi Microsoft Entra omezená nebo zakázaná. V tomto scénáři může být možné použít spravovanou identitu pro federaci. Další informace se nachází v tématu Identita úlohy se spravovanou identitou. |
| AADSTS70025: Klientská aplikace nemá nakonfigurované přihlašovací údaje federované identity | Ujistěte se, že jsou federované přihlašovací údaje nakonfigurované pro registraci aplikace nebo spravovanou identitu. |
| Microsoft Entra zamítl token vydaný Azure DevOps s chybovým kódem AADSTS700238 | Federace identit úloh je omezená na tenanta Microsoft Entra. Vystavitel vaší organizace (https://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) nesmí používat federaci identit úloh s typem identity úlohy (registrace aplikace nebo spravovaná identita), kterou používáte. Požádejte správce tenanta Microsoft Entra nebo správcovský tým, aby povolili federaci pracovních identit pro vaši organizaci Azure DevOps. |
| AADSTS70052: Identita musí být řízená identita, aplikace pro jednoho tenanta nebo účet služby. | Vydavatel Microsoft Entra v současné době nepodporuje registrace víceklientských aplikací s signInAudience: AzureADMultipleOrgs. Používejte signInAudience: AzureADMyOrg a rozdělujte přístup k více tenantům, abyste místo toho používali různá připojení služeb pro každého tenanta. Pokud jste závislí na operacích ARM, které přistupují k více tenantům v jednom požadavku (například mezi-tenant peering virtuálních sítí), můžete kontaktovat podporu, aby vaše organizace Azure DevOps místo toho používala vystavitele Azure DevOps. |
| AADSTS900382: Důvěrný klient není podporován napříč cloudy. | Některé suverénní cloudy blokují federaci identit úloh. |
Zobrazuje se vám chyba AADSTS, která není uvedená výše? Zkontrolujte kódy chyb ověřování a autorizace Microsoft Entra.