View a markdown version of this page

Modelli politici comuni - Amazon Bedrock AgentCore

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 };