

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

# Batasi dorongan dan penggabungan ke cabang di AWS CodeCommit
<a name="how-to-conditional-branch"></a>

Secara default, setiap pengguna CodeCommit repositori yang memiliki izin yang cukup untuk mendorong kode ke repositori dapat berkontribusi ke cabang mana pun di repositori itu. Ini benar tidak peduli bagaimana Anda menambahkan cabang ke repositori: dengan menggunakan konsol, baris perintah, atau Git. Namun, Anda mungkin ingin mengkonfigurasi cabang sehingga hanya beberapa pengguna repositori yang dapat mendorong atau menggabungkan kode ke cabang tersebut. Misalnya, Anda mungkin ingin mengkonfigurasi cabang yang digunakan untuk kode produksi sehingga hanya subset dari developer senior dapat mendorong atau menggabungkan perubahan ke cabang tersebut. Developer lain masih dapat menarik dari cabang, membuat cabang mereka sendiri, dan membuat permintaan tarik, tetapi mereka tidak dapat mendorong atau menggabungkan perubahan ke cabang tersebut. Anda dapat mengkonfigurasi akses ini dengan membuat kebijakan bersyarat yang menggunakan kunci konteks untuk satu atau lebih cabang di IAM. 

**catatan**  
Untuk menyelesaikan beberapa prosedur dalam topik ini, Anda harus masuk dengan pengguna adminstratif yang memiliki izin yang memadai untuk mengkonfigurasi dan menerapkan kebijakan IAM. Untuk informasi selengkapnya, lihat [Membuat pengguna dan grup admin IAM pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html). 

