View a markdown version of this page

Cómo empezar con Policy en AgentCore - Amazon Bedrock AgentCore

Cómo empezar con Policy en AgentCore

En este tutorial, aprenderá a configurar una política AgentCore e integrarla con Amazon Bedrock AgentCore Gateway mediante la AgentCore CLI. Creará una herramienta de procesamiento de reembolsos con las políticas de Cedar que hagan cumplir las normas comerciales sobre los montos de los reembolsos.

Requisitos previos

Antes de empezar, asegúrate de tener lo siguiente:

  • AWS Cuenta con credenciales configuradas. Para configurar las credenciales, puede instalar y usar la interfaz de línea de AWS comandos siguiendo los pasos de Introducción a la AWS CLI.

  • Node.js Más de 18 instalados

  • Permisos de IAM para crear roles, funciones de Lambda, motores de políticas y usar Amazon Bedrock AgentCore

  • Función Lambda que procesa las solicitudes de reembolso. Puede usar una función existente o crear una para este tutorial. Tenga en cuenta la función ARN para utilizarla en el paso 2.

Paso 1: Configurar e instalar

Instale la AgentCore CLI:

npm install -g @aws/agentcore

Cree un AgentCore proyecto nuevo:

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

    La --defaults bandera crea un proyecto con un agente Python Strands predeterminado. El comando cd se mueve al directorio del proyecto, donde se deben ejecutar los siguientes comandos.

Interactive
  1. También puede ejecutar agentcore create sin indicadores para utilizar el asistente interactivo. El asistente le guiará para seleccionar el nombre del proyecto, la estructura del agente, el proveedor de modelos y otras opciones. Tras la creación del proyecto, vaya al directorio del proyecto con un cd PolicyDemo.

Paso 2: Añadir una pasarela con un motor de políticas

Utilice la AgentCore CLI para añadir una puerta de enlace, un objetivo de función Lambda y un motor de políticas a su proyecto.

Agregue una puerta de enlace

Cree una puerta de enlace sin autorización de entrada (para simplificar este tutorial) y adjunte su agente a ella:

ejemplo
AgentCore CLI
  1. agentcore add gateway --name PolicyGateway --authorizer-type NONE --runtimes PolicyDemo
Interactive
  1. Ejecute agentcore para abrir la TUI, luego seleccione agregar y elija Gateway:

  2. Introduzca el nombre de la pasarela:

    Asistente de puerta de enlace: introduzca el nombre
  3. Seleccione el tipo de autorizador. Para este tutorial, elija NINGUNO:

    Asistente de puerta de enlace: seleccione NINGUNO (autorizador)
  4. Configure las opciones avanzadas o acepte los valores predeterminados:

    Gateway Wizard: configuración avanzada
  5. Revise la configuración y pulse Entrar para confirmar:

    Gateway Wizard: revise la configuración

Agregue un objetivo de función Lambda con una herramienta de reembolso

Registre su función Lambda como destino de puerta de enlace con un esquema de herramientas que defina una herramienta de procesamiento de reembolsos:

ejemplo
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>Sustitúyala por el ARN de la función Lambda. El refund_tools.json archivo define el esquema de herramientas de la herramienta de reembolso.

Interactive
  1. Ejecute agentcore para abrir la TUI, luego seleccione agregar y elija Gateway Target:

  2. Introduzca el nombre del objetivo.

  3. Seleccione la función Lambda como tipo de destino:

    Asistente de destino de puerta de enlace: seleccione la función Lambda
  4. Introduzca el ARN de Lambda y la ruta del archivo del esquema de la herramienta y, a continuación, confirme.

Agregue un motor de políticas

Cree un motor de políticas y conéctelo a la puerta de enlace en el modo ENFORCE:

ejemplo
AgentCore CLI
  1. agentcore add policy-engine --name RefundPolicyEngine \ --attach-to-gateways PolicyGateway \ --attach-mode ENFORCE
Interactive
  1. Ejecute agentcore para abrir la TUI, luego seleccione agregar y elija Policy Engine:

  2. Introduzca el nombre del motor de políticas:

    Asistente del motor de políticas: introduzca el nombre
  3. Seleccione las pasarelas a las que desea conectar el motor de políticas:

    Asistente del motor de políticas: adjunte puertas de enlace
  4. Elija el modo de aplicación. Seleccione ENFORCE:

    Asistente del motor de políticas: seleccione el modo de aplicación

Cree una política de Cedar

Proporcione directamente un archivo de política de Cedar:

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

Las políticas de Cedar que hacen referencia a ARN de puerta de enlace específicos en el resource campo (como se muestra en el ejemplo siguiente) requieren una implementación en dos fases: primero se implementa sin la política de creación de la puerta de enlace, luego se recupera el ARN de la puerta de enlace del estado del núcleo del agente, se actualiza el archivo de Cedar y se agrega la política antes de volver a implementarla. Cedar no permite utilizar recursos comodín en las declaraciones de política.

Como alternativa, después de implementar los recursos en el paso 3, puede generar una política de Cedar a partir de una descripción en lenguaje natural:

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

El --generate indicador requiere que la puerta de enlace se implemente primero, ya que llama a una AWS API que necesita el ARN de la puerta de enlace para convertir el lenguaje natural en Cedar. Este enfoque resuelve automáticamente los ARN de las puertas de enlace, lo que lo convierte en la forma más sencilla de crear políticas.

Comprender la configuración

Los comandos CLI anteriores configuran varios recursos AgentCore del proyecto. Esta es una explicación detallada de cada componente.

Cree una puerta de enlace

El comando agentcore add gateway crea una puerta de enlace que actúa como punto final del servidor MCP. La configuración --authorizer-type NONE deshabilita la autorización entrante para simplificar este tutorial. En producción, utilice la autorización de IAM o JWT para proteger su puerta de enlace.

