Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Guida introduttiva a Policy in AgentCore
In questo tutorial, imparerai come configurare Policy AgentCore e integrarla con un Amazon Bedrock AgentCore Gateway utilizzando l'interfaccia a riga di AgentCore comando. Creerai uno strumento di elaborazione dei rimborsi con politiche Cedar che applicano le regole aziendali per gli importi dei rimborsi.
Argomenti
Prerequisiti
Prima di iniziare, assicurati di avere quanto segue:
-
AWS Account con credenziali configurate. Per configurare le credenziali, è possibile installare e utilizzare l'interfaccia a riga di AWS comando seguendo i passaggi descritti in Guida introduttiva alla CLI AWS .
-
Node.js 20+ 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 utilizzare una funzione esistente o crearne una per questo tutorial. Nota la funzione ARN da utilizzare nella Fase 2.
La AgentCore CLI controlla lo stack di bootstrap del CDK durante la distribuzione. Se è richiesto il bootstrap, la distribuzione interattiva richiede una conferma. Usalo agentcore deploy --yes per autorizzarlo automaticamente.
Fase 1: Configurazione e installazione
Installa la AgentCore CLI:
npm install -g @aws/agentcore
Crea un nuovo AgentCore progetto:
Esempio
Fase 2: Aggiungere un gateway con un motore di policy
Usa 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
Aggiungi un obiettivo di funzione Lambda con uno strumento di rimborso
Registra la tua funzione Lambda come gateway target con uno schema di strumenti che definisce uno strumento di elaborazione dei rimborsi. Crea un refund_tools.json file nella directory del tuo progetto con i seguenti contenuti:
[ { "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"] } } ]
Esempio
Aggiungi un motore di policy
Crea un motore di policy e collegalo al gateway in modalità ENFORCE:
Esempio
Crea una policy Cedar
Fornisci direttamente un file di policy Cedar. Cedar non ammette l'uso di risorse jolly nelle dichiarazioni politiche. Ciò richiede una distribuzione in due fasi: prima l'implementazione senza la politica per creare il gateway, quindi recuperare l'ARN del gateway. Quindi aggiungi la policy e ridistribuiscila.
-
Implementa prima il gateway (vedi Passaggio 3: distribuzione), quindi esegui agentcore status per ottenere l'ARN del gateway.
-
Crea un
refund_policy.cedarfile nella directory del tuo progetto, sostituendo l'ARN del gateway del passaggio precedente:permit(principal, action == AgentCore::Action::"RefundTarget___process_refund", resource == AgentCore::Gateway::"<gateway-arn>") when { context.input.amount < 1000 }; -
Aggiungi la policy e ridistribuisci:
agentcore add policy --name RefundLimit \ --engine RefundPolicyEngine \ --source refund_policy.cedar agentcore deploy
In alternativa, dopo aver distribuito le risorse nella Fase 3, potete 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 prima implementato, perché chiama un' AWS API che necessita dell'ARN del gateway per convertire il linguaggio naturale in Cedar. Questo approccio risolve automaticamente gli ARN del gateway, rendendolo il percorso più semplice per la creazione di policy.
Comprendere la configurazione
I comandi CLI precedenti configurano diverse risorse nel AgentCore progetto. Ecco una spiegazione dettagliata di ogni componente.
Argomenti
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, usa l'autorizzazione IAM o JWT per proteggere il tuo gateway.
Aggiungi un target 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 passare 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 una politica Cedar
Cedar è un linguaggio politico open source sviluppato da AWS per scrivere politiche di autorizzazione. Il comando agentcore add policy crea una policy Cedar che governa le chiamate agli strumenti tramite il gateway. È possibile generare una policy da una descrizione in linguaggio naturale utilizzando o fornire direttamente un file di policy Cedar utilizzando--generate. --source
Di seguito è riportato un esempio di polizza 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 anche laforbidnegazione 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 USD)
Allega la 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
forbidpolicy corrisponde, l'accesso viene negato (semantica forbid-wins) -
Le decisioni 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 il target Lambda ed esegue il provisioning del policy engine. Se hai fornito un file di policy ARN-based Cedar, aggiungilo dopo questa distribuzione ed esegui nuovamente agentcore deploy per allegarlo. Questo processo richiede circa 2-3 minuti per distribuzione.
Al termine della distribuzione, puoi verificare lo stato delle tue risorse:
agentcore status
Fase 4: verifica la policy
Verifica la policy inviando richieste al gateway. Poiché il gateway utilizza--authorizer-type NONE, puoi inviare richieste direttamente con curl.
L'URL del gateway mostrato nell'output di agentcore status è l'endpoint di base. Le richieste MCP vanno al /mcp percorso di quell'endpoint, quindi aggiungile /mcp all'URL prima di inviare le richieste.
Test 1: rimborso di 500 USD (dovrebbe essere consentito)
L'importo del rimborso di 500 USD è inferiore al limite di 1000 USD, pertanto il policy engine consente la richiesta:
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: rimborso di 2000 USD (dovrebbe essere negato)
L'importo del rimborso di 2000 USD supera il limite di 1000 USD, pertanto il policy engine respinge la richiesta:
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}}}'
Nota
Sostituisci <GATEWAY_URL> con l'URL del gateway mostrato nell'output di agentcore status, quindi aggiungi. /mcp
Cosa hai costruito
Attraverso questo tutorial, hai creato:
-
MCP Server (Gateway): un endpoint gestito per gli strumenti
-
Lambda target: uno strumento di elaborazione dei rimborsi registrato nel gateway
-
Motore delle politiche: sistema Cedar-based di valutazione delle politiche
-
Politica Cedar: 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" |
Verifica le autorizzazioni IAM per bedrock-agentcore: * |
|
Il gateway non risponde |
Attendi 30-60 secondi dopo l'implementazione per la propagazione del 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 policy engine sia collegato in modalità ENFORCE eseguendo agentcore status |
|
Errore di convalida Cedar durante la distribuzione |
Le policy Cedar devono utilizzare ARN di risorse specifiche: le risorse wildcard (ad esempio) vengono rifiutate. |
|
Chiamata allo strumento negata in modo imprevisto |
Il policy engine è in vigore e la policy Cedar ha respinto la richiesta. Verifica che la policy |
|
La distribuzione non riesce con un errore di convalida della policy |
La modalità di convalida predefinita |
Eliminazione
Per rimuovere le risorse create in questo tutorial, rimuovi sia il gateway che il policy engine, quindi ridistribuisci:
agentcore remove gateway --name PolicyGateway agentcore remove policy-engine --name RefundPolicyEngine agentcore deploy
La rimozione di un gateway non rimuove automaticamente il motore di policy associato. È necessario rimuovere il policy engine separatamente utilizzandoagentcore remove policy-engine.