Udostępnij za pośrednictwem


Ochrona przed złośliwymi pakietami publicznymi

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Dzięki źródłom nadrzędnym usługi Azure Artifacts deweloperzy uzyskują wygodę korzystania z ujednoliconego źródła danych do publikowania i używania pakietów z kanałów informacyjnych artefaktów oraz popularnych rejestrów publicznych, takich jak NuGet.org lub npmjs.com.

Zezwalaj na wersje pochodzące z zewnętrznych źródeł

Ta funkcja umożliwia deweloperom kontrolowanie, czy chcą korzystać z wersji pakietów z publicznych rejestrów, takich jak NuGet.org czy npmjs.com.

Po włączeniu przełącznika Zezwalaj na wersje zewnętrzne dla określonego pakietu wersje z rejestru publicznego staną się dostępne do pobrania. Domyślnie ta opcja jest wyłączona, dodając dodatkową warstwę zabezpieczeń, uniemożliwiając narażenie na potencjalnie złośliwe pakiety z publicznych rejestrów. Musisz być właścicielem kanału danych , aby włączyć funkcję pozwalającą na zewnętrznie źródłowe wersje.

Uwaga

Zmiana tego ustawienia nie ma wpływu na wersje pakietów, które zostały już zapisane w repozytorium. Te wersje pozostaną dostępne niezależnie od tego ustawienia.

Odpowiednie scenariusze

W poniższej sekcji opisano typowe scenariusze, w których wersje zewnętrzne (pakiety z publicznych rejestrów) są albo blokowane, albo dozwolone do zapisywania w repozytorium. W pozostałej części tego artykułu odwołujemy się do pakietów z publicznych rejestrów jako pakietów publicznych i pakietów w kanale informacyjnym usługi Azure Artifacts jako pakiety prywatne.

Scenariusz 1: wersje publiczne są blokowane

Prywatna wersja pakietu została udostępniona publicznie

W tym scenariuszu zespół ma pakiet prywatny, który stał się publiczny. Ustawienie wersji zewnętrznych w tym przypadku spowoduje, że kanał dystrybucji zablokuje możliwość pobierania jakiejkolwiek nowej wersji z tą nazwą pakietu ze źródła publicznego.

Ilustracja przedstawiająca publiczną wersję pakietu wewnętrznego.

Posiadanie zarówno prywatnych, jak i publicznych pakietów

W tym scenariuszu, jeśli zespół korzysta z kombinacji prywatnych i publicznych pakietów, zablokowanie zewnętrznych pakietów pochodzących z obcych źródeł uniemożliwia pobieranie nowych wersji pakietów z rejestru publicznego.

Ilustracja przedstawiająca dostępne pakiety prywatne i publiczne.

Scenariusz 2. Wersje publiczne nie będą blokowane

Wszystkie pakiety są prywatne*

Jeśli wszystkie istniejące pakiety są prywatne, a zespół nie planuje używania żadnych pakietów publicznych, ustawienie wersji zewnętrznych nie ma wpływu na przepływ pracy zespołu w tym scenariuszu.

Ilustracja przedstawiająca kanał tylko z pakietami prywatnymi.

Wszystkie pakiety są publiczne

W tym scenariuszu, jeśli zespół korzysta wyłącznie z pakietów publicznych, niezależnie od tego, czy z rejestru publicznego, czy innych repozytoriów typu open source, ustawienie nie ma wpływu na ich przepływ pracy w żaden sposób.

Ilustracja przedstawiająca kanał informacyjny z tylko pakietami publicznymi.

Pakiet publiczny został zmieniony na prywatny

W takiej sytuacji, gdy pakiet publiczny jest konwertowany na pakiet prywatny, ustawienie wersji zewnętrznych nie wpływa na przepływ pracy zespołu w żaden sposób.

Ilustracja przedstawiająca pakiet przekonwertowany z publicznego na prywatny.

Zezwalaj na wersje zewnętrzne

Uwaga

Aby zezwolić na zewnętrzne wersje, musisz być Właścicielem Kanału. Aby uzyskać więcej informacji, zobacz Uprawnienia kanału informacyjnego.

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Artefakty, a następnie wybierz kanał z menu rozwijanego.

  3. Wybierz pakiet, a następnie wybierz przycisk wielokropka, aby uzyskać więcej opcji. Wybierz pozycję Zezwalaj na wersje źródłowe zewnętrznie.

    Zrzut ekranu przedstawiający sposób zezwalania na wersje z zewnętrznych źródeł.

  4. Wybierz przycisk przełącznika, aby zezwolić na wersje zewnętrzne. Po zakończeniu wybierz pozycję Zamknij .

    Zrzut ekranu przedstawiający sposób włączania wersji zewnętrznych.

Zezwalaj na wersje zewnętrzne przy użyciu interfejsu API REST

Zezwalaj na wersje zewnętrzne przy użyciu programu PowerShell

  1. Utwórz osobisty token dostępu z uprawnieniami do>odczytu, zapisu i zarządzania pakietami.

    Zrzut ekranu przedstawiający sposób wybierania uprawnień dotyczących pakietów.

  2. Utwórz zmienną środowiskową dla osobistego tokenu dostępu.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Przekonwertuj osobisty token dostępu na ciąg zakodowany w formacie baser64 i skonstruuj nagłówek żądania HTTP.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Skonstruuj adres URL punktu końcowego. Przykład: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1

    • Źródło danych o zakresie projektu:

      $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"
      
    • Kanał informacyjny na potrzeby organizacji

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

Uruchom następujące polecenie, aby pobrać nadrzędny stan zachowania pakietu. $url i $headers są tymi samymi zmiennymi, które użyliśmy w poprzedniej sekcji.

Invoke-RestMethod -Uri $url -Headers $headers