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. Wcześniej źródła artefaktów połączyły listę dostępnych wersji pakietów zarówno z samego kanału informacyjnego, jak i wszystkich skonfigurowanych źródeł nadrzędnych.
Opcja Zezwalaj na wersje źródłowe zewnętrznie jest funkcją, która umożliwia deweloperom wybór, czy chcą korzystać z wersji pakietów źródłowych zewnętrznych. Określa, które pakiety są dostępne z publicznych rejestrów dla określonych pakietów.
Po wyłączeniu przełącznika Zezwalaj na wersje zewnętrzne wersje z rejestru publicznego są blokowane i stają się niedostępne do pobrania. Spowoduje to dodanie dodatkowej warstwy zabezpieczeń, uniemożliwiając narażenie na potencjalnie złośliwe pakiety z publicznych rejestrów.
Jeśli jednak użytkownicy wolą, mogą włączyć przełącznik Zezwalaj na wersje zewnętrzne, aby zezwolić na dostęp do pakietów i korzystać z nich z publicznych rejestrów.
Uwaga
To ustawienie nie spowoduje wprowadzenia zmian w żadnych wersjach pakietów, które zostały już zapisane w kanale informacyjnym. Dostęp do tych wersji pakietu nie zmieni się w wyniku zmiany tego ustawienia.
Odpowiednie scenariusze
W poniższej sekcji przedstawiono różne typowe scenariusze, w których ustawienie wersji zewnętrznej blokuje wersje pakietów źródłowych zewnętrznych i inne scenariusze, w których nie ma potrzeby blokowania dostępu do pakietów publicznych.
Wersje publiczne są blokowane
Publiczna wersja pakietu prywatnego
W tym scenariuszu zespół ma pakiet prywatny, który został upubliczniony. Ustawienie wersji zewnętrznych w tym przypadku spowoduje, że kanał informacyjny zablokuje użycie wszystkich nowych wersji z tą nazwą pakietu ze źródła publicznego.
Posiadanie zarówno prywatnych, jak i publicznych pakietów
W tym scenariuszu, jeśli zespół korzysta z kombinacji prywatnych i publicznych pakietów, zezwalanie na zewnętrzne pakiety źródłowe blokuje wszystkie nowe wersje pakietów z rejestru publicznego.
Wersje publiczne nie będą blokowane
- Wszystkie pakiety są prywatne
- Wszystkie pakiety są publiczne
- Pakiet publiczny został udostępniony jako prywatny
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.
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.
Pakiet publiczny został udostępniony jako 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.
Zezwalaj na wersje zewnętrzne
Uwaga
Aby zezwolić na wersje źródłowe zewnętrznie, musisz być właścicielem kanału informacyjnego. Aby uzyskać więcej informacji, zobacz Uprawnienia kanału informacyjnego.
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Artefakty, a następnie wybierz źródło danych z menu rozwijanego.
Wybierz pakiet, a następnie wybierz przycisk wielokropka, aby uzyskać więcej opcji. Wybierz pozycję Zezwalaj na wersje źródłowe zewnętrznie.
Wybierz przycisk przełącznika, aby zezwolić na wersje zewnętrzne. Po zakończeniu wybierz pozycję Zamknij .
Zezwalaj na wersje zewnętrzne przy użyciu interfejsu API REST
Zezwalaj na wersje zewnętrzne przy użyciu programu PowerShell
Utwórz osobisty token dostępu z uprawnieniami do>odczytu, zapisu i zarządzania pakietami.
Utwórz zmienną środowiskową dla osobistego tokenu dostępu.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
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" }
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 o zakresie 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"
- Uzyskiwanie zachowania nadrzędnego
- Konfigurowanie zachowania nadrzędnego
- Czyszczenie zachowania transmisji strumieniowej
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