Mengedit kontrol asal paket - Amazon CodeCatalyst

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengedit kontrol asal paket

Di Amazon CodeCatalyst, versi paket dapat ditambahkan ke repositori paket dengan menerbitkannya secara langsung, menariknya ke bawah dari repositori upstream, atau menelannya dari repositori publik eksternal melalui gateway. Jika Anda mengizinkan versi paket ditambahkan baik dengan penerbitan langsung dan menelan dari repositori publik, maka Anda rentan terhadap serangan substitusi ketergantungan. Untuk informasi selengkapnya, lihat Serangan substitusi ketergantungan. Untuk melindungi diri Anda dari serangan substitusi dependensi, konfigurasikan kontrol asal paket pada paket dalam repositori untuk membatasi bagaimana versi paket itu dapat ditambahkan ke repositori.

Anda harus mempertimbangkan untuk mengonfigurasi kontrol asal paket untuk membuat versi baru dari paket yang berbeda berasal dari kedua sumber internal, seperti penerbitan langsung, dan sumber eksternal, seperti repositori publik. Secara default, kontrol asal paket dikonfigurasi berdasarkan bagaimana versi pertama paket ditambahkan ke repositori.

Pengaturan kontrol asal paket

Dengan kontrol asal paket, Anda dapat mengonfigurasi bagaimana versi paket dapat ditambahkan ke repositori. Daftar berikut mencakup pengaturan dan nilai kontrol asal paket yang tersedia.

Publikasikan

Pengaturan ini mengonfigurasi apakah versi paket dapat dipublikasikan langsung ke repositori menggunakan manajer paket atau alat serupa.

  • ALLOW: Versi Package dapat dipublikasikan secara langsung.

  • BLOCK: Versi Package tidak dapat dipublikasikan secara langsung.

Hulu

Pengaturan ini mengonfigurasi apakah versi paket dapat dicerna dari eksternal, repositori publik, atau disimpan dari repositori hulu saat diminta oleh manajer paket.

  • ALLOW: Setiap versi paket dapat dipertahankan dari repositori lain yang dikonfigurasi sebagai CodeCatalyst repositori upstream atau dicerna dari sumber publik dengan koneksi eksternal.

  • BLOCK: Versi Package tidak dapat dipertahankan dari CodeCatalyst repositori lain yang dikonfigurasi sebagai repositori upstream atau dicerna dari sumber publik dengan koneksi eksternal.

Pengaturan kontrol asal paket default

Kontrol asal paket default untuk sebuah paket akan didasarkan pada bagaimana versi pertama paket itu ditambahkan ke repositori paket.

  • Jika versi paket pertama diterbitkan secara langsung oleh manajer paket, pengaturannya adalah Publish: ALLOW dan Upstream: BLOCK.

  • Jika versi paket pertama dicerna dari sumber publik, pengaturannya adalah Publish: BLOCK dan Upstream: ALLOW.

Skenario kontrol akses paket umum

Bagian ini menjelaskan beberapa skenario umum ketika versi paket ditambahkan ke repositori CodeCatalyst paket. Pengaturan kontrol asal paket diatur untuk paket baru tergantung pada bagaimana versi paket pertama ditambahkan.

Dalam skenario berikut, paket internal diterbitkan langsung dari manajer paket ke repositori Anda, seperti paket yang Anda pertahankan. Paket eksternal adalah paket yang ada di repositori publik yang dapat dicerna ke dalam repositori Anda melalui repositori gateway upstream.

Versi paket eksternal diterbitkan untuk paket internal yang ada

Dalam skenario ini, pertimbangkan paket internal, PackageA. Tim Anda menerbitkan versi paket pertama untuk PackageA ke repositori paket. CodeCatalyst Karena ini adalah versi paket pertama untuk paket itu, pengaturan kontrol asal paket secara otomatis diatur ke Publish: Allow and Upstream: Block. Setelah paket diterbitkan di repositori Anda, paket dengan nama yang sama dipublikasikan ke repositori publik yang terhubung ke repositori paket Anda. CodeCatalyst Ini bisa berupa percobaan serangan substitusi ketergantungan terhadap paket internal, atau bisa juga kebetulan. Terlepas dari itu, kontrol asal paket dikonfigurasi untuk memblokir konsumsi versi eksternal baru untuk melindungi diri dari serangan potensial.

