View a markdown version of this page

Ketentuan kebijakan - Batuan Dasar Amazon AgentCore

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