Aracılığıyla paylaş


Kötü amaçlı genel paketlere karşı koruma

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Azure Artifacts yukarı akış kaynakları, geliştiricilerin hem yayımlanmış paketleri hem de NuGet.org gibi genel kayıt defterlerinden tüketilenleri depolamak için tek bir akış kullanarak paket yönetimini merkezileştirmesini sağlar.

Yukarı akış kaynakları basitlik, güvenilirlik ve paket bütünlüğü gibi bağımlılıkları yönetmek için çeşitli avantajlar sunar. Bkz. Yukarı akış kaynakları nedir? Daha fazla bilgi için.

Dış kaynaklı sürümlere izin ver

Bu özellik, geliştiricilerin NuGet.org veya npmjs.com gibi genel kayıt defterlerinden paket sürümlerini kullanmak isteyip istemediklerini denetlemesini sağlar.

Belirli bir paket için Dış Sürümlere İzin Ver anahtarı etkinleştirildikten sonra, genel kayıt defterindeki sürümler depoya kaydedilebilecek hale gelir. Varsayılan olarak, bu seçenek devre dışı bırakılır ve genel kayıt defterlerinden gelen kötü amaçlı olabilecek paketlere maruz kalma olasılığını azaltarak ek bir güvenlik katmanı eklenir. Bu ayarın değiştirilmesi, akışa kaydedilmiş paket sürümlerini etkilemez. Bu sürümler bu ayardan bağımsız olarak erişilebilir durumda kalır. Dış kaynaklı sürümlere izin verme özelliğini etkinleştirmek için Besleme Sahibi olmanız gerekir.

Paket için dış sürümlere izin verme

Belirli bir paket için dış sürümlerin tüketilmesine olanak tanımak için şu adımları izleyin:

Not

Dış kaynaklı sürümlere izin vermek için Akış Sahibi olmanız gerekir.

  1. Azure DevOps'ta oturum açın ve projenize gidin.

  2. Nesneler'i seçin ve ardından açılan menüden beslemenizi seçin.

  3. Paketinizi seçin, diğer seçenekler için üç nokta düğmesini ve ardından Dış kaynaklı sürümlere izin ver'i seçin.

  4. Özelliği etkinleştirmek için Dış Sürümlere İzin Ver'i açıp bitirdiğinizde Kapat'ı seçin.

    Azure Artifacts'te belirli bir paket için dış sürümleri etkinleştirmeyi gösteren ekran görüntüsü.

REST API kullanarak dış sürümlere izin ver

REST API kullanarak belirli bir paket için dış sürümleri etkinleştirmek için aşağıdaki uç noktaları kullanın:

Paket Türü API Uç Noktaları
NuGet - Akış davranışını ayarlama
- Yukarı akış davranışı alma
npm - Akış davranışını ayarlama
- Kapsamlı yukarı akış davranışını ayarlama
- Paket yukarı akış davranışını alma
- Kapsamlı paket yukarı akış davranışını elde etme
Piton - Yukarı akış davranışı alma
- Akış davranışını ayarlama
Maven - Yukarı akış davranışı alma
- Akış davranışını ayarlama
Kargo - Yukarı akış davranışı alma
- Akış davranışını ayarlama

PowerShell kullanarak dış sürümlere izin ver

PowerShell kullanarak belirli bir paket için dış sürümleri etkinleştirmek için şu adımları izleyin:

  1. Paketlemeoluşturun.

  2. Kişisel erişim belirteciniz için bir ortam değişkeni oluşturun.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Kişisel erişim belirtecinizi Base64 ile kodlanmış bir dizeye dönüştürün ve HTTP isteği üst bilgisini oluşturun.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Akış türünüz temelinde uç nokta URL'sini oluşturma:

    • Proje odaklı besleme:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=7.2-preview.1"
      
    • Kuruluş bazlı besleme:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=7.2-preview.1"
      
  5. Senaryonuza göre tablodan komutunu çalıştırın:

    Eylem Description Command
    Yukarı Akış Davranışı Alma Paketinizin yukarı akış davranış durumunu alın. Önceki adımlardaki $url ve $headers kullanır. Invoke-RestMethod -Uri $url -Headers $headers
    Yukarı Akış Davranışını Ayarlama Paketiniz için dış kaynaklı sürümlere izin vermek üzere versionsFromExternalUpstreams değerini AllowExternalVersions olarak ayarlayın. $body = '{"versionsFromExternalUpstreams": "AllowExternalVersions"}'
    Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Patch -ContentType "application/json"
    Yukarı Akış Davranışını Temizle olarak ayarlayarak versionsFromExternalUpstreamsAutoyukarı akış davranışını sıfırlayın. $body = '{"versionsFromExternalUpstreams": "Auto"}'
    Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Patch -ContentType "application/json"

Not

Yukarı akış davranışındaki değişikliklerin hizmet genelinde yayılması zaman alabilir. Ayarları güncelleştirdikten sonra paketiniz kullanılamıyorsa değişikliklerin etkili olması için 3 saate kadar bekleyin.

Uygulanabilir senaryolar

Bu bölümde, harici sürümlerin (genel kayıt defterlerindeki paketler) beslemeye kaydedilmesinin engellendiği veya izin verildiği yaygın senaryolar açıklanmaktadır. Bu makalenin geri kalanında, genel kayıt defterlerindeki paketlere genel paketler ve Azure Artifacts akışında özel paketler olarak depolanan paketler olarak başvuracağız.

Senaryo 1: Genel sürümler engellendi

Aşağıdaki iki durumda Dış Sürümlere İzin Ver özelliği etkinleştirildiğinde genel sürümlerin akışa kaydedilmesi engellenir:

Genel kullanıma açık özel paket sürümü

Özel paket daha sonra genel kullanıma açık hale getirilirse akış, ortak kaynaklardan aynı paket adına sahip yeni sürümleri engeller.

Genel kullanıma açık iç paket sürümünü gösteren çizim.

Hem özel hem de genel paketlere sahip olma

Bir ekip hem özel hem de genel paketleri kullandığında, dış sürüme izin ver etkinleştirildiğinde akış, genel kayıt defterinden yeni paket sürümlerini engeller.

Kullanılabilir özel ve genel paketleri gösteren çizim.

Senaryo 2: Genel sürümlere izin verilir

Aşağıdaki üç durumda Dış Sürümlere İzin Ver özelliği etkinleştirildiğinde genel sürümlerin akışa kaydedilmesine izin verilir:

Tüm paketler özeldir

Tüm paketler özelse ve ekip genel paketleri kullanmayı planlamıyorsa, bu ayarın etkinleştirilmesinin ekibin iş akışı üzerinde hiçbir etkisi olmaz.

Yalnızca özel paketlerden oluşan beslemeyi gösteren bir çizim.

Tüm paketler geneldir

Ekip yalnızca kayıt defterlerinden veya açık kaynak depolarından genel paketler kullanıyorsa, ayarın etkinleştirilmesi iş akışını etkilemez.

Yalnızca genel paketleri içeren beslemeyi gösteren bir çizim.

Genel bir paket özel hale getirildi

Genel paket daha sonra özele dönüştürüldüğünde, dış sürümlere izin ver ayarının etkinleştirilmesi ekibin iş akışını etkilemez.

Genelden özele dönüştürülmüş bir paketi gösteren çizim.