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.

En bild som visar innehållet i en feed.

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.

En bild som visar en intern paketversion som offentliggjorts.

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.

En bild som visar tillgängliga privata och offentliga paket.

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.

En bild som visar feed med endast privata paket.

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.

En bild som visar feed med endast offentliga paket.

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.

En bild som visar ett paket som konverterats från offentligt till privat.

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.

  1. Logga in på din Azure DevOps-organisation och navigera sedan till projektet.

  2. Välj Artefakter och välj sedan din feed från den nedrullningsbara menyn.

  3. Välj ditt paket och välj sedan ellipsknappen för fler alternativ. Välj Tillåt externt källbaserade versioner.

    En skärmbild som visar hur du tillåter externt källversioner.

  4. Välj växlingsknappen för att tillåta externa versioner. Välj Stäng när du är klar.

    En skärmbild som visar hur du aktiverar externa versioner.

Tillåt externa versioner med hjälp av REST-API:et

Tillåt externa versioner med PowerShell

  1. Skapa en personlig åtkomsttoken med behörigheter för att paketera>läs-, skriv- och hanteringsbehörigheter.

    Skärmbild som visar hur du väljer paketeringsbehörigheter.

  2. Skapa en miljövariabel för din personliga åtkomsttoken.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. 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"
    }
    
  4. 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