View a markdown version of this page

Commencer à utiliser Policy dans AgentCore - 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.

Commencer à utiliser Policy dans AgentCore

Dans ce didacticiel, vous allez apprendre à configurer Policy in AgentCore et à l'intégrer à Amazon Bedrock AgentCore Gateway à l'aide de l' AgentCore interface de ligne de commande. 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 de disposer 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 de la section Démarrage avec l' AWS interface de ligne de commande.

  • Node.js Plus de 20 appareils 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.

La AgentCore CLI vérifie la pile d'amorçage du CDK pendant le déploiement. Si le bootstrap est requis, le déploiement interactif demande une confirmation. agentcore deploy --yesUtilisez-le pour l'autoriser automatiquement.

É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 --language Python --framework Strands \ --model-provider Bedrock --memory none cd PolicyDemo

    Ces options créent un agent Python Strands qui utilise Amazon Bedrock sans mémoire. La cd commande 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 indicateur 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 l' AgentCore interface de ligne de commande 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 simplifier 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'autorisation. Pour ce didacticiel, choisissez AUCUN  :

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

    Assistant de passerelle : 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 avec 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. Créez un refund_tools.json fichier dans le répertoire de votre projet avec le contenu suivant :

[ { "name": "process_refund", "description": "Process a customer refund request for a given dollar amount", "inputSchema": { "type": "object", "description": "Input for processing a refund", "properties": { "amount": { "type": "integer", "description": "The refund amount in dollars" } }, "required": ["amount"] } } ]
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 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 associez-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 vous souhaitez associer le moteur de politiques :

    Assistant Policy Engine : connecter des passerelles
  4. Choisissez le mode d'application. Sélectionnez APPLIQUER  :

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

Créez une politique Cedar

Fournissez directement un fichier de politique Cedar. Cedar n'autorise pas les ressources génériques dans les déclarations de politique. Cela nécessite un déploiement en deux phases : d'abord déployer sans la politique de création de la passerelle, puis récupérer l'ARN de la passerelle. Ajoutez ensuite la politique et redéployez.

  1. Déployez d'abord la passerelle (voir Étape 3 : Déployer), puis exécutez agentcore status pour obtenir l'ARN de la passerelle.

  2. Créez un refund_policy.cedar fichier dans le répertoire de votre projet en remplaçant l'ARN de la passerelle de l'étape précédente :

    permit(principal, action == AgentCore::Action::"RefundTarget___process_refund", resource == AgentCore::Gateway::"<gateway-arn>") when { context.input.amount < 1000 };
  3. Ajoutez la politique et redéployez :

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

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éployée en premier, 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 la méthode la plus simple pour créer des politiques.

Comprendre 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 fait office de point de terminaison de votre serveur MCP. Ce paramètre --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, comme le montant du remboursement.

Création d'un moteur de politiques

La commande agentcore add policy-engine crée un moteur de politiques, 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 faut autoriser ou 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 d'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 USD :

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é qui fait 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 à 1000 USD)

Attacher la politique à la passerelle

Les --attach-mode ENFORCE indicateurs --attach-to-gateways et de la commande agentcore add policy-engine associent 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 l'une des forbid règles correspond, l'accès est refusé (sémantique des victoires interdites)

  • 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 et provisionne le moteur de politique. Si vous avez fourni un fichier de politique ARN-based Cedar, ajoutez-le après ce déploiement et exécutez à nouveau agentcore deploy pour le joindre. Ce processus prend environ 2 à 3 minutes par déploiement.

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

agentcore status

Étape 4 : Testez la politique

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

L'URL de la passerelle affichée dans la sortie de l'état agentcore est le point de terminaison de base. Les requêtes MCP pointent vers le /mcp chemin de ce point de terminaison, ajoutez-les donc /mcp à l'URL avant d'envoyer des requêtes.

Test 1 : remboursement de 500 USD (devrait être autorisé)

Le montant du remboursement de 500 USD est inférieur à la limite de 1 000 USD. Le moteur de politique autorise donc la demande :

curl -X POST ++<GATEWAY_URL>++/mcp \ -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 2 000 USD (doit être refusé)

Le montant du remboursement de 2 000 dollars américains dépasse la limite de 1 000 dollars américains. Le moteur de politique refuse donc la demande :

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

<GATEWAY_URL>Remplacez-la par l'URL de la passerelle indiquée dans la sortie de l'état agentcore, puis ajoutez-la. /mcp

Ce que tu as construit

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

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

  • Lambda target  : outil de traitement des remboursements enregistré sur la passerelle

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

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

Résolution des problèmes

Si vous rencontrez des problèmes lors de la configuration ou des tests, consultez les solutions et problèmes courants suivants :

Problème Solution

"AccessDeniedException"

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

La passerelle ne répond pas

Attendez 30 à 60 secondes après le déploiement pour la propagation 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 politique 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 exemple,permit(principal, action, resource);) sont rejetées. Utilisez l'ARN de la passerelle à partir du statut agentcore dans le champ de votre politique Cedar. resource

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

Le moteur de politique est en cours d'application et la politique 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 avec une erreur de validation de la politique

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'une 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 Cedar pour 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 y est associé. Vous devez supprimer le moteur de politiques séparément à l'aide deagentcore remove policy-engine.