Modelli politici comuni
Questi esempi dimostrano i modelli politici Cedar utilizzati di frequente. I modelli funzionano sia con l'autenticazione OAuth che con l'autenticazione IAM: seleziona il tipo principale appropriato per la configurazione del gateway. AgentCore Per i dettagli sugli attributi principali, consulta Attributi principali.
Questi modelli si applicano indipendentemente dal tipo di autenticazione.
Arresto di emergenza
Disattiva tutte le chiamate agli strumenti sull'intero gateway:
forbid( principal, action, resource );
Caso d'uso: spegnimento di emergenza, modalità di manutenzione o risposta agli incidenti.
Effetto: sostituisce tutte le politiche di autorizzazione a causa della semantica proibita-vincente.
Disabilita uno strumento specifico
Disabilita uno strumento specifico mantenendone operativi gli altri:
forbid( principal, action == AgentCore::Action::"RefundTool___process_refund", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/refund-gateway" );
Caso d'uso: disattiva temporaneamente uno strumento problematico senza influire sulle altre funzionalità.
Blocca l'accesso degli utenti
Impedisci a utenti o account specifici di eseguire azioni:
OAuth: blocca utenti specifici
Blocca un utente abbinando il tag del nome utente:
forbid( principal is AgentCore::OAuthUser, action, resource ) when { principal.hasTag("username") && principal.getTag("username") == "suspended-user" };
Caso d'uso: revoca immediatamente l'accesso a un account utente compromesso o sospeso.
IAM: blocca un account specifico
Blocca i chiamanti da un AWS account specifico:
forbid( principal is AgentCore::IamEntity, action, resource ) when { principal.id like "*:444455556666:*" };
Caso d'uso: impedire agli account di prova o non autorizzati di accedere agli strumenti di produzione. Il modello
:444455556666:
corrisponde a qualsiasi formato ARN (assumed-role, utente IAM o ruolo IAM) contenente l'ID dell'account.
Role-based controllo degli accessi
Limita l'accesso in base ai ruoli. OAuth utilizza i tag dei ruoli; IAM utilizza i modelli ARN dei ruoli.
OAuth: utilizzo dei tag di ruolo
Consenti l'accesso solo agli utenti con ruoli specifici:
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") };
Caso d'uso: consente le operazioni amministrative solo per gli utenti con ruoli di amministratore o manager.
IAM: utilizzo degli ARN dei ruoli IAM
Consenti l'accesso solo ai chiamanti che utilizzano ruoli IAM specifici. Puoi utilizzare la principal == corrispondenza esatta o la corrispondenza dei principal.id like modelli:
// 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" );
Caso d'uso: consenti le operazioni amministrative solo per i chiamanti che assumono il ruolo AdminRole IAM. L'ID dell'entità Cedar per i ruoli presunti utilizza il formato. arn:aws:sts::<account>:assumed-role/<role-name>
Variazioni che utilizzano il pattern matching:
// 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/*"
Operazioni sui tipi di dati
Cedar supporta vari tipi di dati in determinate condizioni. Questi esempi utilizzano OAuth principals (). AgentCore::OAuthUser Per i IAM-authenticated gateway, utilizza AgentCore::IamEntity invece: la logica di convalida dell'input rimane identica.
Numeri interi (lunghi)
// 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 };
Stringhe
// 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" };
Elenchi (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) };
Verifica dei campi opzionali
// 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 };