Védelem a rosszindulatú nyilvános csomagok ellen
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Az Azure Artifacts felsőbb rétegbeli forrásaival a fejlesztők egységes hírcsatorna használatával tehetnek közzé és használhatnak csomagokat az Artifact-hírcsatornákból és a népszerű nyilvános adatbázisokból, például NuGet.org vagy npmjs.com. Korábban az Artifact-hírcsatornák összevonták az elérhető csomagverziók listáját mind a hírcsatornából, mind az összes konfigurált felsőbb rétegbeli forrásból.
A Külső forrású verziók engedélyezése funkcióval a fejlesztők kiválaszthatják, hogy külső forrású csomagverziókat szeretnének-e használni. Meghatározza, hogy mely csomagok érhetők el az egyes csomagok nyilvános nyilvántartásaiból.
Ha letiltja a Külső verziók engedélyezése kapcsolót, a nyilvános beállításjegyzékből származó verziók le lesznek tiltva, és elérhetetlenné válnak a letöltéshez. Ez további biztonsági réteget biztosít azáltal, hogy megakadályozza a nyilvános adatbázisokból származó potenciálisan rosszindulatú csomagoknak való kitettséget.
Ha azonban a felhasználók szeretnék, engedélyezhetik a Külső verziók engedélyezése kapcsolót a nyilvános adatbázisokból származó csomagok elérésének és felhasználásának engedélyezéséhez.
Feljegyzés
Ez a beállítás nem módosítja a már a hírcsatornába mentett csomagverziókat. A beállítás módosítása miatt a csomagverziókhoz való hozzáférés nem változik.
Alkalmazható forgatókönyvek
Az alábbi szakasz bemutatja azokat a gyakori forgatókönyveket, amelyekben a külső verzió beállítása letiltja a külső forrású csomagverziókat, valamint azokat az egyéb forgatókönyveket, amelyekben nincs szükség a nyilvános csomagokhoz való hozzáférés letiltására.
A nyilvános verziók le vannak tiltva
Nyilvánossá tett privát csomagverzió
Ebben a forgatókönyvben a csapat egy privát csomagtal rendelkezik, amelyet nyilvánossá tettek. Ebben az esetben a külső verziók beállítása miatt a hírcsatorna letiltja az adott csomagnévvel rendelkező új verziók használatát egy nyilvános forrásból.
Privát és nyilvános csomagok használata
Ebben a forgatókönyvben, ha egy csapat privát és nyilvános csomagok kombinációját használja, a külső forrásból származó csomagok letiltása blokkolja a nyilvános beállításjegyzék új csomagverzióit.
A nyilvános verziók nem lesznek letiltva
Minden csomag privát*
Ha az összes meglévő csomag privát, és a csapat nem tervezi nyilvános csomagok használatát, a külső verziók beállítása nincs hatással a csapat munkafolyamatára ebben a forgatókönyvben.
Minden csomag nyilvános
Ebben az esetben, ha a csapat kizárólag nyilvános csomagokat használ, akár a nyilvános beállításjegyzékből, akár más nyílt forráskódú adattárakból, a beállítás semmilyen módon nem befolyásolja a munkafolyamatot.
Nyilvános csomag privátként
Ebben az esetben, ha egy nyilvános csomagot privát csomaggá alakít át, a külső verziók beállítása semmilyen módon nem befolyásolja a csapat munkafolyamatát.
Külső verziók engedélyezése
Feljegyzés
A külső forrású verziók engedélyezéséhez hírcsatorna-tulajdonosnak kell lennie. További információ: Hírcsatorna-engedélyek.
Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.
Válassza az Összetevők lehetőséget, majd válassza ki a hírcsatornát a legördülő menüből.
Válassza ki a csomagot, majd a három pont gombra kattintva további lehetőségeket. Válassza a Külső forrású verziók engedélyezése lehetőséget.
A külső verziók engedélyezéséhez válassza a váltógombot. Ha végzett, válassza a Bezárás lehetőséget.
Külső verziók engedélyezése a REST API használatával
Külső verziók engedélyezése a PowerShell használatával
Hozzon létre egy személyes hozzáférési jogkivonatot a Csomagolás>olvasása, írása és kezelése engedélyekkel.
Hozzon létre egy környezeti változót a személyes hozzáférési jogkivonathoz.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
Konvertálja a személyes hozzáférési jogkivonatot baser64 kódolású sztringgé, és hozza létre a HTTP-kérés fejlécét.
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
Hozza létre a végpont URL-címét. Példa: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
Projekt hatókörű hírcsatorna:
$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"
Szervezeti hatókörű hírcsatorna:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
- Az upstreaming viselkedésének lekérése
- A streamelési viselkedés beállítása
- A felsőbb rétegbeli viselkedés törlése
Futtassa a következő parancsot a csomag felsőbb rétegbeli viselkedési állapotának lekéréséhez. $url
és $headers
ugyanazok a változók, amelyeket az előző szakaszban használtunk.
Invoke-RestMethod -Uri $url -Headers $headers