Pada gambar berikut, RepoA adalah repositori CodeCatalyst paket Anda dengan koneksi upstream ke repositori. npm-public-registry-gateway Repositori Anda berisi versi 1.1 dan 2.1 dari PackageA, tetapi versi 3.0 dipublikasikan ke repositori publik. Biasanya, RepOA akan menelan versi 3.0 setelah paket diminta oleh manajer paket. Karena konsumsi paket disetel ke Block, versi 3.0 tidak tertelan ke dalam repositori CodeCatalyst paket Anda dan tidak tersedia untuk manajer paket yang terhubung dengannya.

Grafik sederhana yang menunjukkan versi paket eksternal baru yang diblokir dari repositori publik.

Versi paket internal diterbitkan untuk paket eksternal yang ada

Dalam skenario ini, sebuah paket, PackageB, ada secara eksternal di repositori publik yang telah Anda sambungkan ke repositori Anda. Ketika manajer paket yang terhubung ke repositori Anda meminta PackageB, versi paket diserap ke dalam repositori Anda dari repositori publik. Karena ini adalah versi paket pertama dari PackageB yang ditambahkan ke repositori Anda, pengaturan asal paket dikonfigurasi untuk Publish: BLOCK dan Upstream: ALLOW. Kemudian, Anda mencoba mempublikasikan versi dengan nama paket yang sama ke repositori. Anda mungkin tidak mengetahui paket publik dan mencoba mempublikasikan paket yang tidak terkait dengan nama yang sama, atau Anda mungkin mencoba menerbitkan versi yang ditambal, atau Anda mungkin mencoba untuk secara langsung mempublikasikan versi paket persis yang sudah ada secara eksternal. CodeCatalyst menolak versi yang Anda coba terbitkan, tetapi Anda dapat secara eksplisit mengganti penolakan dan mempublikasikan versinya, jika perlu.

Pada gambar berikut, RepoA adalah repositori CodeCatalyst paket Anda dengan koneksi upstream ke repositori. npm-public-registry-gateway Repositori paket Anda berisi versi 3.0 yang dicerna dari repositori publik. Anda ingin mempublikasikan versi 1.2 ke repositori paket Anda. Biasanya, Anda dapat mempublikasikan versi 1.2 ke RePoA, tetapi karena penerbitan diatur ke Blokir, versi 1.2 tidak dapat dipublikasikan.

Grafik sederhana yang menampilkan penerbitan paket diblokir.

Menerbitkan versi paket yang ditambal dari paket eksternal yang ada

Dalam skenario ini, sebuah paket, PackageB, ada secara eksternal di repositori publik yang telah Anda sambungkan ke repositori paket Anda. Ketika manajer paket yang terhubung ke repositori Anda meminta PackageB, versi paket diserap ke dalam repositori Anda dari repositori publik. Karena ini adalah versi paket pertama dari PackageB yang ditambahkan ke repositori Anda, pengaturan asal paket dikonfigurasi untuk Publish: BLOCK dan Upstream: ALLOW. Tim Anda memutuskan untuk menerbitkan versi paket yang ditambal dari paket ini ke repositori. Untuk dapat mempublikasikan versi paket secara langsung, tim Anda mengubah pengaturan kontrol asal paket menjadi Publish: ALLOW dan Upstream: BLOCK. Versi paket ini sekarang dapat dipublikasikan langsung ke repositori Anda dan dicerna dari repositori publik. Setelah tim Anda menerbitkan versi paket yang ditambal, tim Anda mengembalikan setelan asal paket ke Publish: BLOCK dan Upstream: ALLOW.

Mengedit kontrol asal paket

Kontrol asal paket dikonfigurasi secara otomatis berdasarkan bagaimana versi paket pertama dari sebuah paket ditambahkan ke repositori paket. Untuk informasi selengkapnya, lihat Pengaturan kontrol asal paket default. Untuk menambah atau mengedit kontrol asal paket untuk paket dalam repositori CodeCatalyst paket, lakukan langkah-langkah dalam prosedur berikut.

