Obecná dostupnost federace identit úloh pro připojení služeb Azure Resource Manageru
S radostí oznamujeme, že federace identit úloh je teď obecně dostupná v Azure Pipelines. Můžete si vychutnat zjednodušené prostředí, aniž byste museli spravovat tajné kódy a certifikáty v připojeních služeb Azure.
V této aktualizaci si také prohlédáme novou funkci v rámci naší vylepšené integrace GitHubu se službou Azure Boards. Teď můžete přímo propojit žádosti o přijetí změn nebo potvrzení GitHubu. Už se nepřepíná mezi okny nebo kopírováním a vkládáním. Jednoduše vyberte požadované úložiště, vyhledejte žádost o přijetí změn nebo potvrzení, které potřebujete, a propojte ho.
Další informace o těchto funkcích najdete v poznámkách k verzi.
OBECNÉ
- Konečné oznámení o vyřazení alternativních přihlašovacích údajů
- Samoobslužná obměně tajných kódů Azure DevOps OAuth
Pokročilé zabezpečení GitHubu pro Azure DevOps
- Fragmenty kódu jsou teď k dispozici v zobrazení podrobností výstrahy.
- Zkrácené tajné kódy zobrazené v přehledu upozornění
- Přidání dalších závažností výstrah pro výstrahy kontroly kódu
- Propojené předplatné Azure vyžadované pro povolení GitHub Advanced Security pro Azure DevOps
- Rozšířené aktualizace Rozhraní API pro zabezpečení
- Rozšířená oprávnění zabezpečení se teď trvale zobrazují.
Azure Boards
- Přidání odkazu na potvrzení GitHubu nebo žádost o přijetí změn (Preview)
- Vylepšení nového centra Boards
- Ovládací prvky pro vývoj a nasazení
Azure Pipelines
- Federace identit úloh pro připojení služby Azure Resource Manager je teď obecně dostupná.
- Vzdálené instalace spouštěče úloh Node 6
- Odložené schválení
- Sekvencování schválení a kontrol
- Ověření a uložení ve výchozím nastavení při úpravách kanálů YAML
Azure Repos
Azure Artifacts
OBECNÉ
Konečné oznámení o vyřazení alternativních přihlašovacích údajů
Alternativní přihlašovací údaje byly formálně vyřazeny v březnu 2020, ale někteří stávající uživatelé byli děděni s průběžným využitím stávajících alternativních přihlašovacích údajů. Od ledna 2024 jsme plně zastarali všechny alternativní přihlašovací údaje. Abyste se vyhnuli potenciálním přerušením, přepněte na některý z dostupných ověřovacích mechanismů , které poskytujeme, jako jsou osobní přístupové tokeny nebo spravované identity.
Samoobslužná obměně tajných kódů Azure DevOps OAuth
Každých pět let je nezbytné aktualizovat tajný klíč klienta pro aplikaci Azure DevOps OAuth, aby se zajistilo průběžné generování přístupových a obnovovacích tokenů nezbytných pro využití rozhraní AZURE DevOps API. Vzhledem k vypršení platnosti tajných kódů klienta teď můžete nezávisle vygenerovat nový tajný klíč a poskytnout tak vašemu týmu svobodu spravovat ho, aniž by se museli spoléhat na zákaznickou podporu. Tato flexibilita při plánování obměny tajných kódů minimalizuje potenciální dobu výpadku pro zákazníky, kteří čekají na nahrazení kvůli tajnému kódu, jehož platnost vypršela.
Podívejte se na tuto novou funkci na všech stránkách aplikace Azure DevOps, které můžou být přístupné prostřednictvím vašeho profilu. Další informace o tomto novém kroku najdete v naší příručce Azure DevOps OAuth.
Pokročilé zabezpečení GitHubu pro Azure DevOps
Fragmenty kódu jsou teď k dispozici v zobrazení podrobností výstrahy.
Na stránce podrobností výstrahy pro kontrolu kódu a výstrahy kontroly tajných kódů se teď zobrazují fragmenty kódu, které označují jeden nebo více řádků kódu, ve kterých k upozornění došlo. Pokud chcete přejít do původního souboru v úložišti Azure DevOps, klikněte na název souboru nad fragmentem kódu.
Zkrácené tajné kódy zobrazené v přehledu upozornění
Zkrácené, posledních šest znaků všech zjištěných tajných kódů se teď zobrazuje na obrazovce s přehledem upozornění na tajné kódy. Tato funkce je užitečná, pokud máte více tajných expozic stejného typu tajného kódu, což vám umožní rychle identifikovat, kde jsou konkrétní tajné kódy živé.
Přidání dalších závažností výstrah pro výstrahy kontroly kódu
Nyní existují nové závažnosti upozornění pro výsledky výstrahy z dotazů CodeQL quality
jako Error
, Warning
a Note
závažností. Každá závažnost upozornění na kvalitu má vlastní odznáček a barvu, které označují závažnosti škálování. Můžete také filtrovat pro každou z těchto závažností, podobně jako low
critical
u výstrah zabezpečení.
Propojené předplatné Azure vyžadované pro povolení GitHub Advanced Security pro Azure DevOps
Pokud jste dříve povolili rozšířené zabezpečení pro úložiště v organizaci Azure DevOps bez propojeného předplatného Azure, můžete si všimnout, že pokročilé zabezpečení se v těchto úložištích automaticky zakázalo. Pokud chcete rozšířené zabezpečení znovu povolit, přidejte přidružené předplatné Azure do organizace. Další informace o tom, jak přidat nebo změnit předplatné, najdete v tématu Změna předplatného Azure.
Rozšířené aktualizace Rozhraní API pro zabezpečení
Nedávno odeslány různé aktualizace rozšířených Rozhraní API pro zabezpečení:
- Rozhraní GET Alerts API teď podporuje nový parametr,
ModifiedSince
který vrací přírůstkový seznam výstrah a vrací pouze upozornění změněná od tohoto data. Další informace naleznete v tématu Výstrahy – seznam. - Existují dva nové koncové body pro načtení nebo aktualizaci stavu povolení rozšířeného zabezpečení organizace nebo projektu. Oba koncové body vrátí seznam úložišť s povoleným pokročilým zabezpečením. Další informace naleznete v tématu Organizace – Povolení nebo Projekt – Povolení.
- Existují dva nové koncové body pro načtení odhadu počtu aktivních potvrzení pro organizaci nebo projekt, aby odrážely odhadované náklady na využití měřiče rozšířeného zabezpečení. Další informace naleznete v tématu Odhad využití měřiče organizace nebo Odhad využití měřiče projektu.
Rozšířená oprávnění zabezpečení se teď trvale zobrazují.
V minulosti by tři bity oprávnění Advanced Security byly k dispozici pouze v případě, že bylo povoleno rozšířené zabezpečení, jako oprávnění pro každé úložiště. Teď jsou tato oprávnění ve výchozím nastavení dostupná v podokně Oprávnění zabezpečení úložiště > a je možné je přiřadit bez povolení rozšířeného zabezpečení.
Azure Boards
Přidání odkazu na potvrzení GitHubu nebo žádost o přijetí změn (Preview)
Pracovní položku můžete propojit pomocí žádosti o přijetí změn nebo potvrzení GitHubu. Syntaxi AB# můžete použít buď v žádosti o přijetí změn, nebo ji můžete propojit přímo z pracovní položky. Tento proces dnes zahrnuje zkopírování adresy URL žádosti o přijetí změn GitHubu a její vložení při přidání odkazu. To vyžaduje otevření několika oken a přepínání mezi GitHubem a Azure DevOps.
V tomto sprintu s radostí oznamujeme vylepšené prostředí tím, že při připojování k žádosti o přijetí změn nebo potvrzení GitHubu povolíme funkci vyhledávání. Vyhledejte a vyberte požadované úložiště a přejděte k podrobnostem a vyhledejte a propojte konkrétní žádost o přijetí změn nebo potvrzení. Už nepotřebujete více změn okna a kopírování a vkládání (i když tuto možnost máte pořád).
Poznámka:
Tato funkce je dostupná jenom ve verzi Preview nového centra Boards.
Pokud vás zajímá získání přístupu k této funkci, pošlete nám e-mail přímo spolu s názvem vaší organizace (dev.azure.com/{název organizace}).
Vylepšení nového centra Boards
V této verzi jsme představili řadu vylepšení ve verzi Preview centra New Boards Hub, která se zaměřuje na přístupnost a přeformátování stránek.
Tady je příklad změn přeformátování stránky, které jsou adaptivní až 400% přiblížení.
Kromě toho jsme zavedli vylepšení výkonu ve formuláři, panelech a backlogech pracovních položek. Díky těmto změnám můžete očekávat, že nové panely budou odpovídat standardům výkonu nastaveným se starými panely.
Ovládací prvky vývoje a nasazení
Z pracovní položky teď odebereme ovládací prvky Vývoj a/nebo Nasazení podle toho, jak je váš projekt nakonfigurovaný. Můžete například nakonfigurovat nastavení projektu tak, aby vypnula úložiště a kanály.
Když přejdete na pracovní položku, odpovídající ovládací prvky Vývoj a nasazení budou ve formuláři skryté.
Pokud se rozhodnete připojit úložiště GitHub k Azure Boards, zobrazí se ovládací prvek Vývoj pro úložiště GitHub.
Azure Pipelines
Federace identit úloh pro připojení služby Azure Resource Manager je teď obecně dostupná.
V září jsme oznámili možnost konfigurovat připojení služeb Azure bez použití tajného klíče. Od té doby tuto funkci přijalo mnoho zákazníků a s radostí oznamujeme, že tato funkce je teď obecně dostupná.
Pokud ještě nepoužíváte federaci identit úloh, můžete využít výhod připojení služeb Azure bez obav, která nemají tajné kódy s vypršením platnosti, následujícími způsoby:
Pokud chcete vytvořit nové připojení služby Azure pomocí federace identit úloh, vyberte v prostředí pro vytváření připojení ke službě Azure federaci identit úloh (automaticky):
Pokud chcete převést dříve vytvořené připojení služby Azure, vyberte po výběru připojení akci Převést:
Pokud chcete převést více připojení služeb, můžete použít automatizaci, například tento skript PowerShellu:
#!/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"
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)'"
}
Další informace najdete v naší dokumentaci.
Agent Pipelines zobrazuje problémy s využitím prostředků výrazněji.
V říjnu jsme přidali možnost sledovat využití paměti a místa na disku agentem Pipelines.
Aby si zákazníci mohli uvědomit, můžou mít omezení prostředků, jako jsou omezení paměti nebo místa na disku u svého agenta, zviditelníme omezení prostředků:
Pokud se zobrazí některá z výše uvedených zpráv, může to být způsobeno úlohou, která používá více prostředků, než je dimenze agenta, což může vést k tomu, že agent nereaguje a selhává úloha kanálu:
"Přestali jsme slyšet od agenta"
V takových případech povolte podrobné protokoly , abyste získali jemněji odstupňované zprávy o využití prostředků a sledovali, kde váš agent prostředky vyčerpal. Pokud používáte agenta v místním prostředí, ujistěte se, že váš agent má adekvátní prostředky.
Vzdálené instalace spouštěče úloh Node 6
Azure Pipelines poskytuje dvě verze balíčků agentů:
- Balíčky vsts-agent-* podporují úlohy pomocí uzlu 6 ke spuštění.
- Balíčky pipelines-agent-* nepodporují úlohy, které vyžadují spuštění uzlu 6.
Zákazníci, kteří vytvářejí agenty v místním prostředí, si je můžou stáhnout ze stránky vydaných verzí agenta kanálu. Verze Node, které jsou součástí agenta, se používají ke spouštění úloh. Podívejte se na verze Node Runneru.
Po registraci agenta budou agenti instalovaní z balíčků pipelines-agent-* stahovat verze uzlů, které nejsou součástí agenta, a neblokují se v nastavení organizace v části Omezení úloh. To umožňuje zákazníkům používat balíčky agenta pipelines-agent-* a řídit instalaci Node 6 s omezeními úloh v nastavení organizace.
Odložené schválení
Schválení se dají použít k odhlášení při nasazení. Existují však situace, kdy se čas, kdy je uděleno schválení, a čas, kdy by se nasazení mělo spustit, neodpovídá. Například u konkrétního nasazení, které zkontrolujete, víte, že se jedná o mimohraniční nasazení. Představte si, že nemůže okamžitě pokračovat, spíše by se mělo provést během noci.
Abychom mohli tyto scénáře pokrýt, přidali jsme možnost odložit schválení pro kanály YAML. Teď můžete schválit spuštění kanálu a určit, kdy má schválení platit.
Když vyberete Odložit schválení, můžete nakonfigurovat čas, kdy bude schválení účinné.
Schválení se zobrazí jako odložené na kontrolním panelu. Po odložení je schválení účinné.
Sekvencování schválení a kontrol
V tomto sprintu můžete určit pořadí, ve kterém se spouštějí schválení a kontroly.
Schválení a kontroly umožňují řídit nasazení do produkčního prostředí. Můžete například určit, že můžou používat připojení produkční služby ARM jenom kanály, které běží ve main
větvi úložiště. Kromě toho můžete vyžadovat schválení člověkem a že systém projde kontrolou výkonu.
Až do dnešního dne se všechna schválení a kontroly spustily paralelně, s výjimkou výhradního zámku. To znamená, že pokud váš proces nasazení vyžadoval kontrolu výkonu před předáním ručního schválení, nepodařilo se to vynutit v Azure Pipelines. Museli jste se spoléhat na pokyny ke schválení a dokumentaci k internímu procesu.
V tomto sprintu představujeme sekvencování ve schváleních a kontrolách. Nyní je pět kategorií schválení a kontrol:
- Statické kontroly: Řízení větví, Požadovaná šablona a Vyhodnocení artefaktu
- Předběžné dynamické kontroly Schválení
- Dynamické kontroly: Schválení, vyvolání funkce Azure, vyvolání rozhraní REST API, pracovní doba, dotazování upozornění služby Azure Monitor
- Schválení po dynamických kontrolách
- Exkluzivní zámek
Objednávka se zobrazí také na kartě Schválení a kontroly.
V rámci každé kategorie se kontroly spouští paralelně. To znamená, že pokud máte kontrolu funkce Azure Functions vyvolání a kontrolu pracovní doby, spustí se současně.
Zkontrolujte, jestli kategorie běží po jedné a pokud selže, zbývající kontroly se nespustí. To znamená, že pokud máte kontrolu větve a schválení, pokud se řízení větve nezdaří, schválení se nezdaří. Takže se nepotřebné e-maily nebudou odesílat.
Po spuštění všechdynamických
Ověření a uložení ve výchozím nastavení při úpravách kanálů YAML
Nesprávný kanál YAML může vést k plýtvání časem a úsilím. Abychom zlepšili produktivitu úprav kanálu, měníme v editoru tlačítko Uložit tak, aby se také provedlo ověřování YAML.
Pokud váš kanál obsahuje chyby, budete ho pořád moct uložit.
Vylepšili jsme také prostředí pro ověřování , abyste viděli chyby v seznamu, který je srozumitelnější.
Azure Repos
Prevence neoprávněných uživatelů ke konfiguraci kanálu jako zásad sestavení
Prevence neoprávněných uživatelů ke konfiguraci kanálu jako zásad sestavení
Dříve, když jste přidali novou zásadu sestavení, můžete nakonfigurovat spuštění libovolného kanálu z rozevíracího seznamu (včetně kanálů, pro které jste neměli oprávnění k sestavení fronty ). Podobně můžete stávající zásady sestavení upravit i v případě, že jste nakonfigurovali spuštění kanálu, pro který nemáte oprávnění k sestavení fronty .
Teď uživatelům bráníme v tom, aby to udělali. Pokud se uživateli odepře oprávnění k sestavením fronty pro daný kanál, zobrazí se tento kanál jako zakázaný (šedě) v rozevíracím seznamu při přidávání nových zásad sestavení.
Podívejte se na následující obrázek znázorňující kanál s názvem Sandbox s odepřeným oprávněním sestavení fronty.
Podívejte se na následující obrázek znázorňující kanál s názvem Sandbox disabled (greyed out) v rozevíracím seznamu, když se uživatel s odepřeným oprávněním sestavení fronty pokouší přidat nové zásady sestavení.
Pokud je zásada sestavení nakonfigurovaná tak, aby spustila kanál s názvem Sandbox, uživatel bez oprávnění sestavení fronty nebude moct zásady sestavení upravit ani zobrazit. Tento případ je zobrazen na následujícím obrázku.
Při pokusu o odstranění této zásady se zobrazí automaticky otevírané dialogové okno s žádostí o potvrzení odstranění.
Tyto změny platí také pro všechna volání rozhraní API, která vedou k vytvoření nebo úpravě zásad sestavení. Pokud se některá z těchto akcí spustí pomocí identity uživatele bez oprávnění sestavení fronty , volání vrátí zpět odpovídající kód chyby a chybová zpráva s informací, že “TFS.WebApi.Exception: TF401027:
k provedení této akce potřebujete oprávnění QueueBuild v tomto kanálu.".
Odstranění zásady sestavení provedené pomocí rozhraní API bez user identity
oprávnění k sestavení fronty proběhne úspěšně a nedojde k žádnému upozornění ani prevenci (žádné změny v tom, jak odstranění funguje prostřednictvím rozhraní API).
Azure Artifacts
Obecně dostupná podpora pro Rust Crates
Od 16. února 2024 se podpora Rust Crates stane obecně dostupnou funkcí pro Azure Artifacts. Měřiče fakturace se aktivují pomocí stejného cenového modelu, který se vztahuje na ostatní podporované protokoly.
Podpora Azure Artifacts pro audit npm
Azure Artifacts teď podporuje npm audit
a npm audit fix
příkazy. Tato funkce umožňuje uživatelům analyzovat a opravit ohrožení zabezpečení projektu automatickou aktualizací nezabezpečených verzí balíčků. Další informace najdete v nástroji Npm Audit k detekci a opravě ohrožení zabezpečení balíčků.
Další kroky
Poznámka:
Tyto funkce se budou zavádět během následujících dvou až tří týdnů.
Přejděte na Azure DevOps a podívejte se na ně.
Jak poskytnout zpětnou vazbu
Rádi bychom slyšeli, co si o těchto funkcích myslíte. Pomocí nabídky nápovědy můžete nahlásit problém nebo poskytnout návrh.
Můžete také získat rady a své otázky zodpovězené komunitou ve službě Stack Overflow.
Díky,
Dan Hellem