View a markdown version of this page

Commencer à utiliser Policy dans AgentCore - Amazon Bedrock AgentCore

Commencer à utiliser Policy dans AgentCore

Dans ce didacticiel, vous allez apprendre à configurer une politique AgentCore et à l'intégrer à une AgentCore passerelle Amazon Bedrock à l'aide de la AgentCore CLI. Vous allez créer un outil de traitement des remboursements avec les politiques de Cedar qui appliquent les règles commerciales relatives aux montants des remboursements.

Conditions préalables

Avant de commencer, assurez-vous que vous disposez des éléments suivants :

  • AWS Compte avec informations d'identification configurées. Pour configurer les informations d'identification, vous pouvez installer et utiliser l'interface de ligne de AWS commande en suivant les étapes décrites dans Getting started with the AWS CLI.

  • Node.js Plus de 18 ans installés

  • Autorisations IAM pour créer des rôles, des fonctions Lambda, des moteurs de politiques et utiliser Amazon Bedrock AgentCore

  • Fonction Lambda qui traite les demandes de remboursement. Vous pouvez utiliser une fonction existante ou en créer une pour ce didacticiel. Notez la fonction ARN à utiliser à l'étape 2.

Étape 1 : Configuration et installation

Installez la AgentCore CLI :

npm install -g @aws/agentcore

Créez un nouveau AgentCore projet :

Exemple
AgentCore CLI
  1. agentcore create --name PolicyDemo --defaults cd PolicyDemo

    L'--defaultsindicateur crée un projet avec un agent Python Strands par défaut. La commande cd se déplace dans le répertoire du projet où les commandes suivantes doivent être exécutées.

Interactive
  1. Vous pouvez également exécuter agentcore create sans drapeaux pour utiliser l'assistant interactif. L'assistant vous guide dans la sélection d'un nom de projet, d'une structure d'agent, d'un fournisseur de modèles et d'autres options. Après la création du projet, accédez au répertoire du projet avec cd PolicyDemo.

Étape 2 : Ajouter une passerelle avec un moteur de politiques

Utilisez la AgentCore CLI pour ajouter une passerelle, une cible de fonction Lambda et un moteur de politiques à votre projet.

Ajouter une passerelle

Créez une passerelle sans autorisation entrante (pour des raisons de simplicité dans ce didacticiel) et associez-y votre agent :

Exemple
AgentCore CLI
  1. agentcore add gateway --name PolicyGateway --authorizer-type NONE --runtimes PolicyDemo
Interactive
  1. Exécutez agentcore pour ouvrir le TUI, puis sélectionnez Ajouter et choisissez Gateway :

  2. Entrez le nom de la passerelle :

    Assistant de passerelle : entrez le nom
  3. Sélectionnez le type d'autorisateur. Pour ce didacticiel, choisissez AUCUN :

    Assistant Gateway : sélectionnez AUCUN autorisateur
  4. Configurez les options avancées ou acceptez les valeurs par défaut :

    Assistant Gateway : configuration avancée
  5. Vérifiez la configuration et appuyez sur Entrée pour confirmer :

    Assistant Gateway : révision de la configuration

Ajouter une cible de fonction Lambda à l'aide d'un outil de remboursement

Enregistrez votre fonction Lambda en tant que cible de passerelle avec un schéma d'outil qui définit un outil de traitement des remboursements :

Exemple
AgentCore CLI
  1. agentcore add gateway-target --name RefundTarget --type lambda-function-arn \ --lambda-arn ++<YOUR_LAMBDA_ARN>++ \ --tool-schema-file refund_tools.json \ --gateway PolicyGateway

    <YOUR_LAMBDA_ARN>Remplacez-le par l'ARN de votre fonction Lambda. Le refund_tools.json fichier définit le schéma de l'outil de remboursement.

Interactive
  1. Exécutez agentcore pour ouvrir le TUI, puis sélectionnez Ajouter et choisissez Gateway Target :

  2. Entrez le nom de la cible.

  3. Sélectionnez la fonction Lambda comme type de cible :

    Assistant de ciblage de la passerelle : sélectionnez la fonction Lambda
  4. Entrez l'ARN Lambda et le chemin du fichier du schéma de l'outil, puis confirmez.

Ajouter un moteur de politiques

Créez un moteur de politiques et attachez-le à la passerelle en mode ENFORCE :

