View a markdown version of this page

Conditions de stratégie - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Conditions de stratégie

Les conditions ajoutent une logique fine aux politiques à l'aide de 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 s'applique uniquement si la condition affirmée sur la ou les sorties d'un ou de plusieurs garde-corps est évaluée comme vraie

  • unless guardrails { …​ }- La politique s'applique uniquement si la condition affirmée sur la ou les sorties d'un ou de plusieurs garde-corps est évaluée comme fausse

Les arguments de l'outil

context.inputcontient les arguments transmis à 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 revendications JWT provenant du jeton OAuth sont stockées sous forme de balises sur l'entité. OAuthUser Exemples de déclarations 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 d'entité IAM

Pour les IAM-authenticated passerelles, le principal possède un id attribut contenant l'ARN IAM de l'appelant. Les principaux IAM ne prennent pas en charge les balises.

Format de l'entité principale

Le principal de Cedar pour les IAM-authenticated passerelles estAgentCore::IamEntity. L'principal.idattribut contient l'ARN IAM de l'appelant.

Pour les appelants qui s'authentifient 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'ID d'entité Cedar est le suivant :

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

Ce format est stable d'une invocation à l'autre, vous pouvez donc l'utiliser principal == pour une correspondance exacte des rôles.

Motif correspondant à un motif 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