Mengedit kontrol asal paket - CodeArtifact

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

Mengedit kontrol asal paket

Dalam AWS CodeArtifact, versi paket dapat ditambahkan ke repositori dengan menerbitkannya secara langsung, menariknya ke bawah dari repositori hulu, atau menelannya dari repositori publik eksternal. Mengizinkan versi paket untuk ditambahkan baik dengan penerbitan langsung dan menelan dari repositori publik membuat Anda rentan terhadap serangan substitusi ketergantungan. Untuk informasi selengkapnya, lihat Serangan substitusi ketergantungan. Untuk melindungi diri Anda dari serangan substitusi dependensi, Anda dapat mengonfigurasi kontrol asal paket pada paket dalam repositori untuk membatasi bagaimana versi paket tersebut dapat ditambahkan ke repositori.

Mengkonfigurasi kontrol asal paket harus dipertimbangkan oleh tim mana pun yang ingin mengizinkan 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 akan dikonfigurasi berdasarkan bagaimana versi pertama paket ditambahkan ke repositori. Untuk informasi tentang pengaturan kontrol asal paket dan nilai defaultnya, lihatPengaturan kontrol asal paket.

Untuk menghapus catatan paket setelah menggunakan operasi put-package-origin-configuration API, gunakan delete-package (lihatHapus versi paket atau paket).

Skenario kontrol akses paket umum

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

Dalam skenario berikut, paket internal adalah paket yang diterbitkan langsung dari manajer paket ke repositori Anda, seperti paket yang Anda atau penulis tim Anda dan pertahankan. Paket eksternal adalah paket yang ada di repositori publik yang dapat dicerna ke dalam repositori Anda dengan koneksi eksternal.

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. CodeArtifact Karena ini adalah versi paket pertama untuk paket itu, pengaturan kontrol asal paket secara otomatis diatur ke Publish: Allow and Upstream: Block. Setelah paket ada di repositori Anda, paket dengan nama yang sama dipublikasikan ke repositori publik yang terhubung ke repositori Anda. CodeArtifact 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 CodeArtifact repositori Anda dengan koneksi eksternal ke repositori publik. 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 diatur ke Blokir, versi 3.0 tidak tertelan ke dalam CodeArtifact repositori 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. Entah Anda tidak mengetahui paket publik dan mencoba menerbitkan paket yang tidak terkait dengan nama yang sama, atau Anda mencoba menerbitkan versi yang ditambal, atau Anda mencoba untuk secara langsung menerbitkan versi paket persis yang sudah ada secara eksternal. CodeArtifact akan menolak versi yang Anda coba terbitkan, tetapi memungkinkan Anda untuk secara eksplisit mengganti penolakan dan mempublikasikan versi jika perlu.

Pada gambar berikut, RePoA adalah CodeArtifact repositori Anda dengan koneksi eksternal ke repositori publik. Repositori Anda berisi versi 3.0 yang dicerna dari repositori publik. Anda ingin mempublikasikan versi 1.1 ke repositori 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 menunjukkan versi paket eksternal baru yang diblokir dari repositori publik.

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 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 bahwa perlu mempublikasikan 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.

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.

catatan

Pengaturan dan nilai yang tersedia berbeda saat mengonfigurasi kontrol asal pada grup paket. Untuk informasi selengkapnya, lihat Kontrol asal grup Package.

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 CodeArtifact repositori upstream atau dicerna dari sumber publik dengan koneksi eksternal.

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

Pengaturan kontrol asal paket default

Pengaturan kontrol asal paket default dikonfigurasi berdasarkan pengaturan kontrol asal grup paket terkait paket. Untuk informasi selengkapnya tentang grup paket dan kontrol asal grup paket, lihat Bekerja dengan kelompok paket di CodeArtifact danKontrol asal grup Package.

Jika sebuah paket dikaitkan dengan grup paket dengan pengaturan pembatasan ALLOW untuk setiap jenis pembatasan, kontrol asal paket default untuk paket akan didasarkan pada bagaimana versi pertama paket itu ditambahkan ke repositori.

  • 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.

catatan

Paket yang ada di CodeArtifact repositori sebelum sekitar Mei 2022 akan memiliki kontrol asal paket default Publish: ALLOW dan Upstream: ALLOW. Kontrol asal paket harus diatur secara manual untuk paket tersebut. Nilai default saat ini telah ditetapkan pada paket baru sejak saat itu, dan mulai diberlakukan ketika fitur diluncurkan pada 14 Juli 2022. Untuk informasi selengkapnya tentang pengaturan kontrol asal paket, lihatMengedit kontrol asal paket.

