View a markdown version of this page

Condizioni delle policy - Amazon Bedrock AgentCore

Condizioni delle policy

Le condizioni aggiungono una logica granulare alle politiche utilizzando when le clausole and: unless

when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 }

Tipi di condizioni

  • when { …​ }- La politica si applica solo se la condizione è vera

  • unless { …​ }- La politica si applica solo se la condizione è falsa

  • when guardrails { …​ }- La politica si applica solo se la condizione affermata sul/gli output di uno o più guardrail risulta vera

  • unless guardrails { …​ }- La politica si applica solo se la condizione affermata sul/le uscite di uno o più guardrail risulta falsa

Argomenti dello strumento

context.inputcontiene gli argomenti passati alla chiamata allo strumento:

context.input.amount < 500

Quando un utente chiama RefundTool___process_refund con argomenti come:

{ "orderId": "12345", "amount": 450, "reason": "Defective product" }

La policy può accedere a questi valori:

  • context.input.orderId→ «12345"

  • context.input.amount→ 450

  • context.input.reason→ «Prodotto difettoso»

Le politiche possono prendere decisioni in base a parametri specifici di utilizzo degli strumenti.

Attributi principali

Gli attributi principali differiscono in base al tipo di autenticazione configurato per il AgentCore gateway.

Dichiarazioni OAuth (tag)

Per i OAuth-authenticated gateway, le attestazioni JWT del token OAuth vengono archiviate come tag sull'entità. OAuthUser Esempio di affermazioni JWT:

{ "sub": "user-123", "username": "refund-agent", "scope": "refund:write admin:read", "role": "admin" }

Queste affermazioni diventano tag sull'entità principale. Controlla se esiste un tag:

principal.hasTag("username")

Ottieni un valore per il tag:

principal.getTag("username") == "refund-agent"

Corrispondenza del modello:

principal.getTag("scope") like "*refund:write*"

attributi dell'entità IAM

Per i IAM-authenticated gateway, il principale ha un id attributo contenente l'ARN IAM del chiamante. I principali IAM non supportano i tag.

Formato dell'entità principale

Il principale di Cedar per i IAM-authenticated gateway è. AgentCore::IamEntity L'principal.idattributo contiene l'ARN IAM del chiamante.

Per i chiamanti che si autenticano tramite un presunto ruolo IAM, l'ID dell'entità principal.id e Cedar utilizzano il formato:

arn:aws:sts::<account-id>:assumed-role/<role-name>

Ad esempio, se un chiamante assume il ruoloMyServiceRole, l'ID dell'entità Cedar è:

AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/MyServiceRole"

Questo formato è stabile tra le chiamate, quindi è possibile principal == utilizzarlo per una corrispondenza esatta dei ruoli.

Corrispondenza di modelli con simili

Puoi anche usare l'likeoperatore con i caratteri jolly per una corrispondenza più ampia:

// 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"

Operatori logici

Combina più condizioni utilizzando operatori logici:

  • &&- AND (tutte le condizioni devono essere vere)

  • ||- OR (almeno una condizione deve essere vera)

  • !- NOT (annulla una condizione)

Esempio:

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