Bagikan melalui


Melindungi terhadap paket publik berbahaya

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Dengan sumber hulu Azure Artifacts, pengembang mendapatkan kemudahan dengan menggunakan umpan terpadu untuk menerbitkan dan mengonsumsi paket dari umpan Artifacts dan registri publik populer seperti NuGet.org atau npmjs.com.

Perbolehkan versi yang bersumber secara eksternal

Fitur ini memungkinkan pengembang mengontrol apakah mereka ingin menggunakan versi paket dari registri publik seperti NuGet.org atau npmjs.com.

Setelah tombol Izinkan Versi Eksternal diaktifkan untuk paket tertentu, versi dari registri publik tersedia untuk diunduh. Secara default, opsi ini dinonaktifkan, menambahkan lapisan keamanan tambahan dengan mencegah paparan paket yang berpotensi berbahaya dari registri publik. Anda harus menjadi Pemilik Umpan untuk mengaktifkan memungkinkan fitur versi yang bersumber secara eksternal.

Catatan

Mengubah pengaturan ini tidak memengaruhi versi paket yang sudah disimpan ke umpan. Versi tersebut akan tetap dapat diakses terlepas dari pengaturan ini.

Skenario yang berlaku

Bagian berikut menguraikan skenario umum di mana versi eksternal (paket dari registri publik) baik diblokir maupun diizinkan untuk disimpan dalam saluran. Di sisa artikel ini, kami menyebut paket dari registri publik sebagai paket dan paket publik dalam umpan Azure Artifacts sebagai paket privat.

Skenario 1: versi publik diblokir

Versi paket privat dibuat publik

Dalam skenario ini, tim memiliki paket privat yang dipublikasikan. Pengaturan versi eksternal dalam hal ini akan menyebabkan umpan memblokir konsumsi versi baru apa pun dengan nama paket tersebut dari sumber publik.

Ilustrasi yang menunjukkan versi paket internal yang dibuat publik.

Memiliki paket privat dan publik

Dalam skenario ini, jika tim menggunakan kombinasi paket privat dan publik, melarang paket bersumber eksternal memblokir versi paket baru apa pun dari registri publik.

Ilustrasi yang menunjukkan paket privat dan publik yang tersedia.

Skenario 2: versi publik tidak akan diblokir

Semua paket bersifat privat*

Jika semua paket yang ada bersifat privat, dan tim tidak memiliki rencana untuk menggunakan paket publik apa pun, pengaturan versi eksternal tidak berpengaruh pada alur kerja tim dalam skenario ini.

Ilustrasi yang menunjukkan umpan dengan hanya paket-paket privat.

Semua paket bersifat publik

Dalam skenario ini, jika tim secara eksklusif menggunakan paket publik, baik dari registri publik atau repositori sumber terbuka lainnya, pengaturan tidak memengaruhi alur kerja mereka dengan cara apa pun.

Ilustrasi yang menunjukkan umpan dengan hanya paket publik.

Paket publik diubah menjadi privat

Dalam situasi ini, ketika paket publik dikonversi ke paket privat, pengaturan versi eksternal tidak memengaruhi alur kerja tim dengan cara apa pun.

Ilustrasi yang memperlihatkan paket yang dikonversi dari publik ke privat.

Perbolehkan versi eksternal

Catatan

Anda harus menjadi Pemilik Feed untuk mengizinkan versi yang bersumber secara eksternal. Untuk informasi selengkapnya, lihat Izin umpan.

  1. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Artefak, lalu pilih umpan Anda dari menu dropdown.

  3. Pilih paket Anda, lalu pilih tombol elipsis untuk opsi lainnya. Pilih Izinkan versi bersumber eksternal.

    Cuplikan layar memperlihatkan cara mengizinkan versi yang bersumber secara eksternal.

  4. Pilih tombol alih untuk memperbolehkan versi eksternal. Pilih Tutup saat Anda selesai.

    Cuplikan layar memperlihatkan cara mengaktifkan versi eksternal.

Mengizinkan versi eksternal menggunakan REST API

Perbolehkan versi eksternal menggunakan PowerShell

  1. Buat token akses pribadi dengan Kemasan>Baca, tulis, & kelola izin.

    Cuplikan layar memperlihatkan cara memilih izin pengemasan.

  2. Buat variabel lingkungan untuk token akses pribadi Anda.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Konversikan token akses pribadi Anda ke string yang dikodekan baser64 dan buat header permintaan HTTP.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Buat URL endpoint Anda. Contoh: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1

    • Umpan berskala proyek

      $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"
      
    • Umpan cakupan organisasi:

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

Jalankan perintah berikut untuk mengambil status perilaku upstream paket Anda. $url dan $headers adalah variabel yang sama dengan yang kami gunakan di bagian sebelumnya.

Invoke-RestMethod -Uri $url -Headers $headers