Ketentuan kebijakan
Ketentuan menambahkan logika halus ke kebijakan yang menggunakan when dan klausa: unless
when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 }
Jenis kondisi
-
when { … }- Kebijakan hanya berlaku jika kondisinya benar -
unless { … }- Kebijakan hanya berlaku jika kondisinya salah -
when guardrails { … }- Kebijakan hanya berlaku jika kondisi yang ditegaskan pada output dari satu atau lebih pagar pembatas dinilai benar -
unless guardrails { … }- Kebijakan hanya berlaku jika kondisi yang ditegaskan pada output dari satu atau lebih pagar pembatas dievaluasi salah
Argumen alat
context.inputberisi argumen yang diteruskan ke panggilan alat:
context.input.amount < 500
Saat pengguna memanggil RefundTool___process_refund dengan argumen seperti:
{ "orderId": "12345", "amount": 450, "reason": "Defective product" }
Kebijakan dapat mengakses nilai-nilai ini:
-
context.input.orderId→ “12345" -
context.input.amount→ 450 -
context.input.reason→ “Produk cacat”
Kebijakan dapat membuat keputusan berdasarkan parameter panggilan alat tertentu.
Atribut utama
Atribut utama berbeda berdasarkan jenis otentikasi yang dikonfigurasi untuk AgentCore Gateway Anda.
Klaim OAuth (tag)
Untuk OAuth-authenticated gateway, klaim JWT dari token OAuth disimpan sebagai tag pada entitas. OAuthUser Contoh klaim JWT:
{ "sub": "user-123", "username": "refund-agent", "scope": "refund:write admin:read", "role": "admin" }
Klaim ini menjadi tag pada entitas utama. Periksa apakah ada tag:
principal.hasTag("username")
Dapatkan nilai tag:
principal.getTag("username") == "refund-agent"
Pencocokan pola:
principal.getTag("scope") like "*refund:write*"
Atribut entitas IAM
Untuk IAM-authenticated gateway, prinsipal memiliki id atribut yang berisi IAM ARN pemanggil. Prinsipal IAM tidak mendukung tag.
Format entitas utama
Prinsip Cedar untuk IAM-authenticated gateway adalah. AgentCore::IamEntity principal.idAtribut berisi IAM ARN pemanggil.
Untuk pemanggil yang mengautentikasi melalui peran IAM yang diasumsikan, ID entitas principal.id dan Cedar menggunakan format:
arn:aws:sts::<account-id>:assumed-role/<role-name>
Misalnya, jika pemanggil mengasumsikan peran tersebutMyServiceRole, ID entitas Cedar adalah:
AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/MyServiceRole"
Format ini stabil di seluruh pemanggilan, sehingga Anda dapat menggunakan principal == untuk pencocokan peran yang tepat.
Pola yang cocok dengan suka
Anda juga dapat menggunakan like operator dengan wildcard untuk pencocokan yang lebih luas:
// Match any role in a specific account principal.id like "arn:aws:sts::123456789012:assumed-role/*" // Match specific AWS account (any ARN format) principal.id like "*:123456789012:*" // Match a specific IAM role name across any account principal.id like "arn:aws:sts::*:assumed-role/AdminRole"
Operator logis
Gabungkan beberapa kondisi menggunakan operator logis:
-
&&- DAN (semua kondisi harus benar) -
||- ATAU (setidaknya satu syarat harus benar) -
!- TIDAK (meniadakan suatu kondisi)
Contoh:
principal.hasTag("username") && // User must have username tag principal.getTag("username") == "refund-agent" && // Username must be "refund-agent" context.input.amount < 500 // Amount must be less than $500