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

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Artifacts yukarı akış kaynaklarıyla geliştiriciler, Yapıt akışlarından ve NuGet.org veya npmjs.com gibi popüler genel kayıt defterlerinden paketleri yayımlamak ve kullanmak için birleşik akış kullanma kolaylığı elde eder. Daha önce Yapıt akışları hem akışın kendisinden hem de yapılandırılmış tüm yukarı akış kaynaklarından kullanılabilir paket sürümlerinin listesini bir araya getiriyor.

Akışın içeriğini gösteren çizim.

Dış kaynaklı sürümlere izin ver, geliştiricilerin dış kaynaklı paket sürümlerini kullanmak isteyip istemediklerini seçmesine olanak tanıyan bir özelliktir. Belirli paketler için genel kayıt defterlerinden erişilebilen paketleri yönetir.

Dış Sürümlere İzin Ver iki durumlu düğmesini devre dışı bırakırsanız, genel kayıt defterindeki sürümler engellenir ve indirilemez duruma gelir. Bu, genel kayıt defterlerinden gelen kötü amaçlı olabilecek paketlerin açığa çıkmasını önleyerek ek bir güvenlik katmanı ekler.

Ancak kullanıcılar tercih ederse, genel kayıt defterlerinden paketlere erişim ve kullanma izni vermek için Dış Sürümlere İzin Ver iki durumlu düğmesini etkinleştirebilir.

Not

Bu ayar, akışa zaten kaydedilmiş olan paket sürümlerinde değişiklik yapmaz. Bu ayarın değiştirilmesi sonucunda bu paket sürümlerine erişim değişmez.

Uygulanabilir senaryolar

Aşağıdaki bölümde, dış sürüm ayarının dış kaynaklı paket sürümlerini engellediği çeşitli yaygın senaryolar ve genel paketlere erişimi engellemeye gerek olmayan diğer senaryolar gösterilmektedir.

Genel sürümler engellendi

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

Bu senaryoda, bir ekibin genel kullanıma açık özel bir paketi vardır. Bu durumda dış sürümler ayarı, akışın ortak kaynaktan bu paket adına sahip yeni sürümlerin tüketimini engellemesine neden olur.

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

Hem özel hem de genel paketlere sahip olma

Bu senaryoda, bir ekip özel ve genel paketlerin birleşimini kullanıyorsa, dış kaynaklı paketlere izin verme, genel kayıt defterinden yeni paket sürümlerini engeller.

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

Genel sürümler engellenmez

Tüm paketler özeldir*

Mevcut tüm paketler özelse ve ekibin genel paketleri kullanma planı yoksa, dış sürümler ayarının bu senaryoda ekibin iş akışı üzerinde hiçbir etkisi olmaz.

Yalnızca özel paketler içeren akışı gösteren çizim.

Tüm paketler geneldir

Bu senaryoda, ister genel kayıt defterinden ister diğer açık kaynak depolarından olsun, ekip yalnızca genel paketleri kullanıyorsa, bu ayar iş akışını hiçbir şekilde etkilemez.

Yalnızca genel paketleri içeren akışı gösteren çizim.

Özel yapılan genel paket

Bu durumda, genel paket özel pakete dönüştürüldüğünde dış sürümler ayarı ekibin iş akışını hiçbir şekilde etkilemez.

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

Dış sürümlere izin ver

Not

Dış kaynaklı sürümlere izin vermek için Akış Sahibi olmanız gerekir. Daha fazla bilgi için bkz . Akış izinleri.

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. Yapıtlar'ı seçin ve ardından açılan menüden akışınızı seçin.

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

    Dış kaynaklı sürümlere izin verme işlemini gösteren ekran görüntüsü.

  4. Dış sürümlere izin vermek için iki durumlu düğmeyi seçin. İşiniz bittiğinde Kapat'ı seçin.

    Dış sürümleri etkinleştirmeyi gösteren ekran görüntüsü.

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

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

  1. Paketleme>Okuma, yazma ve yönetme izinleriyle kişisel erişim belirteci oluşturun.

    Paketleme izinlerinin nasıl seçiliyor olduğunu gösteren ekran görüntüsü.

  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 baser64 ile kodlanmış 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. Uç nokta URL'nizi oluşturma. Örnek: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1

    • Proje kapsamlı akış:

      $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"
      
    • Kuruluş kapsamlı akış:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      

Paketinizin yukarı akış davranış durumunu almak için aşağıdaki komutu çalıştırın. $url ve $headers önceki bölümde kullandığımız değişkenlerle aynıdır.

Invoke-RestMethod -Uri $url -Headers $headers