Schutz vor böswilligen öffentlichen Paketen
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Mit Azure Artifacts-Upstreamquellen profitieren Entwickler von der Verwendung eines einheitlichen Feeds zum Veröffentlichen und Nutzen von Paketen aus Artefaktefeeds und beliebten öffentlichen Registrierungen wie NuGet.org oder npmjs.com. Zuvor kombinierte Artefaktfeed eine Liste der verfügbaren Paketversionen sowohl aus dem Feed selbst als auch aus allen konfigurierten Upstreamquellen.
Die Versionen für externe Quellen zulassen ist ein Feature, mit dem Entwickler auswählen können, ob sie extern quellbezogene Paketversionen verwenden möchten. Sie regelt, welche Pakete von den öffentlichen Registern für bestimmte Pakete zugänglich sind.
Wenn Sie den Umschalter "Externe Versionen zulassen" deaktivieren, werden Versionen aus der öffentlichen Registrierung blockiert und stehen zum Download nicht zur Verfügung. Dadurch wird eine zusätzliche Sicherheitsebene hinzugefügt, indem verhindert wird, dass potenziell böswillige Pakete von öffentlichen Registern ausgesetzt werden.
Wenn Benutzer dies bevorzugen, können sie jedoch die Umschaltfläche "Externe Versionen zulassen" aktivieren, um den Zugriff auf und die Nutzung von Paketen aus öffentlichen Registrierungen zu ermöglichen.
Hinweis
Diese Einstellung nimmt keine Änderungen an Paketversionen vor, die bereits im Feed gespeichert sind. Der Zugriff auf diese Paketversionen ändert sich aufgrund der Änderung dieser Einstellung nicht.
Zutreffende Szenarios
Im folgenden Abschnitt werden verschiedene häufige Szenarien veranschaulicht, in denen die Einstellung für externe Versionen von Paketen aus externen Quellen blockiert wird, und andere Szenarien, in denen der Zugriff auf öffentliche Pakete nicht blockiert werden muss.
Öffentliche Versionen werden blockiert.
Private Paketversion, die öffentlich gemacht wurde
In diesem Szenario verfügt ein Team über ein privates Paket, das öffentlich gemacht wurde. Die Einstellung für externe Versionen in diesem Fall bewirkt, dass der Feed den Verbrauch neuer Versionen mit diesem Paketnamen aus einer öffentlichen Quelle blockiert.
Sowohl private als auch öffentliche Pakete
Wenn ein Team eine Kombination aus privaten und öffentlichen Paketen verwendet, werden in diesem Szenario externe Pakete deaktiviert, die keine neuen Paketversionen aus der öffentlichen Registrierung blockieren.
Öffentliche Versionen werden nicht blockiert
Alle Pakete sind privat*
Wenn alle vorhandenen Pakete privat sind und das Team keine öffentlichen Pakete verwenden möchte, hat die Einstellung für externe Versionen keine Auswirkungen auf den Workflow des Teams in diesem Szenario.
Alle Pakete sind öffentlich
Wenn das Team in diesem Szenario ausschließlich öffentliche Pakete nutzt, unabhängig davon, ob aus der öffentlichen Registrierung oder anderen Open-Source-Repositorys, hat die Einstellung keine Auswirkungen auf ihren Workflow.
Öffentliches Paket, das privat gemacht wurde
Wenn ein öffentliches Paket in ein privates Paket konvertiert wird, wirkt sich die Einstellung für externe Versionen in diesem Fall nicht auf den Workflow des Teams aus.
Externe Versionen zulassen
Hinweis
Sie müssen ein Feedbesitzer sein, um extern stammende Versionen zuzulassen. Weitere Informationen finden Sie unter Feedberechtigungen.
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.
Wählen Sie Artefakte und dann Ihren Feed im Dropdownmenü aus.
Wählen Sie Ihr Paket aus, und wählen Sie dann die Schaltfläche mit den Auslassungspunkten für weitere Optionen aus. Wählen Sie "Externe Versionen zulassen" aus.
Wählen Sie die Umschaltfläche aus, um externe Versionen zuzulassen. Wählen Sie "Schließen" aus, wenn Sie fertig sind.
Zulassen externer Versionen mithilfe der REST-API
Zulassen externer Versionen mit PowerShell
Erstellen Sie ein persönliches Zugriffstoken mit "Lesen>", "Schreiben" und "Verwalten von Berechtigungen".
Erstellen Sie eine Umgebungsvariable für Ihr persönliches Zugriffstoken.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
Konvertieren Sie Ihr persönliches Zugriffstoken in baser64-codierte Zeichenfolge, und erstellen Sie den HTTP-Anforderungsheader.
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
Erstellen Sie Ihre Endpunkt-URL. Beispiel: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
Projektbezogener Feed:
$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 mit Organisationsbereich:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
Führen Sie den folgenden Befehl aus, um den Upstreamverhaltenszustand des Pakets abzurufen. $url
und $headers
sind die gleichen Variablen, die wir im vorherigen Abschnitt verwendet haben.
Invoke-RestMethod -Uri $url -Headers $headers