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