View a markdown version of this page

Mengedit kontrol asal paket - Amazon CodeCatalyst

Amazon CodeCatalyst tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Lihat informasi yang lebih lengkap di Cara bermigrasi dari 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 hulu, atau menelannya dari repositori publik eksternal melalui gateway. Jika Anda mengizinkan versi paket ditambahkan baik dengan penerbitan langsung maupun 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 ketergantungan, konfigurasikan kontrol asal paket pada paket di repositori untuk membatasi bagaimana versi paket tersebut dapat ditambahkan ke repositori.

Anda harus mempertimbangkan untuk mengonfigurasi kontrol asal paket untuk membuat versi baru dari paket yang berbeda berasal dari 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 pengelola paket atau alat serupa.

  • IZINKAN: Versi paket dapat dipublikasikan secara langsung.

  • BLOK: Versi paket tidak dapat dipublikasikan secara langsung.

Hulu

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

  • IZINKAN: Versi paket apa pun dapat dipertahankan dari CodeCatalyst repositori lain yang dikonfigurasi sebagai repositori hulu atau dicerna dari sumber publik dengan koneksi eksternal.

  • BLOK: Versi paket tidak dapat dipertahankan dari CodeCatalyst repositori lain yang dikonfigurasi sebagai repositori hulu atau dicerna dari sumber publik dengan koneksi eksternal.

Pengaturan kontrol asal paket default

Kontrol asal paket default untuk paket akan didasarkan pada bagaimana versi pertama dari paket tersebut ditambahkan ke repositori paket.

  • Jika versi paket pertama diterbitkan secara langsung oleh manajer paket, pengaturannya akan menjadi 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 dipublikasikan langsung dari pengelola paket ke repositori Anda, seperti paket yang Anda pelihara. Paket eksternal adalah paket yang ada di repositori publik yang dapat dicerna ke repositori Anda melalui repositori gateway di hulu.

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 CodeCatalyst paket. Karena ini adalah versi paket pertama untuk paket itu, pengaturan kontrol asal paket secara otomatis diatur ke Publish: Allow dan Upstream: Block. Setelah paket dipublikasikan di repositori Anda, paket dengan nama yang sama dipublikasikan ke repositori publik yang terhubung ke repositori CodeCatalyst paket Anda. Ini bisa berupa percobaan serangan substitusi ketergantungan terhadap paket internal, atau bisa jadi 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 hulu ke repositori. npm-public-registry-gateway Repositori Anda berisi versi 1.1 dan 2.1 dari PackageA, tetapi versi 3.0 diterbitkan ke repositori publik. Biasanya, RePoA akan mengkonsumsi versi 3.0 setelah paket diminta oleh manajer paket. Karena penyerapan paket disetel ke Blokir, versi 3.0 tidak dicerna ke repositori CodeCatalyst paket Anda dan tidak tersedia untuk pengelola paket yang terhubung dengannya.

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

Versi paket internal diterbitkan untuk paket eksternal yang ada

Dalam skenario ini, 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 dicerna ke 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 menerbitkan versi dengan nama paket yang sama ke repositori. Anda mungkin tidak mengetahui paket publik dan mencoba menerbitkan paket yang tidak terkait dengan nama yang sama, atau Anda mungkin mencoba menerbitkan versi yang ditambal, atau Anda mungkin mencoba menerbitkan langsung versi paket yang tepat yang sudah ada secara eksternal. CodeCatalyst menolak versi yang Anda coba publikasikan, tetapi Anda dapat secara eksplisit mengganti penolakan dan menerbitkan versi, jika perlu.

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

Grafik sederhana yang menunjukkan penerbitan paket diblokir.

Menerbitkan versi paket yang ditambal dari paket eksternal yang ada

Dalam skenario ini, 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 dicerna ke 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. Agar dapat menerbitkan 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 pengaturan asal paket ke Publish: BLOCK dan Upstream: ALLOW.

Mengedit kontrol asal paket

Kontrol asal paket dikonfigurasi secara otomatis berdasarkan bagaimana versi paket pertama dari paket ditambahkan ke repositori paket. Untuk informasi selengkapnya, lihat Pengaturan kontrol asal paket default. Untuk menambah atau mengedit kontrol asal paket untuk CodeCatalyst paket dalam repositori 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. Di 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 tetapkan untuk paket ini. Kedua pengaturan kontrol asal paket, Publ ish dan Upstream, harus diatur secara bersamaan.

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

    • Untuk mengizinkan penyerapan paket dari repositori eksternal dan menarik paket dari repositori hulu, di sumber Upstream, pilih Izinkan. Untuk memblokir semua penyerapan dan penarikan versi paket dari repositori eksternal dan hulu, pilih Blokir.

  6. Pilih Simpan.

Publikasi dan repositori hulu

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

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

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

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

Serangan substitusi ketergantungan

Manajer paket 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 mungkin bersifat 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 dependensi mereka. Serangan substitusi ketergantungan, 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 ketergantungan 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 ketergantungan dapat menargetkan siapa saja yang menggunakan paket yang dikembangkan secara internal dan paket 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. Manajer paket mengambil kode berbahaya dari umpan 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 ketergantungan, Amazon CodeCatalyst menyediakan kontrol asal paket. Kontrol asal paket 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.