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.
Het toestaan van de externe bronversies
Met deze functie kunnen ontwikkelaars bepalen of ze pakketversies van openbare registers willen gebruiken, zoals NuGet.org of npmjs.com.
Zodra de Externe versies toestaan wisselknop is ingeschakeld voor een specifiek pakket, worden versies van het openbare register beschikbaar om te downloaden. Deze optie is standaard uitgeschakeld en voegt een extra beveiligingslaag toe door blootstelling aan mogelijk schadelijke pakketten uit openbare registers te voorkomen. U moet een eigenaar van de feed zijn om de extern bronversies toe te staan functie.
Notitie
Het wijzigen van deze instelling heeft geen invloed op pakketversies die al in de feed zijn opgeslagen. Deze versies blijven toegankelijk, ongeacht deze instelling.
Toepasselijke scenario's
In de volgende sectie worden veelvoorkomende scenario's uiteengezet waarin externe versies (pakketten uit openbare registers) worden geblokkeerd of toegestaan voor opslag in de feed. In de rest van dit artikel verwijzen we naar pakketten uit openbare registers als openbare pakketten en pakketten in een Azure Artifacts-feed als privépakketten.
Scenario 1: 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.
Zowel privé- als openbare pakketten hebben
In dit scenario, als een team een combinatie van privé- en openbare pakketten gebruikt en pakketten die extern worden aangeleverd worden verboden, blokkeert dit nieuwe pakketversies uit het openbare register.
Scenario 2: 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.
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.
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.
Externe versies toestaan
Notitie
U moet een feedeigenaar zijn om extern bronversies toe te staan. Zie Feedmachtigingen voor meer informatie.
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Artefacten en selecteer vervolgens uw feed in de vervolgkeuzelijst.
Selecteer uw pakket en selecteer vervolgens de knop met het beletselteken voor meer opties. Selecteer Externe versies toestaan.
Selecteer de wisselknop om externe versies toe te staan. Selecteer Sluiten wanneer u klaar bent.
Externe versies toestaan met behulp van de REST API
Externe versies toestaan met Behulp van PowerShell
Maak een persoonlijk toegangstoken aan met pakketten> lees-, schrijf- en beheermachtigingen.
Maak een omgevingsvariabele voor uw persoonlijke toegangstoken.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
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" }
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"
Organisatiegerichte feed:
$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