Ochrana před škodlivými veřejnými balíčky
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Díky upstreamovým zdrojům Azure Artifacts získají vývojáři pohodlí při publikování a využívání balíčků z informačních kanálů Artifact a oblíbených veřejných registrů, jako jsou NuGet.org nebo npmjs.com.
Povolit externě zdrojové verze
Tato funkce umožňuje vývojářům řídit, jestli chtějí využívat verze balíčků z veřejných registrů, jako jsou NuGet.org nebo npmjs.com.
Jakmile je přepínač Povolit externí verze pro konkrétní balíček povolen, stanou se verze dostupné ve veřejném registru k dispozici ke stažení. Ve výchozím nastavení je tato možnost zakázaná a přidává další vrstvu zabezpečení tím, že brání vystavení potenciálně škodlivým balíčkům z veřejných registrů. Musíte být vlastníkem informačního kanálu, abyste mohli povolit funkci umožnit externě zdrojené verze.
Poznámka:
Změna tohoto nastavení nemá vliv na verze balíčků, které jsou již uloženy v informačním kanálu. Tyto verze zůstanou přístupné bez ohledu na toto nastavení.
Použitelné scénáře
Následující část popisuje běžné scénáře, kdy jsou externí verze (balíčky z veřejných registrů) blokovány nebo povoleny při ukládání do kanálu. Ve zbývající části tohoto článku označujeme balíčky z veřejných registrů jako veřejné balíčky a balíčky v informačním kanálu Azure Artifacts jako privátní balíčky.
Scénář 1: Veřejné verze jsou blokované
Veřejná verze privátního balíčku
V tomto scénáři má tým privátní balíček, který byl zpřístupněn jako veřejný. Nastavení externích verzí v tomto případě způsobí, že informační kanál zablokuje spotřebu všech nových verzí s tímto názvem balíčku z veřejného zdroje.
Používání privátních i veřejných balíčků
Pokud v tomto scénáři tým používá kombinaci soukromých a veřejných balíčků, pak zakázání externě dodávaných balíčků blokuje jakékoli nové verze balíčků z veřejného registru.
Scénář 2: Veřejné verze nebudou blokovány
- Všechny balíčky jsou soukromé.
- Všechny balíčky jsou veřejné.
- Veřejný balíček vytvořený jako soukromý
Všechny balíčky jsou soukromé*
Pokud jsou všechny existující balíčky soukromé a tým nemá v úmyslu používat žádné veřejné balíčky, nastavení externích verzí nemá žádný vliv na pracovní postup týmu v tomto scénáři.
Všechny balíčky jsou veřejné.
Pokud v tomto scénáři tým výhradně využívá veřejné balíčky, ať už z veřejného registru nebo jiných opensourcových úložišť, nastavení nijak neovlivní pracovní postup.
Veřejný balíček vytvořený jako soukromý
V takovém případě, když je veřejný balíček převeden na privátní balíček, nastavení externích verzí nijak neovlivní pracovní postup týmu.
Povolit externí verze
Poznámka:
Pokud chcete povolit verze z externích zdrojů, musíte být vlastníkem informačního kanálu. Další informace najdete v tématu Oprávnění informačního kanálu.
Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.
Vyberte Artefakty a pak v rozevírací nabídce vyberte svůj informační kanál.
Vyberte balíček a pak výběrem tlačítka se třemi tečky zobrazíte další možnosti. Vyberte Povolit externě zdrojové verze.
Výběrem přepínače povolte externí verze. Až budete hotovi, vyberte Zavřít .
Povolení externích verzí pomocí rozhraní REST API
Povolení externích verzí pomocí PowerShellu
Vytvořte osobní přístupový token s oprávněními pro Balíčkování ke čtení, zápisu a správě.
Vytvořte proměnnou prostředí pro váš osobní přístupový token.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
Převeďte svůj osobní přístupový token na řetězec kódovaný v baser64 a vytvořte hlavičku požadavku HTTP.
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
Vytvořte adresu URL koncového bodu. Příklad: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
Informační kanál omezený na projekt:
$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"
Organizačně vymezený informační kanál
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
Spuštěním následujícího příkazu načtěte stav upstreamového chování balíčku.
$url
a $headers
jsou stejné proměnné, které jsme použili v předchozí části.
Invoke-RestMethod -Uri $url -Headers $headers