Pola kebijakan umum
Contoh-contoh ini menunjukkan pola kebijakan Cedar yang sering digunakan. Pola berfungsi dengan otentikasi OAuth dan IAM—pilih tipe utama yang sesuai untuk konfigurasi Gateway Anda. AgentCore Untuk detail tentang atribut utama, lihat Atribut utama.
Pola-pola ini berlaku terlepas dari jenis otentikasi.
Shutdown darurat
Nonaktifkan semua panggilan alat di seluruh Gateway:
forbid( principal, action, resource );
Kasus penggunaan: Shutdown darurat, mode pemeliharaan, atau respons insiden.
Efek: Mengesampingkan semua kebijakan izin karena semantik yang dilarang menang.
Nonaktifkan alat tertentu
Nonaktifkan alat tertentu sambil menjaga agar orang lain tetap beroperasi:
forbid( principal, action == AgentCore::Action::"RefundTool___process_refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway" );
Kasus penggunaan: Nonaktifkan sementara alat bermasalah tanpa memengaruhi fungsionalitas lainnya.
Blokir akses pengguna
Mencegah pengguna atau akun tertentu melakukan tindakan apa pun:
OAuth: Blokir pengguna tertentu
Blokir pengguna dengan mencocokkan tag nama pengguna mereka:
forbid( principal is AgentCore::OAuthUser, action, resource ) when { principal.hasTag("username") && principal.getTag("username") == "suspended-user" };
Kasus penggunaan: Segera cabut akses untuk akun pengguna yang disusupi atau ditangguhkan.
IAM: Blokir akun tertentu
Blokir penelepon dari AWS akun tertentu:
forbid( principal is AgentCore::IamEntity, action, resource ) when { principal.id like "*:444455556666:*" };
Kasus penggunaan: Blokir pengujian atau akun tidak sah dari mengakses alat produksi. Pola ini
:444455556666:
cocok dengan format ARN apa pun (peran yang dianggap, pengguna IAM, atau peran IAM) yang berisi ID akun tersebut.
Role-based kontrol akses
Batasi akses berdasarkan peran. OAuth menggunakan tag peran; IAM menggunakan pola ARN peran.
OAuth: Menggunakan tag peran
Izinkan akses hanya untuk pengguna dengan peran tertentu:
permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"AdminAPI___delete_resource", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/admin" ) when { principal.hasTag("role") && (principal.getTag("role") == "admin" || principal.getTag("role") == "manager") };
Kasus penggunaan: Izinkan operasi administratif hanya untuk pengguna dengan peran admin atau manajer.
IAM: Menggunakan ARN peran IAM
Izinkan akses hanya ke penelepon yang menggunakan peran IAM tertentu. Anda dapat menggunakan principal == pencocokan tepat atau pencocokan principal.id like pola:
// Exact match (recommended for single-role policies) permit( principal == AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/AdminRole", action == AgentCore::Action::"AdminAPI___delete_resource", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/admin" );
Kasus penggunaan: Izinkan operasi administratif hanya untuk penelepon dengan asumsi peran AdminRole IAM. ID entitas Cedar untuk peran yang diasumsikan menggunakan formatarn:aws:sts::<account>:assumed-role/<role-name>.
Variasi menggunakan pencocokan pola:
// Match a specific role from any account principal.id like "arn:aws:sts::*:assumed-role/AdminRole" // Match any role in a specific account principal.id like "arn:aws:sts::123456789012:assumed-role/*"
Operasi tipe data
Cedar mendukung berbagai tipe data dalam kondisi. Contoh-contoh ini menggunakan prinsip OAuth (). AgentCore::OAuthUser Untuk IAM-authenticated gateway, gunakan AgentCore::IamEntity sebagai gantinya - logika validasi input tetap identik.
Bilangan bulat (Panjang)
// Check if passenger count is exactly 2 permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"TravelAPI___search_flights", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/travel" ) when { context.input.passengers == 2 };
String
// Check if payment method is credit card permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"PaymentAPI___process_payment", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/payment" ) when { context.input.paymentMethod == "credit-card" };
Daftar (Set)
// Check if country is in allowed list permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"ShippingAPI___calculate_rate", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/shipping" ) when { ["US", "CA", "MX"].contains(context.input.country) };
Memeriksa Bidang Opsional
// Require optional field to be present permit( principal is AgentCore::OAuthUser, action == AgentCore::Action::"OrderAPI___create_order", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/order" ) when { context.input has shippingAddress };