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 kenyamanan menggunakan umpan terpadu untuk menerbitkan dan menggunakan paket dari umpan Artefak dan registri publik populer seperti NuGet.org atau npmjs.com. Sebelumnya, umpan Artefak menggabungkan daftar versi paket yang tersedia dari umpan itu sendiri dan semua sumber hulu yang dikonfigurasi.

Ilustrasi yang memperlihatkan konten umpan.

Versi Izinkan bersumber eksternal adalah fitur yang memungkinkan pengembang memilih apakah mereka ingin menggunakan versi paket yang bersumber secara eksternal. Ini mengatur paket mana yang dapat diakses dari registri publik untuk paket tertentu.

Saat Anda menonaktifkan tombol Izinkan Versi Eksternal, versi dari registri publik diblokir dan menjadi tidak tersedia untuk diunduh. Ini menambahkan lapisan keamanan tambahan dengan mencegah paparan paket yang berpotensi berbahaya dari registri publik.

Namun, jika pengguna lebih suka, mereka dapat mengaktifkan tombol Izinkan Versi Eksternal untuk mengizinkan akses ke dan menggunakan paket dari registri publik.

Catatan

Pengaturan ini tidak akan membuat perubahan pada versi paket apa pun yang sudah disimpan ke umpan. Akses ke versi paket ini tidak akan berubah sebagai akibat dari perubahan pengaturan ini.

Skenario yang berlaku

Bagian berikut mengilustrasikan berbagai skenario umum di mana pengaturan versi eksternal memblokir versi paket yang bersumber secara eksternal, dan skenario lain di mana tidak perlu memblokir akses ke paket publik.

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.

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 hanya dengan 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 memperlihatkan umpan hanya dengan paket publik.

Paket publik dibuat 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 Umpan 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 titik akhir 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 cakupan 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