

# Memahami kebijakan Cedar
<a name="policy-understanding-cedar"></a>

Kebijakan dalam AgentCore menggunakan kebijakan Cedar untuk mengontrol akses ke alat AgentCore Gateway. Bagian ini menjelaskan struktur kebijakan Cedar, semantik evaluasi, dan konsep kunci.

**Topics**
+ [Contoh kebijakan](#policy-example)
+ [Struktur kebijakan](#policy-structure)
+ [Efek kebijakan](#policy-effects)
+ [Blokir secara default](#policy-default-deny)
+ [Evaluasi otorisasi](#policy-authorization-evaluation)
+ [Independensi kebijakan](#policy-independence)
+ [Algoritma evaluasi kebijakan](#policy-evaluation-algorithm)

## Contoh kebijakan
<a name="policy-example"></a>

Pertimbangkan alat pemrosesan pengembalian dana dengan persyaratan ini:
+ Hanya pengguna “John” yang dapat memproses pengembalian uang
+ Pengembalian dana dibatasi hingga $500 atau kurang

Kebijakan Cedar yang memberlakukan persyaratan ini:

```
permit(
  principal is AgentCore::OAuthUser,
  action == AgentCore::Action::"RefundTool___process_refund",
  resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:your-region:your-account-id:gateway/refund-gateway"
)
when {
  principal.hasTag("username") &&
  principal.getTag("username") == "John" &&
  context.input.amount < 500
};
```

Kebijakan ini memungkinkan pemrosesan pengembalian dana hanya ketika pengguna “John” dan jumlah pengembalian dana kurang dari $500.

## Struktur kebijakan
<a name="policy-structure"></a>

Kebijakan cedar terdiri dari tiga komponen utama:

1.  **Efek** - Menentukan apakah akan mengizinkan atau menolak akses (`permit`atau`forbid`)

1.  **Lingkup** - Menentukan prinsip, tindakan, dan sumber daya yang berlaku untuk kebijakan

1.  **Kondisi** - Mendefinisikan logika tambahan yang harus dipenuhi (`when`atau`unless`) dan dapat merujuk ke parameter alat (melalui konteks) dan token OAuth (melalui tag)

## Efek kebijakan
<a name="policy-effects"></a>

Kebijakan Cedar menggunakan dua efek untuk mengontrol akses:
+  `permit`- Memungkinkan tindakan untuk melanjutkan
+  `forbid`- Menyangkal tindakan

## Blokir secara default
<a name="policy-default-deny"></a>

Semua tindakan ditolak secara default. Jika tidak ada kebijakan yang cocok dengan permintaan, Cedar mengembalikan DENY. Anda harus secara eksplisit menulis kebijakan izin untuk mengizinkan tindakan.

## Evaluasi otorisasi
<a name="policy-authorization-evaluation"></a>

Cedar menggunakan model evaluasi izin-penggantian larangan:

1. Cedar mengevaluasi semua kebijakan yang berlaku untuk permintaan

1. Jika ada kebijakan larangan yang cocok, hasilnya adalah DENY

1. Jika setidaknya satu kebijakan izin cocok dan tidak ada kebijakan larangan, hasilnya adalah IZINKAN

1. Jika tidak ada kebijakan yang cocok, hasilnya adalah DENY (default deny)

## Independensi kebijakan
<a name="policy-independence"></a>

Setiap kebijakan Cedar mengevaluasi secara independen. Evaluasi kebijakan hanya bergantung pada:
+ Ruang lingkup (prinsipal, tindakan, sumber daya)
+ Konteks dan tag

Kebijakan tidak mengacu atau bergantung pada kebijakan lain.

## Algoritma evaluasi kebijakan
<a name="policy-evaluation-algorithm"></a>

Ketika permintaan dievaluasi, mesin kebijakan menentukan keputusan otorisasi menggunakan algoritma berikut:

1. Jika ada `forbid` kebijakan yang cocok dengan permintaan, keputusannya adalah DENY.

1. Jika tidak ada `forbid` kebijakan yang cocok dengan permintaan dan setidaknya satu `permit` kebijakan yang cocok, keputusannya adalah IZINKAN.

1. Jika `forbid` tidak ada `permit` kebijakan yang sesuai dengan permintaan, keputusannya adalah DENY.

Model evaluasi ini memberlakukan postur **penolakan default**.

`forbid`Kebijakan tidak akan pernah menghasilkan keputusan ALLOW. `unless`Klausul pada `forbid` kebijakan menentukan kondisi di mana `forbid` kebijakan tersebut tidak berlaku; itu tidak memberikan izin dan **tidak** mengesampingkan kebijakan yang cocok. `permit`