View a markdown version of this page

Guida introduttiva a Policy in AgentCore - Amazon Bedrock AgentCore

Guida introduttiva a Policy in AgentCore

In questo tutorial, imparerai come configurare Policy AgentCore e integrarla con un Amazon Bedrock AgentCore Gateway utilizzando la AgentCore CLI. Creerai uno strumento di elaborazione dei rimborsi con politiche Cedar che applicano le regole aziendali per gli importi dei rimborsi.

Prerequisiti

Prima di iniziare, assicurati di avere quanto segue:

  • AWS Account con credenziali configurate. Per configurare le credenziali, puoi installare e utilizzare l'interfaccia a riga di AWS comando seguendo la procedura descritta in Guida introduttiva alla AWS CLI.

  • Node.js 18+ installati

  • Autorizzazioni IAM per la creazione di ruoli, funzioni Lambda, motori di policy e utilizzo di Amazon Bedrock AgentCore

  • Una funzione Lambda che elabora le richieste di rimborso. Puoi usare una funzione esistente o crearne una per questo tutorial. Nota la funzione ARN da utilizzare nella fase 2.

Fase 1: Configurazione e installazione

Installa la AgentCore CLI:

npm install -g @aws/agentcore

Crea un nuovo AgentCore progetto:

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

    Il --defaults flag crea un progetto con un agente Python Strands predefinito. Il comando cd si sposta nella directory del progetto dove devono essere eseguiti i comandi successivi.

Interactive
  1. È inoltre possibile eseguire l'esecuzione agentcore create senza flag per utilizzare la procedura guidata interattiva. La procedura guidata guida l'utente nella selezione del nome del progetto, del framework dell'agente, del fornitore del modello e di altre opzioni. Dopo la creazione del progetto, passa alla directory del progetto con cd PolicyDemo.

Fase 2: Aggiungere un gateway con un motore di policy

Utilizza la AgentCore CLI per aggiungere un gateway, un target di funzione Lambda e un motore di policy al tuo progetto.

Aggiungi un gateway

Crea un gateway senza autorizzazione in entrata (per semplicità in questo tutorial) e collega il tuo agente ad esso:

Esempio
AgentCore CLI
  1. agentcore add gateway --name PolicyGateway --authorizer-type NONE --runtimes PolicyDemo
Interactive
  1. Esegui agentcore per aprire il TUI, quindi seleziona aggiungi e scegli Gateway:

  2. Inserisci il nome del gateway:

    Gateway wizard: inserisci il nome
  3. Seleziona il tipo di autorizzatore. Per questo tutorial, scegli NESSUNO:

    Gateway Wizard: seleziona NONE (autorizzatore)
  4. Configura le opzioni avanzate o accetta le impostazioni predefinite:

    Gateway Wizard: configurazione avanzata
  5. Rivedi la configurazione e premi Invio per confermare:

    Gateway Wizard: verifica la configurazione

Aggiungi un obiettivo di funzione Lambda con uno strumento di rimborso

Registra la tua funzione Lambda come destinazione gateway con uno schema di strumenti che definisce uno strumento di elaborazione dei rimborsi:

Esempio
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

    Sostituisci <YOUR_LAMBDA_ARN> con l'ARN della tua funzione Lambda. Il refund_tools.json file definisce lo schema dello strumento di rimborso.

Interactive
  1. Esegui agentcore per aprire il TUI, quindi seleziona aggiungi e scegli Gateway Target:

  2. Inserisci il nome del bersaglio.

  3. Seleziona la funzione Lambda come tipo di destinazione:

    Procedura guidata di destinazione del gateway: seleziona la funzione Lambda
  4. Immettete l'ARN Lambda e il percorso del file dello schema dello strumento, quindi confermate.

Aggiungi un motore di policy

Crea un motore di policy e collegalo al gateway in modalità ENFORCE:

Esempio
AgentCore CLI
  1. agentcore add policy-engine --name RefundPolicyEngine \ --attach-to-gateways PolicyGateway \ --attach-mode ENFORCE