Añadir objetivo Lambda

El comando agentcore add gateway-target registra una función Lambda como destino en la puerta de enlace. El archivo de esquema de la herramienta define los datos que los agentes pueden transferir a la función, como el importe del reembolso.

Cree un motor de políticas

El comando agentcore add policy-engine crea un motor de políticas: un conjunto de políticas de Cedar que evalúa y autoriza las llamadas de los agentes a las herramientas. El motor de políticas intercepta todas las solicitudes en el límite de la puerta de enlace y determina si se permite o deniega cada acción en función de las políticas definidas. Esto proporciona una autorización determinista fuera del código del agente, lo que garantiza una aplicación coherente de la seguridad independientemente de cómo se implemente el agente.

Cree una política de Cedar

Cedar es un lenguaje de políticas de código abierto desarrollado por AWS para redactar políticas de autorización. El comando agentcore add policy crea una política de Cedar que rige las llamadas a las herramientas a través de la puerta de enlace. Puede generar una política a partir de una descripción en lenguaje natural utilizando --generate o proporcionar un archivo de política de Cedar directamente utilizando. --source

El siguiente es un ejemplo de una política de Cedar que permite reembolsos de menos de 1000$:

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

La política utiliza:

  • permit— Permite la acción (Cedar también apoya forbid la denegación de acciones)

  • principal— La entidad que hace la solicitud

  • action— La herramienta específica a la que se llama (RefundTarget___process_refund)

  • resource— La instancia de puerta de enlace en la que se aplica la política

  • whencondición: requisitos adicionales (el importe debe ser inferior a 1000$)

Adjunte la política a Gateway

Los --attach-mode ENFORCE indicadores --attach-to-gateways y del comando agentcore add policy-engine conectan el motor de políticas a la puerta de enlace en modo ENFORCE. En este modo:

  • Cada llamada a la herramienta es interceptada y evaluada en función de todas las políticas

  • De forma predeterminada, se deniegan todas las acciones a menos que se permitan explícitamente

  • Si alguna forbid política coincide, se deniega el acceso (semántica de prohibido-gana)

  • Las decisiones políticas se registran CloudWatch para su supervisión y cumplimiento

Esto garantiza que todas las operaciones de los agentes a través de la puerta de enlace se rijan por sus políticas de seguridad.

Paso 3: Implementar

Despliegue todos los recursos para AWS:

agentcore deploy

La AgentCore CLI crea la puerta de enlace, registra el objetivo Lambda, aprovisiona el motor de políticas y adjunta la política de Cedar. Este proceso tarda aproximadamente de 2 a 3 minutos.

Una vez completada la implementación, puede verificar el estado de sus recursos:

agentcore status

Paso 4: Probar la política

Pruebe la política enviando solicitudes a la pasarela. Como la pasarela lo usa--authorizer-type NONE, puedes enviar solicitudes directamente con curl.

Prueba 1: reembolsar 500$ (debería permitirse)

El importe del reembolso de 500$ está por debajo del límite de 1000$, por lo que el motor de políticas permite la solicitud:

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

Prueba 2: Reembolso de 2000$ (si se deniega)

El importe del reembolso de 2000$ supera el límite de 1000$, por lo que el motor de políticas deniega la solicitud:

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

<GATEWAY_URL>Sustitúyala por la URL de la puerta de enlace que aparece en el resultado del estado de agentcore.

Lo que has creado

A través de este tutorial, has creado:

  • Servidor MCP (puerta de enlace): un punto final gestionado para herramientas

  • Lambda target: una herramienta de procesamiento de reembolsos registrada en la pasarela

  • Motor de políticas: sistema Cedar-based de evaluación de políticas

  • Política de Cedar: norma de gobierno que permite reembolsos de menos de 1000$

Resolución de problemas

Si encuentra problemas durante la configuración o las pruebas, consulte los siguientes problemas y soluciones comunes:

Problema Solución

"AccessDeniedException"

Compruebe los permisos de IAM para bedrock-agentcore: *

Gateway no responde

Espere entre 30 y 60 segundos después de la implementación para que se propague el DNS

La implementación falla

Ejecute agentcore status para comprobar el estado de los recursos y revisar los mensajes de error

La política no se aplica

Compruebe que el motor de políticas esté conectado al modo ENFORCE ejecutando el estado agentcore

Error de validación de Cedar durante la implementación

Las políticas de Cedar deben usar ARN de recursos específicos; se rechazan los recursos comodín (por ejemplo,permit(principal, action, resource);). Utilice el ARN de puerta de enlace del estado agentcore en el campo de su póliza de Cedar. resource

Llamada de herramienta denegada inesperadamente

El motor de políticas se está aplicando y la política de Cedar denegó la solicitud. Compruebe que la política action y los resource campos coincidan con la llamada a la herramienta que se está realizando.

La implementación falla y se produce un error de validación de la política

El modo de validación predeterminado FAIL_ON_ANY_FINDINGS ejecuta tanto las comprobaciones del esquema como la validación semántica, y rechaza la política si alguna de ellas produce resultados. Puede configurar el modo de validación IGNORE_ALL_FINDINGS para que ejecute solo comprobaciones de esquema si no necesita una validación semántica. En el caso de la producción, corrija la política de Cedar para que supere tanto las comprobaciones del esquema como la validación semántica.

Limpieza

Para eliminar los recursos creados en este tutorial, elimine tanto la puerta de enlace como el motor de políticas y, a continuación, vuelva a desplegarlos:

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

Al eliminar una puerta de enlace, no se elimina automáticamente el motor de políticas asociado. Debe eliminar el motor de políticas por separado utilizandoagentcore remove policy-engine.