Conditions de stratégie
Les conditions ajoutent une logique fine aux politiques en utilisant des clauses when et unless :
when { principal.hasTag("username") && principal.getTag("username") == "refund-agent" && context.input.amount < 500 }
Types de conditions
-
when { … }- La politique ne s'applique que si la condition est vraie -
unless { … }- La politique ne s'applique que si la condition est fausse -
when guardrails { … }- La politique ne s'applique que si la condition affirmée sur la ou les sorties d'un ou de plusieurs garde-corps s'avère vraie -
unless guardrails { … }- La politique ne s'applique que si la condition affirmée sur la ou les sorties d'un ou de plusieurs garde-corps s'avère fausse
Arguments des outils
context.inputcontient les arguments passés à l'appel de l'outil :
context.input.amount < 500
Lorsqu'un utilisateur appelle RefundTool___process_refund avec des arguments tels que :
{ "orderId": "12345", "amount": 450, "reason": "Defective product" }
La politique peut accéder aux valeurs suivantes :
-
context.input.orderId→ « 12345 » -
context.input.amount→ 450 -
context.input.reason→ « Produit défectueux »
Les politiques peuvent prendre des décisions en fonction de paramètres d'appel d'outils spécifiques.
Attributs principaux
Les principaux attributs varient en fonction du type d'authentification configuré pour votre AgentCore passerelle.
Réclamations OAuth (balises)
Pour les OAuth-authenticated passerelles, les demandes JWT provenant du jeton OAuth sont stockées sous forme de balises sur l'entité. OAuthUser Exemple de réclamations de JWT :
{ "sub": "user-123", "username": "refund-agent", "scope": "refund:write admin:read", "role": "admin" }
Ces allégations deviennent des étiquettes sur l'entité principale. Vérifiez si un tag existe :
principal.hasTag("username")
Obtenez une valeur de balise :
principal.getTag("username") == "refund-agent"
Correspondance des motifs :
principal.getTag("scope") like "*refund:write*"
Attributs de l'entité IAM
Pour les IAM-authenticated passerelles, le principal possède un id attribut contenant l'ARN IAM de l'appelant. Les principes IAM ne prennent pas en charge les balises.
Format de l'entité principale
Le principe de Cedar pour les IAM-authenticated passerelles estAgentCore::IamEntity. L'principal.idattribut contient l'ARN IAM de l'appelant.
Pour les appelants s'authentifiant via un rôle IAM supposé, l'ID d'entité principal.id et Cedar utilise le format suivant :
arn:aws:sts::<account-id>:assumed-role/<role-name>
Par exemple, si un appelant assume le rôleMyServiceRole, l'identifiant de l'entité Cedar est le suivant :
AgentCore::IamEntity::"arn:aws:sts::123456789012:assumed-role/MyServiceRole"
Ce format est stable d'un appel à l'autre, vous pouvez donc l'utiliser principal == pour une correspondance exacte des rôles.
Motif correspondant à un objet similaire
Vous pouvez également utiliser l'likeopérateur avec des caractères génériques pour une correspondance plus large :
// 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"
Opérateurs logiques
Combinez plusieurs conditions à l'aide d'opérateurs logiques :
-
&&- ET (toutes les conditions doivent être vraies) -
||- OU (au moins une condition doit être vraie) -
!- NON (annule une condition)
Exemple :
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