Konfigurieren des Upstreamverhaltens

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

Entwickler können mit vorgelagerten Quellen einen einzelnen Feed verwenden, um Pakete aus Artefaktefeeds und öffentlichen Registrierungen wie NuGet.org oder npmjs.com zu veröffentlichen und zu nutzen. Zum Einrichten von Upstreamquellen für Ihren Feed aktivieren Sie das Kontrollkästchen, um Pakete aus gängigen öffentlichen Quellen einzuschließen. Dadurch kann Ihr Feed Pakete aus den allgemeinen öffentlichen Registrierungen verwenden.

Kontrollkästchen

Zuvor kombinierte Artefakte-Feeds eine Liste der verfügbaren Paketversionen aus dem Feed und allen vorgelagerten Quellen.

Vorheriges Vorlaufquellenverhalten

Das Upstreamverhalten ist ein Feature, mit dem Entwickler auswählen können, ob sie externe Paketversionen nutzen möchten. Im Upstreamverhalten wird bestimmt, welche Pakete aus den öffentlichen Registrierungen für einzelne Pakete zur Verfügung gestellt werden.

Wenn das upstream-Verhalten aktiviert ist, wenn ein Paket in Ihrem Azure-Artefakte-Feed veröffentlicht wird, wird jede Version aus der öffentlichen Registrierung blockiert und nicht für den Download verfügbar gemacht.

Dieser Ansatz bietet eine weitere Sicherheitsebene, indem die Exposition an böswilligen Paketen blockiert wird, die die öffentlichen Registrierungen infiltrieren können.

Benutzer können weiterhin die Upstreamverhaltenseinstellung deaktivieren und Pakete aus den öffentlichen Registrierungen nutzen, wenn sie dies tun.

Hinweis

Das neue Verhalten wirkt sich nicht auf Paketversionen aus, die bereits verwendet werden. Diese werden in der Ansicht des Feeds @local gespeichert.

Anwendbare Szenarien

Im nächsten Abschnitt werden einige häufige Szenarien angezeigt, in denen das Upstreamverhalten ausgelöst wird, um externe Quellpaketversionen zusammen mit wenigen anderen Fällen zu blockieren, in denen keine Blockierung für die öffentlichen Pakete erforderlich ist.

Ö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. Das upstream-Verhalten in diesem Fall wird ausgelöst, um neue öffentliche Versionen zu blockieren (nicht vertrauenswürdige Pakete).

    Interne Paketversion, die öffentlich gemacht wurde

  • Wenn in diesem Szenario sowohl private als auch öffentliche Pakete vorhanden sind, wenn ein Team bereits private und öffentliche Pakete enthält, führt die Aktivierung des Upstreamverhaltens dazu, dass neue Paketversionen aus der öffentlichen Registrierung blockiert werden.

    private und öffentliche Pakete

Öffentliche Versionen werden nicht blockiert.

  • Alle Pakete sind privat: Wenn alle vorhandenen Pakete privat sind und das Team keine öffentlichen Pakete verwendet, hat das neue vorgelagerte Verhalten keine Auswirkungen auf den Workflow des Teams in diesem Szenario.

    Nur private Pakete

  • Alle Pakete sind öffentlich: Wenn alle von der öffentlichen Registrierung oder anderen Open-Source-Repositorys genutzten Pakete öffentlich sind, hat das neue vorgelagerte Verhalten keine Auswirkungen auf den Workflow des Teams in diesem Szenario.

    Nur öffentliche Pakete

  • Öffentliches Paket, das privat gemacht wurde: Wenn ein öffentliches Paket zu einem privaten Paket wechselt, hat das neue upstream-Verhalten keine Auswirkungen auf den Workflow des Teams in diesem Szenario.

    von öffentlich zu privat wechseln

Externe Versionen zulassen

Hinweis

Sie müssen ein Feedbesitzer oder ein Feedadministrator sein, um externe Quellversionen zuzulassen. Weitere Details finden Sie unter Feedberechtigungen .

  1. Wählen Sie Artefakte aus, und wählen Sie dann Ihren Feed aus.

  2. Wählen Sie Ihr Paket aus, und wählen Sie dann die Auslassungsschaltfläche für weitere Optionen aus. Wählen Sie "Externe Versionen zulassen" aus.

    Screenshot, der zeigt, wie externe Versionen eingerichtet werden.

  3. Wählen Sie die Umschaltfläche aus, um externe Versionen zuzulassen. Wählen Sie "Schließen " aus, wenn Sie fertig sind.

    Ein Screenshot, der zeigt, wie externe Versionen zulässig sind.

Externe Versionen mithilfe der REST-API zulassen

Neben der Verwendung der Benutzeroberfläche des Feeds können Sie auch das Upstreamverhalten mithilfe der Azure DevOps Services REST-API konfigurieren. Wählen Sie die entsprechende Registerkarte aus, und suchen Sie die Links zu den REST-API-Dokumenten.

Zulassen externer Versionen mithilfe von PowerShell

  1. Erstellen Sie ein persönliches Zugriffstoken mit "Packaging>Read", "Schreiben", & "Verwalten von Berechtigungen".

    Screenshot, der zeigt, wie Sie Verpackungsberechtigungen auswählen.

  2. Erstellen Sie eine Umgebungsvariable für Ihr persönliches Zugriffstoken.

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

    • Projektbereichsfeed:

      $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"
      
    • Organisationsbereichsfeed:

      $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 Vorlaufverhaltenszustand Ihres Pakets abzurufen. $url und $headers sind die gleichen Variablen, die wir im vorherigen Abschnitt verwendet haben.

Invoke-RestMethod -Uri $url -Headers $headers