Jika tidak, jika paket dikaitkan dengan grup paket yang memiliki setidaknya satu pengaturan pembatasanBLOCK, maka pengaturan kontrol asal default untuk paket tersebut akan disetel ke Publish: ALLOW dan Upstream: ALLOW.

Bagaimana kontrol asal paket berinteraksi dengan kontrol asal grup paket

Karena paket memiliki pengaturan kontrol asal, dan grup paket terkait memiliki pengaturan kontrol asal, penting untuk memahami bagaimana kedua pengaturan yang berbeda berinteraksi satu sama lain.

Interaksi antara dua pengaturan adalah bahwa pengaturan BLOCK selalu menang atas pengaturanALLOW. Tabel berikut mencantumkan beberapa contoh konfigurasi dan pengaturan kontrol asal yang efektif.

Pengaturan kontrol asal Package Pengaturan kontrol asal grup Package Pengaturan kontrol asal yang efektif

MEMPUBLIKASIKAN: IZINKAN

HULU: IZINKAN

MEMPUBLIKASIKAN: IZINKAN

HULU: IZINKAN

MEMPUBLIKASIKAN: IZINKAN

HULU: IZINKAN

MEMPUBLIKASIKAN: BLOK

HULU: IZINKAN

MEMPUBLIKASIKAN: IZINKAN

HULU: IZINKAN

MEMPUBLIKASIKAN: BLOK

HULU: IZINKAN

MEMPUBLIKASIKAN: IZINKAN

HULU: IZINKAN

MEMPUBLIKASIKAN: IZINKAN

HULU: BLOK

MEMPUBLIKASIKAN: IZINKAN

HULU: BLOK

Apa artinya ini adalah bahwa paket dengan pengaturan asal Publish: ALLOW dan Upstream: ALLOW, maka secara efektif menunda pengaturan kontrol asal grup paket terkait.

Mengedit kontrol asal paket

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

Untuk menambah atau mengedit kontrol asal paket (konsol)
  1. Buka AWS CodeArtifact konsol di https://console.aws.amazon.com/codesuite/codeartifact/home.

  2. Di panel navigasi, pilih Repositori, dan pilih repositori yang berisi paket yang ingin Anda edit.

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

  4. Dari halaman ringkasan paket, di kontrol Origin, pilih Edit.

  5. Di kontrol Edit asal, 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.

Untuk menambah atau mengedit kontrol asal paket (AWS CLI)
  1. Jika belum, konfigurasikan AWS CLI dengan mengikuti langkah-langkah diMenyiapkan dengan AWS CodeArtifact.

  2. Gunakan put-package-origin-configuration perintah untuk menambah atau mengedit kontrol asal paket. Ganti bidang berikut:

    • Ganti my_domain dengan CodeArtifact domain yang berisi paket yang ingin Anda perbarui.

    • Ganti my_repo dengan CodeArtifact repositori yang berisi paket yang ingin Anda perbarui.

    • Ganti npm dengan format paket paket yang ingin Anda perbarui.

    • Ganti my_package dengan nama paket yang ingin Anda perbarui.

    • Ganti ALLOW dan BLOCK dengan pengaturan kontrol asal paket yang Anda inginkan.

    aws codeartifact put-package-origin-configuration --domain my_domain \ --repository my_repo --format npm --package my_package \ --restrictions publish=ALLOW,upstream=BLOCK

Publikasi dan repositori hulu

CodeArtifact tidak mengizinkan penerbitan versi paket yang ada di repositori upstream yang dapat dijangkau atau repositori publik. Misalnya, anggaplah Anda ingin memublikasikan paket Maven com.mycompany.mypackage:1.0 ke repositori myrepo, dan myrepo memiliki repositori hulu dengan koneksi eksternal ke Maven Central. Pertimbangkan skenario berikut.

  1. Pengaturan kontrol asal paket aktif com.mycompany.mypackage adalah Publish: ALLOW dan Upstream: ALLOW. Jika com.mycompany.mypackage:1.0 ada di repositori hulu atau di Maven Central, CodeArtifact menolak setiap upaya untuk mempublikasikannya dengan kesalahan konflik 409. myrepo Anda masih dapat mempublikasikan versi yang berbeda, seperticom.mycompany.mypackage:1.1.

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

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