Sdílet prostřednictvím


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É

Pokročilé zabezpečení GitHubu pro Azure DevOps

Azure Boards

Azure Pipelines

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.

Snímek obrazovky s výběrem zeměpisné oblasti

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.

Snímek obrazovky s cestou middlewaru citlivou na malá a velká písmena

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é.

Snímek obrazovky se seznamem tajných upozornění

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, Warninga 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í.

Snímek obrazovky se seznamem upozornění kontroly kódu a filtrem závažnosti

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, ModifiedSincekterý 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í.

Snímek obrazovky s oprávněními Advanced Security

Azure Boards

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).

Gif pro přidání odkazu na ukázku

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í.

Gif pro ukázku nových vylepšení rozbočovačů panelů

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.

Snímky obrazovky se službami DevOps

Když přejdete na pracovní položku, odpovídající ovládací prvky Vývoj a nasazení budou ve formuláři skryté.

Snímky obrazovky související práce

Pokud se rozhodnete připojit úložiště GitHub k Azure Boards, zobrazí se ovládací prvek Vývoj pro úložiště GitHub.

Snímky obrazovek ovládacího prvku pro vývoj

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):

Snímek obrazovky s federací 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:

Snímek obrazovky s akcí 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ů:

Snímek obrazovky s upozorněním na omezenou paměť a místo na disku

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.

Snímek obrazovky se schválením spuštění kanálu

Když vyberete Odložit schválení, můžete nakonfigurovat čas, kdy bude schválení účinné.

Snímek obrazovky s odložením schválení

Snímek obrazovky after_approval_deferred

Schválení se zobrazí jako odložené na kontrolním panelu. Po odložení je schválení účinné.

Snímek obrazovky se schválením je efektivní.

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:

  1. Statické kontroly: Řízení větví, Požadovaná šablona a Vyhodnocení artefaktu
  2. Předběžné dynamické kontroly Schválení
  3. Dynamické kontroly: Schválení, vyvolání funkce Azure, vyvolání rozhraní REST API, pracovní doba, dotazování upozornění služby Azure Monitor
  4. Schválení po dynamických kontrolách
  5. Exkluzivní zámek

Snímek obrazovky s možností přidat kontrolu

Objednávka se zobrazí také na kartě Schválení a kontroly.

Snímek obrazovky s kartou 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ě.

Snímek obrazovky s kontrolami nasazení

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.

Snímek obrazovky s kontrolami selhání nasazení

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.

Snímek obrazovky s novým tlačítkem

Snímek obrazovky s ověřením a uložením

Pokud váš kanál obsahuje chyby, budete ho pořád moct uložit.

Snímek obrazovky s kanálem je platný.

Snímek obrazovky s zjištěnými chybami

Vylepšili jsme také prostředí pro ověřování , abyste viděli chyby v seznamu, který je srozumitelnější.

Snímek obrazovky se seznamem chyb

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.

Snímek obrazovky s oprávněními pro sandbox

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í.

Snímek obrazovky s přidáním zásad 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.

Snímek obrazovky s ověřením sestavení

Při pokusu o odstranění této zásady se zobrazí automaticky otevírané dialogové okno s žádostí o potvrzení odstranění.

Snímek obrazovky s potvrzením 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.

Vytvoření návrhu

Můžete také získat rady a své otázky zodpovězené komunitou ve službě Stack Overflow.

Díky,

Dan Hellem