Interactive
  1. Esegui agentcore per aprire il TUI, quindi seleziona aggiungi e scegli Policy Engine:

  2. Inserisci il nome del policy engine:

    Procedura guidata del motore di gestione delle politiche: inserisci il nome
  3. Seleziona i gateway a cui collegare il motore delle politiche:

    Procedura guidata del Policy Engine: collega i gateway
  4. Scegli la modalità di applicazione. Seleziona ENFORCE:

    Procedura guidata del motore di gestione delle politiche: seleziona la modalità di applicazione

Crea una politica Cedar

Fornisci direttamente un file di policy Cedar:

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

Le policy Cedar che fanno riferimento a specifici ARN gateway sul resource campo (come illustrato nell'esempio seguente) richiedono una distribuzione in due fasi: prima la distribuzione senza la policy di creazione del gateway, quindi recupera l'ARN del gateway dallo stato agentcore, aggiorna il file Cedar e aggiungi la policy prima della ridistribuzione. Cedar non ammette l'uso di risorse wildcard nelle dichiarazioni politiche.

In alternativa, dopo aver distribuito le risorse nella Fase 3, è possibile generare una policy Cedar partendo da una descrizione in linguaggio naturale:

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

Il --generate flag richiede che il gateway venga distribuito per primo, poiché richiama un' AWS API che richiede l'ARN del gateway per convertire il linguaggio naturale in Cedar. Questo approccio risolve automaticamente gli ARN gateway, rendendolo il percorso più semplice per la creazione di policy.

Comprendere la configurazione

I comandi CLI sopra riportati configurano diverse risorse nel progetto. AgentCore Ecco una spiegazione dettagliata di ogni componente.

Crea un gateway

Il comando agentcore add gateway crea un gateway che funge da endpoint del server MCP. L'impostazione --authorizer-type NONE disabilita l'autorizzazione in entrata per semplicità in questo tutorial. In produzione, utilizza l'autorizzazione IAM o JWT per proteggere il gateway.

Aggiungi obiettivo Lambda

Il comando agentcore add gateway-target registra una funzione Lambda come destinazione nel gateway. Il file di schema dello strumento definisce gli input che gli agenti possono trasmettere alla funzione, ad esempio l'importo del rimborso.

Crea un Policy Engine

Il comando agentcore add policy-engine crea un motore di policy, una raccolta di policy Cedar che valuta e autorizza le chiamate agli strumenti degli agenti. Il policy engine intercetta tutte le richieste al confine del gateway e determina se consentire o negare ogni azione in base alle politiche definite. Ciò fornisce un'autorizzazione deterministica al di fuori del codice dell'agente, garantendo un'applicazione coerente della sicurezza indipendentemente dal modo in cui l'agente è implementato.

Crea Cedar Policy

Cedar è un linguaggio di policy open source sviluppato AWS per scrivere politiche di autorizzazione. Il comando agentcore add policy crea una policy Cedar che regola le chiamate agli strumenti tramite il gateway. È possibile generare una politica da una descrizione in linguaggio naturale utilizzando o fornire direttamente un file di policy Cedar utilizzando--generate. --source

Di seguito è riportato un esempio di politica Cedar che consente rimborsi inferiori a 1000 USD:

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

La politica utilizza:

  • permit— Consente l'azione (Cedar supporta forbid anche la modalità di negazione delle azioni)

  • principal— L'entità che effettua la richiesta

  • action— Lo strumento specifico chiamato (RefundTarget___process_refund)

  • resource— L'istanza del gateway a cui si applica la policy

  • whencondizione — Requisiti aggiuntivi (l'importo deve essere < 1000$)

Allega policy a Gateway

I --attach-mode ENFORCE flag --attach-to-gateways and sul comando agentcore add policy-engine collegano il policy engine al gateway in modalità ENFORCE. In questa modalità:

  • Ogni chiamata allo strumento viene intercettata e valutata rispetto a tutte le politiche

  • Per impostazione predefinita, tutte le azioni vengono negate a meno che non siano esplicitamente consentite

  • Se una forbid politica corrisponde, l'accesso viene negato (semantica proibita-vince)

  • Le decisioni relative alle politiche vengono registrate per il monitoraggio e la conformità CloudWatch

Ciò garantisce che tutte le operazioni degli agenti attraverso il gateway siano regolate dalle politiche di sicurezza dell'utente.

Fase 3: Distribuzione

Implementa tutte le risorse per AWS:

agentcore deploy

La AgentCore CLI crea il gateway, registra la destinazione Lambda, effettua il provisioning del motore delle policy e allega la policy Cedar. Questo processo richiede circa 2-3 minuti.

Una volta completata la distribuzione, puoi verificare lo stato delle tue risorse:

agentcore status

Fase 4: Verificare la politica

Verifica la policy inviando richieste al gateway. Poiché il gateway utilizza--authorizer-type NONE, puoi inviare richieste direttamente con curl.

Test 1: rimborso di 500$ (dovrebbe essere consentito)

L'importo del rimborso di 500 USD è inferiore al limite di 1000 USD, quindi il motore delle politiche consente la richiesta:

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: rimborso di 2000$ (dovrebbe essere negato)

L'importo del rimborso di 2000 USD supera il limite di 1000 USD, pertanto il motore della politica respinge la richiesta:

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}}}'
Nota

