View a markdown version of this page

Modelli politici comuni - Fondamento Amazon AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modelli politici comuni

Questi esempi dimostrano i modelli politici Cedar utilizzati frequentemente. I modelli funzionano sia con l'autenticazione OAuth che IAM: selezionate il tipo di principale appropriato per la configurazione del Gateway. AgentCore Per informazioni dettagliate sugli attributi principali, consulta Attributi principali. Attributi principali

Questi modelli si applicano indipendentemente dal tipo di autenticazione.

Arresto di emergenza

Disabilita tutte le chiamate agli strumenti sull'intero gateway:

forbid( principal, action, resource );

Caso d'uso: arresto di emergenza, modalità di manutenzione o risposta agli incidenti.

Effetto: sovrascrive tutte le politiche di autorizzazione a causa della semantica vietata la vittoria.

Disattiva uno strumento specifico

Disattiva 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 qualsiasi azione:

OAuth: blocca un utente specifico

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 immediata dell'accesso per 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: impedisce agli account di test o non autorizzati di accedere agli strumenti di produzione. Il modello :444455556666: corrisponde a qualsiasi formato ARN (ruolo presunto, utente IAM o ruolo IAM) contenente quell'ID di account.

Role-based controllo degli accessi

Limita l'accesso in base ai ruoli. OAuth utilizza i tag di ruolo; IAM utilizza i pattern 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: consenti 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 AdminRole ruolo IAM. L'ID dell'entità Cedar per i ruoli assunti 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 condizioni. Questi esempi utilizzano i principi OAuth (). AgentCore::OAuthUser Per i IAM-authenticated gateway, usa 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 };