Skydda mot skadliga offentliga paket
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Med uppströmskällor i Azure Artifacts kan utvecklare använda ett enhetligt flöde för att både publicera och använda paket från Artefaktflöden och populära offentliga register som NuGet.org eller npmjs.com. Tidigare kombinerade Artefaktflöden en lista över tillgängliga paketversioner från både själva feeden och alla konfigurerade överordnade källor.
Tillåt externt källbaserade versioner är en funktion som gör det möjligt för utvecklare att välja om de vill använda paketversioner med extern källa. Den styr vilka paket som är tillgängliga från de offentliga registren för specifika paket.
När du inaktiverar växlingsknappen Tillåt externa versioner blockeras versioner från det offentliga registret och blir otillgängliga för nedladdning. Detta lägger till ett extra säkerhetslager genom att förhindra exponering för potentiellt skadliga paket från offentliga register.
Men om användarna föredrar det kan de aktivera växlingsknappen Tillåt externa versioner för att tillåta åtkomst till och använda paket från offentliga register.
Kommentar
Den här inställningen gör inga ändringar i paketversioner som redan har sparats i feeden. Åtkomsten till dessa paketversioner ändras inte till följd av att den här inställningen ändras.
Tillämpliga scenarier
I följande avsnitt visas olika vanliga scenarier där inställningen för extern version blockerar paketversioner med extern källa och andra scenarier där det inte finns något behov av att blockera åtkomst till offentliga paket.
Offentliga versioner blockeras
Privat paketversion offentliggjord
I det här scenariot har ett team ett privat paket som har offentliggjorts. Inställningen för externa versioner i det här fallet gör att flödet blockerar förbrukningen av nya versioner med det paketnamnet från en offentlig källa.
Ha både privata och offentliga paket
I det här scenariot, om ett team använder en kombination av privata och offentliga paket, blockeras alla nya paketversioner från det offentliga registret om externa paket inte tillåts.
Offentliga versioner blockeras inte
Alla paket är privata*
Om alla befintliga paket är privata och teamet inte har några planer på att använda några offentliga paket har inställningen för externa versioner ingen effekt på teamets arbetsflöde i det här scenariot.
Alla paket är offentliga
Om teamet i det här scenariot uteslutande använder offentliga paket, oavsett om de kommer från det offentliga registret eller andra lagringsplatser med öppen källkod, påverkar inställningen inte arbetsflödet på något sätt.
Offentligt paket som gjorts privat
När ett offentligt paket konverteras till ett privat paket påverkar inställningen för externa versioner i det här fallet inte teamets arbetsflöde på något sätt.
Tillåt externa versioner
Kommentar
Du måste vara feedägare för att tillåta externt källversioner. Mer information finns i Feed-behörigheter.
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
Välj Artefakter och välj sedan din feed från den nedrullningsbara menyn.
Välj ditt paket och välj sedan ellipsknappen för fler alternativ. Välj Tillåt externt källbaserade versioner.
Välj växlingsknappen för att tillåta externa versioner. Välj Stäng när du är klar.
Tillåt externa versioner med hjälp av REST-API:et
Tillåt externa versioner med PowerShell
Skapa en personlig åtkomsttoken med behörigheter för att paketera>läs-, skriv- och hanteringsbehörigheter.
Skapa en miljövariabel för din personliga åtkomsttoken.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
Konvertera din personliga åtkomsttoken till en baser64-kodad sträng och konstruera HTTP-begärandehuvudet.
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
Skapa din slutpunkts-URL. Exempel: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
Flöde med projektomfattning:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
Flöde med organisationsomfattning:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
Kör följande kommando för att hämta upstream-beteendetillståndet för ditt paket. $url
och $headers
är samma variabler som vi använde i föregående avsnitt.
Invoke-RestMethod -Uri $url -Headers $headers