

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

# Mengedit kontrol asal paket
<a name="package-origin-controls"></a>

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](dependency-substitution-attacks.md). 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, lihat[Pengaturan kontrol asal paket](#package-origin-control-settings).

Untuk menghapus catatan paket setelah menggunakan operasi `put-package-origin-configuration` API, gunakan `delete-package` (lihat[Hapus versi paket atau paket](delete-package.md)).

## Skenario kontrol akses paket umum
<a name="package-origin-control-scenarios"></a>

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.\]](http://docs.aws.amazon.com/id_id/codeartifact/latest/ug/images/package-origin-controls-one.png)


**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.\]](http://docs.aws.amazon.com/id_id/codeartifact/latest/ug/images/package-origin-controls-two.png)


**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
<a name="package-origin-control-settings"></a>

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](package-group-origin-controls.md).

**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
<a name="default-package-origin-control-settings"></a>

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](package-groups.md) dan[Kontrol asal grup Package](package-group-origin-controls.md).

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, lihat[Mengedit kontrol asal paket](#edit-package-origin-controls).

Jika tidak, jika paket dikaitkan dengan grup paket yang memiliki setidaknya satu pengaturan pembatasan `BLOCK` atau`ALLOW_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
<a name="package-origin-controls-interaction-package-groups"></a>

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 pengaturan`ALLOW`. 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: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | 
| MEMPUBLIKASIKAN: BLOKHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: BLOKHULU: IZINKAN | 
| MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: BLOK | MEMPUBLIKASIKAN: IZINKANHULU: 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
<a name="edit-package-origin-controls"></a>

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](#default-package-origin-control-settings) 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](https://console.aws.amazon.com/codesuite/codeartifact/home).

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

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

1. Dari halaman ringkasan paket, di **kontrol Origin**, pilih **Edit**.

1. 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 di[Menyiapkan dengan AWS CodeArtifact](get-set-up-for-codeartifact.md).

1. Gunakan `put-package-origin-configuration` perintah untuk menambah atau mengedit kontrol asal paket. Ganti bidang berikut:
   + Ganti *my\$1domain* dengan CodeArtifact domain yang berisi paket yang ingin Anda perbarui.
   + Ganti *my\$1repo* dengan CodeArtifact repositori yang berisi paket yang ingin Anda perbarui.
   + Ganti *npm* dengan format paket paket yang ingin Anda perbarui.
   + Ganti *my\$1package* 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
<a name="package-publishing-upstreams"></a>

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, seperti`com.mycompany.mypackage:1.1`.

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

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