Untuk menambah atau mengedit kontrol asal paket
  1. Di panel navigasi, pilih Paket.

  2. Pilih repositori paket yang berisi paket yang ingin Anda edit.

  3. Dalam tabel Paket, cari dan pilih paket yang ingin Anda edit.

  4. Dari halaman ringkasan paket, pilih Kontrol asal.

  5. Di kontrol Origin, pilih kontrol asal paket yang ingin Anda atur untuk paket ini. Kedua pengaturan kontrol asal paket, Publish dan Upstream, harus diatur pada saat yang sama.

    • Untuk mengizinkan penerbitan versi paket secara langsung, di Publikasikan, pilih Izinkan. Untuk memblokir penerbitan versi paket, pilih Blokir.

    • Untuk memungkinkan konsumsi paket dari repositori eksternal dan menarik paket dari repositori upstream, di sumber Upstream, pilih Izinkan. Untuk memblokir semua konsumsi dan penarikan versi paket dari repositori eksternal dan upstream, pilih Blokir.

  6. Pilih Simpan.

Publikasi dan repositori hulu

Di CodeCatalyst, Anda tidak dapat mempublikasikan versi paket yang ada di repositori upstream yang dapat dijangkau atau repositori publik. Misalnya, misalkan Anda ingin mempublikasikan paket lodash@1.0 npm ke repositori,myrepo, dan myrepo memiliki repositori upstream dengan koneksi eksternal ke npmjs.com. Pertimbangkan skenario berikut.

  1. Pengaturan kontrol asal paket aktif lodash adalah Publish: ALLOW dan Upstream: ALLOW. Jika lodash@1.0 ada di repositori upstream atau di npmjs.com, CodeCatalyst menolak setiap upaya untuk mempublikasikannya dengan mengeluarkan kesalahan konflik 409. myrepo Anda masih dapat mempublikasikan versi yang berbeda, sepertilodash@1.1.

  2. Pengaturan kontrol asal paket aktif lodash adalah Publish: ALLOW dan Upstream: BLOCK. Anda dapat mempublikasikan versi apa pun lodash ke repositori Anda yang belum ada karena versi paket tidak dapat dijangkau.

  3. Pengaturan kontrol asal paket aktif lodash adalah Publish: BLOCK dan Upstream: ALLOW. Anda tidak dapat mempublikasikan versi paket apa pun langsung ke repositori Anda.

Serangan substitusi ketergantungan

Package manager menyederhanakan proses pengemasan dan berbagi kode yang dapat digunakan kembali. Paket-paket ini mungkin paket pribadi yang dikembangkan oleh organisasi untuk digunakan dalam aplikasi mereka, atau mereka mungkin publik, biasanya paket open-source yang dikembangkan di luar organisasi dan didistribusikan oleh repositori paket publik. Saat meminta paket, pengembang mengandalkan manajer paket mereka untuk mengambil versi baru dari dependensi mereka. Serangan substitusi dependensi, juga dikenal sebagai serangan kebingungan ketergantungan, mengeksploitasi fakta bahwa manajer paket biasanya tidak memiliki cara untuk membedakan versi paket yang sah dari versi berbahaya.

Serangan substitusi dependensi termasuk dalam subset serangan yang dikenal sebagai serangan rantai pasokan perangkat lunak. Serangan rantai pasokan perangkat lunak adalah serangan yang memanfaatkan kerentanan di mana saja dalam rantai pasokan perangkat lunak.

Serangan substitusi dependensi dapat menargetkan siapa saja yang menggunakan paket dan paket yang dikembangkan secara internal yang diambil dari repositori publik. Penyerang mengidentifikasi nama paket internal dan kemudian secara strategis menempatkan kode berbahaya dengan nama yang sama di repositori paket publik. Biasanya, kode berbahaya diterbitkan dalam paket dengan nomor versi tinggi. Package manager mengambil kode berbahaya dari feed publik ini karena mereka percaya bahwa paket berbahaya adalah versi terbaru dari paket. Hal ini menyebabkan “kebingungan” atau “substitusi” antara paket yang diinginkan dan paket berbahaya, yang menyebabkan kode dikompromikan.

Untuk mencegah serangan substitusi dependensi, Amazon CodeCatalyst menyediakan kontrol asal paket. Package origin control adalah pengaturan yang mengontrol bagaimana paket dapat ditambahkan ke repositori Anda. Kontrol dikonfigurasi secara otomatis ketika versi paket pertama dari paket baru ditambahkan ke CodeCatalyst repositori Kontrol dapat memastikan versi paket tidak dapat dipublikasikan langsung ke repositori Anda dan dicerna dari sumber publik, melindungi Anda dari serangan substitusi ketergantungan. Untuk informasi selengkapnya tentang kontrol asal paket dan cara mengubahnya, lihatMengedit kontrol asal paket.