Sostituisci <GATEWAY_URL> con l'URL del gateway mostrato nell'output di agentcore status.

Cosa hai costruito

Attraverso questo tutorial, hai creato:

  • MCP Server (Gateway): un endpoint gestito per strumenti

  • Obiettivo Lambda: uno strumento di elaborazione dei rimborsi registrato nel gateway

  • Motore delle politiche: sistema Cedar-based di valutazione delle politiche

  • Cedar Policy: regola di governance che consente rimborsi inferiori a 1000 USD

Risoluzione dei problemi

Se riscontri problemi durante la configurazione o il test, fai riferimento ai seguenti problemi e soluzioni comuni:

Problema Soluzione

"AccessDeniedException"

Controlla le autorizzazioni IAM per bedrock-agentcore: *

Il gateway non risponde

Attendi 30-60 secondi dopo la distribuzione per la propagazione DNS

La distribuzione non riesce

Esegui agentcore status per controllare lo stato delle risorse ed esaminare i messaggi di errore

Politica non applicata

Verifica che il motore delle politiche sia collegato in modalità ENFORCE eseguendo agentcore status

Errore di convalida Cedar durante la distribuzione

Le policy Cedar devono utilizzare ARN di risorse specifici: le risorse wildcard (ad esempio) vengono rifiutate. permit(principal, action, resource); Utilizza il gateway ARN di agentcore status nel campo della tua polizza Cedar. resource

Chiamata allo strumento negata in modo imprevisto

Il motore delle policy è in vigore e la policy Cedar ha respinto la richiesta. Verifica che la politica action e resource i campi corrispondano alla chiamata allo strumento che stai effettuando.

La distribuzione non riesce e causa un errore di convalida della policy

La modalità di convalida predefinita FAIL_ON_ANY_FINDINGS esegue sia i controlli dello schema che la convalida semantica, rifiutando la policy se una delle due produce risultati. È possibile impostare la modalità di convalida in modo da IGNORE_ALL_FINDINGS eseguire solo i controlli dello schema se non è necessaria la convalida semantica. Per la produzione, correggi la policy Cedar per superare sia i controlli dello schema che la convalida semantica.

Eliminazione

Per rimuovere le risorse create in questo tutorial, rimuovi sia il gateway che il motore delle politiche, quindi ridistribuisci:

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

La rimozione di un gateway non rimuove automaticamente il relativo motore di policy. È necessario rimuovere il motore delle politiche separatamente utilizzandoagentcore remove policy-engine.