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 dari sebuah paket ditambahkan baik dengan penerbitan langsung maupun 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.

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.

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. Package origin control harus diatur secara manual untuk paket-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 pembatasan BLOCK
atauALLOW_SPECIFIC_REPOSITORIES
, 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)
Buka AWS CodeArtifact konsol di https://console.aws.amazon.com/codesuite/codeartifact/home
. -
Di panel navigasi, pilih Repositori, dan pilih repositori yang berisi paket yang ingin Anda edit.
-
Dalam tabel Paket, cari dan pilih paket yang ingin Anda edit.
-
Dari halaman ringkasan paket, di kontrol Origin, pilih Edit.
-
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)
Jika belum, konfigurasikan AWS CLI dengan mengikuti langkah-langkah diMenyiapkan dengan AWS CodeArtifact.
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
danBLOCK
dengan pengaturan kontrol asal paket yang Anda inginkan.
aws codeartifact put-package-origin-configuration --domain
my_domain
\ --repositorymy_repo
--formatnpm
--packagemy_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.
Pengaturan kontrol asal paket aktif
com.mycompany.mypackage
adalah Publish: ALLOW dan Upstream: ALLOW. Jikacom.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
.Pengaturan kontrol asal paket aktif
com.mycompany.mypackage
adalah Publish: ALLOW dan Upstream: BLOCK. Anda dapat mempublikasikan versi apa puncom.mycompany.mypackage
ke repositori Anda yang belum ada karena versi paket tidak dapat dijangkau.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.