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. Dříve informační kanály Artifact zkombinovaly seznam dostupných verzí balíčků ze samotného informačního kanálu i ze všech nakonfigurovaných upstreamových zdrojů.
Povolit externě zdrojové verze je funkce, která vývojářům umožňuje zvolit, jestli chtějí využívat externě zdrojové verze balíčků. Určuje, které balíčky jsou přístupné z veřejných registrů pro konkrétní balíčky.
Když zakážete přepínač Povolit externí verze , verze z veřejného registru se zablokují a přestanou být k dispozici ke stažení. Tím se přidá další vrstva zabezpečení tím, že zabrání vystavení potenciálně škodlivým balíčkům z veřejných registrů.
Pokud ale uživatelé dávají přednost, můžou povolit přepínač Povolit externí verze , aby povolovali přístup k balíčkům a spotřebovávali je z veřejných registrů.
Poznámka:
Toto nastavení nezmění žádné verze balíčků, které jsou již uloženy v informačním kanálu. Přístup k těmto verzím balíčků se v důsledku změny tohoto nastavení nezmění.
Použitelné scénáře
Následující část ukazuje různé běžné scénáře, kdy nastavení externí verze blokuje externě zdrojové verze balíčků a další scénáře, kdy není potřeba blokovat přístup k veřejným balíčkům.
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 privátních a veřejných balíčků, zakáže externí zdrojové balíčky všechny nové verze balíčků z veřejného registru.
Veřejné verze nebudou blokované.
- 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 externě zdrojové verze, 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 pomocí oprávnění Ke čtení, zápisu a správě balíčků>.
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 s oborem 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"
Informační kanál s oborem organizace:
$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