Share via


Beveiliging tegen schadelijke openbare pakketten

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Met upstream-bronnen van Azure Artifacts profiteren ontwikkelaars van het gemak van het gebruik van een geïntegreerde feed om pakketten te publiceren en te gebruiken van artefactfeeds en populaire openbare registers, zoals NuGet.org of npmjs.com. Eerder combineerde Artifact-feeds een lijst met beschikbare pakketversies van zowel de feed zelf als alle geconfigureerde upstream-bronnen.

Een afbeelding met de inhoud van een feed.

De extern bronversies toestaan is een functie waarmee ontwikkelaars kunnen kiezen of ze externe pakketversies willen gebruiken. Het bepaalt welke pakketten toegankelijk zijn vanuit de openbare registers voor specifieke pakketten.

Wanneer u de wisselknop Externe versies toestaan uitschakelt, worden versies uit het openbare register geblokkeerd en kunnen ze niet meer worden gedownload. Hiermee wordt een extra beveiligingslaag toegevoegd door blootstelling aan mogelijk schadelijke pakketten van openbare registers te voorkomen.

Als gebruikers dat liever doen, kunnen ze de wisselknop Externe versies toestaan inschakelen om toegang tot pakketten uit openbare registers toe te staan en te gebruiken.

Notitie

Met deze instelling worden geen wijzigingen aangebracht in pakketversies die al in de feed zijn opgeslagen. De toegang tot deze pakketversies wordt niet gewijzigd als gevolg van het wijzigen van deze instelling.

Toepasselijke scenario's

In de volgende sectie ziet u verschillende veelvoorkomende scenario's waarbij de instelling van de externe versie externe pakketversies blokkeert en andere scenario's waarbij de toegang tot openbare pakketten niet hoeft te worden geblokkeerd.

Openbare versies worden geblokkeerd

Persoonlijke pakketversie openbaar gemaakt

In dit scenario heeft een team een privépakket dat openbaar is gemaakt. De instelling voor externe versies in dit geval zorgt ervoor dat de feed het verbruik van nieuwe versies met die pakketnaam van een openbare bron blokkeert.

Een afbeelding van een interne pakketversie die openbaar is gemaakt.

Zowel privé- als openbare pakketten hebben

Als een team in dit scenario gebruikmaakt van een combinatie van persoonlijke en openbare pakketten, worden alle nieuwe pakketversies uit het openbare register geblokkeerd als extern bronpakket niet wordt toegewezen.

Een afbeelding met beschikbare privé- en openbare pakketten.

Openbare versies worden niet geblokkeerd

Alle pakketten zijn privé*

Als alle bestaande pakketten privé zijn en het team geen openbare pakketten wil gebruiken, heeft de instelling voor externe versies geen invloed op de werkstroom van het team in dit scenario.

Een afbeelding van feed met alleen privépakketten.

Alle pakketten zijn openbaar

Als het team in dit scenario uitsluitend openbare pakketten verbruikt, ongeacht of dit afkomstig is van het openbare register of andere opensource-opslagplaatsen, heeft de instelling geen invloed op hun werkstroom.

Een afbeelding van feed met alleen openbare pakketten.

Openbaar pakket privé gemaakt

Wanneer een openbaar pakket in deze situatie wordt geconverteerd naar een privépakket, heeft de instelling voor externe versies geen invloed op de werkstroom van het team.

Een afbeelding van een pakket dat is geconverteerd van openbaar naar privé.

Externe versies toestaan

Notitie

U moet een feedeigenaar zijn om extern bronversies toe te staan. Zie Feedmachtigingen voor meer informatie.

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Artefacten en selecteer vervolgens uw feed in de vervolgkeuzelijst.

  3. Selecteer uw pakket en selecteer vervolgens de knop met het beletselteken voor meer opties. Selecteer Externe versies toestaan.

    Een schermopname die laat zien hoe u extern bronversies toestaat.

  4. Selecteer de wisselknop om externe versies toe te staan. Selecteer Sluiten wanneer u klaar bent.

    Een schermopname van het inschakelen van externe versies.

Externe versies toestaan met behulp van de REST API

Externe versies toestaan met Behulp van PowerShell

  1. Maak een persoonlijk toegangstoken met lees-, schrijf- en beheermachtigingen voor pakketten>.

    Schermopname die laat zien hoe u verpakkingsmachtigingen selecteert.

  2. Maak een omgevingsvariabele voor uw persoonlijke toegangstoken.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Converteer uw persoonlijke toegangstoken naar een met baser64 gecodeerde tekenreeks en maak de HTTP-aanvraagheader.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Maak uw eindpunt-URL. Voorbeeld: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1

    • Feed met projectbereik:

      $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"
      
    • Feed met organisatiebereik:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      

Voer de volgende opdracht uit om de upstream-gedragsstatus van uw pakket op te halen. $url en $headers zijn dezelfde variabelen die we in de vorige sectie hebben gebruikt.

Invoke-RestMethod -Uri $url -Headers $headers