Exemple
AgentCore CLI
  1. agentcore add policy-engine --name RefundPolicyEngine \ --attach-to-gateways PolicyGateway \ --attach-mode ENFORCE
Interactive
  1. Exécutez agentcore pour ouvrir le TUI, puis sélectionnez Ajouter et choisissez Policy Engine :

  2. Entrez le nom du moteur de politiques :

    Assistant du moteur de politiques : entrez le nom
  3. Sélectionnez les passerelles auxquelles associer le moteur de politiques :

    Assistant du moteur de politiques : attachez des passerelles
  4. Choisissez le mode d'application. Sélectionnez ENFORCE :

    Assistant du moteur de politiques : sélection du mode d'application

Créez une politique Cedar

Fournissez directement un fichier de politique Cedar :

agentcore add policy --name RefundLimit \ --engine RefundPolicyEngine \ --source refund_policy.cedar
Note

Les politiques Cedar qui font référence à des ARN de passerelle spécifiques resource sur le terrain (comme illustré dans l'exemple ci-dessous) nécessitent un déploiement en deux phases : d'abord, déployez sans la politique de création de la passerelle, puis récupérez l'ARN de passerelle à partir du statut de l'agentcore, mettez à jour le fichier Cedar et ajoutez la politique avant le redéploiement. Cedar n'autorise pas les ressources génériques dans ses déclarations de politique.

Sinon, après avoir déployé vos ressources à l'étape 3, vous pouvez générer une politique Cedar à partir d'une description en langage naturel :

agentcore add policy --name RefundLimit \ --engine RefundPolicyEngine \ --generate "Only allow refunds under 1000 dollars" \ --gateway PolicyGateway

L'--generateindicateur nécessite que la passerelle soit d'abord déployée, car il appelle une AWS API qui a besoin de l'ARN de la passerelle pour convertir le langage naturel en Cedar. Cette approche résout automatiquement les ARN des passerelles, ce qui en fait le moyen le plus simple de créer des politiques.

Compréhension de la configuration

Les commandes CLI ci-dessus configurent plusieurs ressources de votre AgentCore projet. Voici une explication détaillée de chaque composant.

Création d'une passerelle

La commande agentcore add gateway crée une passerelle qui agit comme point de terminaison de votre serveur MCP. Le réglage --authorizer-type NONE désactive l'autorisation entrante pour des raisons de simplicité dans ce didacticiel. En production, utilisez l'autorisation IAM ou JWT pour sécuriser votre passerelle.

Ajouter une cible Lambda

La commande agentcore add gateway-target enregistre une fonction Lambda en tant que cible dans la passerelle. Le fichier de schéma de l'outil définit les entrées que les agents peuvent transmettre à la fonction, telles que le montant du remboursement.

Création d'un moteur de politiques

La commande agentcore add policy-engine crée un moteur de politiques, c'est-à-dire un ensemble de politiques Cedar qui évalue et autorise les appels aux outils des agents. Le moteur de politiques intercepte toutes les demandes à la limite de la passerelle et détermine s'il convient d'autoriser ou de refuser chaque action en fonction des politiques définies. Cela fournit une autorisation déterministe en dehors du code de l'agent, garantissant ainsi une application cohérente de la sécurité, quelle que soit la manière dont l'agent est implémenté.

Créer une politique sur le cèdre

Cedar est un langage de politique open source développé par AWS pour la rédaction de politiques d'autorisation. La commande agentcore add policy crée une politique Cedar qui régit les appels aux outils via la passerelle. Vous pouvez soit générer une politique à partir d'une description en langage naturel à l'aide de--generate, soit fournir un fichier de politique Cedar directement à l'aide de. --source

Voici un exemple de politique de Cedar qui autorise les remboursements inférieurs à 1 000$ :

permit(principal, action == AgentCore::Action::"RefundTarget___process_refund", resource == AgentCore::Gateway::"<gateway-arn>") when { context.input.amount < 1000 };

La politique utilise :

  • permit— Autorise l'action (Cedar permet également forbid de refuser des actions)

  • principal— L'entité à l'origine de la demande

  • action— L'outil spécifique appelé (RefundTarget___process_refund)

  • resource— L'instance de passerelle à laquelle la politique s'applique

  • whencondition — Exigences supplémentaires (le montant doit être inférieur à 1 000$)

Attacher la politique à la passerelle

Les --attach-mode ENFORCE drapeaux --attach-to-gateways and de la commande agentcore add policy-engine attachent le moteur de politique à la passerelle en mode ENFORCE. Dans ce mode :

  • Chaque appel d'outil est intercepté et évalué par rapport à toutes les politiques

  • Par défaut, toutes les actions sont refusées sauf autorisation explicite

  • Si une forbid politique correspond, l'accès est refusé (sémantique prohibid-wins)

  • Les décisions politiques sont enregistrées à des CloudWatch fins de surveillance et de conformité

Cela garantit que toutes les opérations des agents via la passerelle sont régies par vos politiques de sécurité.

Étape 3 : Déploiement

Déployez toutes les ressources pour AWS :

agentcore deploy

La AgentCore CLI crée la passerelle, enregistre la cible Lambda, approvisionne le moteur de politiques et attache la politique Cedar. Ce processus prend environ 2 à 3 minutes.

Une fois le déploiement terminé, vous pouvez vérifier l'état de vos ressources :

agentcore status

Étape 4 : tester la politique

Testez la politique en envoyant des demandes à la passerelle. Comme la passerelle l'utilise--authorizer-type NONE, vous pouvez envoyer des demandes directement avec curl.

Test 1 : Remboursement de 500$ (devrait être autorisé)

Le montant du remboursement de 500$ étant inférieur à la limite de 1 000$, le moteur de politiques autorise la demande :

curl -X POST ++<GATEWAY_URL>++ \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"RefundTarget___process_refund","arguments":{"amount":500}}}'