**Topics**
+ [Mengkonfigurasi kebijakan IAM untuk membatasi dorongan dan penggabungan ke cabang](#how-to-conditional-branch-create-policy)
+ [Terapkan kebijakan IAM ke grup atau peran IAM](#how-to-conditional-branch-apply-policy)
+ [Menguji kebijakan](#how-to-conditional-branch-test)

## Mengkonfigurasi kebijakan IAM untuk membatasi dorongan dan penggabungan ke cabang
<a name="how-to-conditional-branch-create-policy"></a>

Anda dapat membuat kebijakan di IAM yang mencegah pengguna memperbarui cabang, termasuk mendorong commit ke cabang dan penggabungan permintaan tarik ke cabang. Untuk melakukannya, kebijakan Anda menggunakan pernyataan bersyarat, sehingga efek dari pernyataan `Deny` hanya berlaku jika syarat tersebut terpenuhi. Yang APIs Anda sertakan dalam `Deny` pernyataan menentukan tindakan mana yang tidak diizinkan. Anda dapat mengkonfigurasi kebijakan ini untuk menerapkan hanya satu cabang di repositori, sejumlah cabang di repositori, atau untuk semua cabang yang cocok dengan kriteria di semua repositori di akun Amazon Web Services. <a name="how-to-conditional-branch-create-policy-procedure"></a>

**Untuk membuat kebijakan bersyarat untuk cabang**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Kebijakan**. 

1. Pilih **Buat kebijakan**.

1. Pilih **JSON**, dan kemudian tempelkan kebijakan contoh berikut. Ganti nilai `Resource` dengan ARN dari repositori yang berisi cabang yang Anda ingin membatasi akses. Ganti nilai `codecommit:References` dengan referensi ke cabang atau cabang yang Anda ingin membatasi akses. Misalnya, kebijakan ini menolak mendorong commit, menggabungkan cabang, menghapus cabang, menghapus file, menggabungkan permintaan tarik, dan menambahkan file ke cabang bernama dan cabang bernama dalam *`main`* repositori bernama: `prod` `MyDemoRepo`

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "codecommit:GitPush",
                   "codecommit:DeleteBranch",
                   "codecommit:DeleteFile",
                   "codecommit:PutFile",
                   "codecommit:MergeBranchesByFastForward",
                   "codecommit:MergeBranchesBySquash",
                   "codecommit:MergeBranchesByThreeWay",
                   "codecommit:MergePullRequestByFastForward",
                   "codecommit:MergePullRequestBySquash",
                   "codecommit:MergePullRequestByThreeWay"
               ],
               "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
               "Condition": {
                   "StringEqualsIfExists": {
                       "codecommit:References": [
                           "refs/heads/main", 
                           "refs/heads/prod"
                        ]
                   },
                   "Null": {
                       "codecommit:References": "false"
                   }
               }
           }
       ]
   }
   ```

------

   Cabang di Git hanya (referensi) pointer ke nilai SHA-1 dari kepala commit, yang mengapa syarat tersebut menggunakan `References`. Parameter pernyataan `Null` diperlukan dalam setiap kebijakan yang efeknya adalah `Deny` dan di mana `GitPush` adalah salah satu tindakan. Ini diperlukan karena cara Git dan `git-receive-pack` bekerja saat mendorong perubahan dari repo lokal ke CodeCommit.
**Tip**  
Untuk membuat kebijakan yang berlaku untuk semua cabang yang bernama utama di semua repositori di akun Amazon Web Services, ubah nilai `Resource` dari repositori ARN ke sebuah tanda bintang (`*`). 

1. Pilih **Tinjau kebijakan**. Perbaiki kesalahan dalam pernyataan kebijakan Anda, dan kemudian lanjutkan **Buat kebijakan**.

1. Ketika JSON divalidasi, halaman **Buat kebijakan** ditampilkan. Sebuah peringatan muncul di bagian **Ringkasan**, yang memberitahu Anda bahwa kebijakan ini tidak memberikan izin. Ini yang diharapkan. 
   + Di **Nama**, masukkan nama untuk kebijakan ini, seperti **DenyChangesToMain**.
   + (Opsional) Untuk **Deskripsi**, masukkan deskripsi tujuan kebijakan. Ini memang opsional, tetapi direkomendasikan.
   + Pilih **Buat kebijakan**.

## Terapkan kebijakan IAM ke grup atau peran IAM
<a name="how-to-conditional-branch-apply-policy"></a>

Anda telah membuat kebijakan yang membatasi penggabungan dan penggabungan ke cabang, namun kebijakan tersebut tidak berpengaruh hingga Anda menerapkannya ke pengguna, grup, atau peran IAM. Sebagai praktik terbaik, pertimbangkan untuk menerapkan kebijakan ke grup atau peran IAM. Menerapkan kebijakan untuk pengguna IAM individu tidak menskalakan dengan baik.<a name="how-to-conditional-branch-apply-policy-procedure"></a>

**Untuk menerapkan kebijakan bersyarat ke sebuah grup atau peran**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, jika Anda ingin menerapkan kebijakan ke grup IAM, pilih **Grup**. Jika Anda ingin menerapkan kebijakan untuk peran yang diambil oleh pengguna , pilih **Peran**. Pilih nama grup atau peran.

1. Di tab **Izin**, pilih **Lampirkan kebijakan**.

1. Pilih kebijakan bersyarat yang Anda buat dari daftar kebijakan, dan kemudian pilih **Lampirkan kebijakan**.

Untuk informasi selengkapnya, lihat [Melampirkan dan Melepaskan Lampiran Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

## Menguji kebijakan
<a name="how-to-conditional-branch-test"></a>

Anda harus menguji efek dari kebijakan yang telah Anda terapkan pada grup atau peran untuk memastikan tindakan tersebut sesuai harapan. Ada banyak cara Anda dapat melakukan ini. Misalnya, untuk menguji kebijakan yang serupa dengan yang ditunjukkan di atas, Anda dapat:
+ Masuk ke CodeCommit konsol dengan pengguna IAM yang merupakan anggota grup IAM yang menerapkan kebijakan tersebut, atau mengambil peran yang menerapkan kebijakan tersebut. Di konsol, tambahkan file di cabang tempat pembatasan berlaku. Anda akan melihat pesan kesalahan ketika Anda mencoba untuk menyimpan atau mengunggah file ke cabang tersebut. Tambahkan file ke cabang yang berbeda. Operasi tersebut seharusnya berhasil.
+ Masuk ke CodeCommit konsol dengan pengguna IAM yang merupakan anggota grup IAM yang menerapkan kebijakan tersebut, atau mengambil peran yang menerapkan kebijakan tersebut. Buatlah sebuah permintaan tarik yang bergabung ke cabang di mana pembatasan berlaku. Anda harus dapat membuat permintaan tarik, tetapi mendapatkan kesalahan jika Anda mencoba untuk menggabungkannya. 
+ Dari terminal atau baris perintah, buat komit di cabang tempat pembatasan berlaku, lalu dorong komit itu ke CodeCommit repositori. Anda akan melihat pesan kesalahan. Commit dan dorongan yang dibuat dari cabang lain seharusnya bekerja seperti biasa.