Test 2 : Remboursement de 2000$ (devrait être refusé)

Le montant du remboursement de 2 000$ dépasse la limite de 1 000$. Le moteur de politiques refuse donc la demande :

curl -X POST ++<GATEWAY_URL>++ \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"RefundTarget___process_refund","arguments":{"amount":2000}}}'
Note

Remplacez <GATEWAY_URL> par l'URL de passerelle indiquée dans le résultat de l'état d'agentcore.

Ce que vous avez construit

Grâce à ce didacticiel, vous avez créé :

  • Serveur MCP (passerelle) : point de terminaison géré pour les outils

  • Lambda target — Un outil de traitement des remboursements enregistré dans la passerelle

  • Moteur de Cedar-based politiques — système d'évaluation de politiques

  • Politique de Cedar — Règle de gouvernance autorisant les remboursements inférieurs à 1 000$

Résolution des problèmes

Si vous rencontrez des problèmes lors de l'installation ou des tests, consultez les problèmes courants et les solutions suivants :

Problème Solution

"AccessDeniedException"

Vérifiez les autorisations IAM pour bedrock-agentcore : *

La passerelle ne répond pas

Patientez 30 à 60 secondes après le déploiement pour la propagation du DNS

Le déploiement échoue

Exécutez agentcore status pour vérifier l'état des ressources et consulter les messages d'erreur

Politique non appliquée

Vérifiez que le moteur de politiques est connecté en mode ENFORCE en exécutant agentcore status

Erreur de validation Cedar lors du déploiement

Les politiques de Cedar doivent utiliser des ARN de ressources spécifiques ; les ressources génériques (par exemplepermit(principal, action, resource);) sont rejetées. Utilisez l'ARN de la passerelle issu du statut agentcore dans le resource champ de votre politique Cedar.

Appel à l'outil refusé de façon inattendue

Le moteur de politiques est en cours d'application et la politique de Cedar a refusé la demande. Vérifiez que la politique action et les resource champs correspondent à l'appel d'outil effectué.

Le déploiement échoue en raison d'une erreur de validation des politiques

Le mode de validation par défaut FAIL_ON_ANY_FINDINGS exécute à la fois des vérifications de schéma et une validation sémantique, rejetant la politique si l'un ou l'autre produit des résultats. Vous pouvez définir le mode de validation IGNORE_ALL_FINDINGS pour exécuter uniquement des vérifications de schéma si vous n'avez pas besoin de validation sémantique. Pour la production, corrigez la politique de Cedar afin de réussir à la fois les vérifications de schéma et la validation sémantique.

Nettoyage

Pour supprimer les ressources créées dans ce didacticiel, supprimez à la fois la passerelle et le moteur de politiques, puis redéployez :

agentcore remove gateway --name PolicyGateway agentcore remove policy-engine --name RefundPolicyEngine agentcore deploy

La suppression d'une passerelle ne supprime pas automatiquement le moteur de politique qui lui est attaché. Vous devez supprimer le moteur de politiques séparément à l'aide deagentcore remove policy-engine.