Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
En esta página, se describe cómo conectar el procesador de extensiones de Apigee a una Agent Gateway para que las políticas de Apigee se apliquen a las llamadas que un agente de IA realiza a su modelo, sus herramientas y los servidores del Protocolo de contexto del modelo (MCP) que usa, sin cambiar el agente.
Una Agent Gateway es el punto de entrada y salida de la red para el tráfico de un agente. No es un balanceador de cargas, por lo que no usa una extensión de tráfico. En su lugar, la puerta de enlace delega la autorización a una extensión de autorización, y tú configuras el procesador de extensiones como esa extensión. Una vez que se conecta, la puerta de enlace envía cada solicitud y respuesta del agente a Apigee para su procesamiento, y Apigee devuelve un veredicto.
En la siguiente figura, se muestran los recursos que creas en esta página y la ruta que sigue una sola solicitud del agente a través de ellos:
En la figura 1, una solicitud se controla de la siguiente manera:
- El agente realiza una solicitud HTTPS normal a su modelo, una herramienta o un servidor de MCP. El agente se vincula a la puerta de enlace cuando se crea y no necesita cambios.
- La puerta de enlace retiene la solicitud y llama a la extensión de autorización para obtener un veredicto.
- La llamada sale a través del adjunto de red, por lo que se origina dentro de tu red de VPC.
- Tu zona de DNS privada resuelve el nombre de host de la llamada al host en la dirección IP interna del extremo de Private Service Connect.
- El extremo reenvía la devolución de llamada al adjunto de servicio de tu instancia de Apigee.
- El grupo de entornos enruta la llamada externa por su nombre de host al proxy sin destino, donde se ejecutan tus políticas.
- El proxy devuelve un veredicto a la puerta de enlace. Apigee nunca reenvía el tráfico del agente, ya que el proxy no tiene destino.
- Si el veredicto permite la solicitud, la puerta de enlace envía la solicitud original a su destino.
Los elementos AuthzPolicy y AuthzExtension de la figura 1 son de configuración, no de tráfico: la política adjunta la extensión a la puerta de enlace, y la extensión nombra el proxy del procesador de extensiones que se ejecuta. Ambos se crean en Configura la extensión de autorización.
Para conectar el procesador de extensiones a un balanceador de cargas, consulta Comienza a usar el procesador de extensiones de Apigee.
En las siguientes secciones, se te guiará a través de los pasos:
- Configura el procesador de extensiones de Apigee.
- Conecta la puerta de enlace del agente a Apigee.
- Configura la extensión de autorización.
- Verifica la conexión.
Antes de comenzar
Antes de comenzar, completa las siguientes tareas:
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Apigee, Compute Engine, Network Services, Network Security, and Cloud DNS APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Apigee, Compute Engine, Network Services, Network Security, and Cloud DNS APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.Instala la Google Cloud CLI.
Después de instalar Google Cloud CLI, ejecuta el comando
gcloud components updatepara obtener los componentes de gcloud más recientes.Aprovisiona una instancia de Apigee si aún no lo hiciste.
En la consola de Google Cloud , ve a la página Instancias de Apigee.
Implementa un Agent Gateway en la misma región que tu instancia de Apigee, con
governedAccessPathconfigurado comoAGENT_TO_ANYWHEREpara que la puerta de enlace controle el tráfico saliente del agente. Para obtener más información, consulta Configura Agent Gateway.Actualizarás la configuración de red de esta puerta de enlace más adelante, en Actualiza la puerta de enlace del agente, después de que exista la zona DNS.
Confirma que tienes una VPC y una subred que tanto el Agent Gateway como el extremo de Private Service Connect pueden usar.
Roles obligatorios
Para obtener los permisos que necesitas para conectar el procesador de extensiones de Apigee a una puerta de enlace del agente, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Crear y administrar recursos de Apigee:
Administrador de la organización de Apigee (
roles/apigee.admin) en la organización -
Crear y administrar extensiones de servicio:
Administrador de Service Extensions (
roles/networkservices.serviceExtensionsAdmin) en la organización -
Crear y administrar políticas de autorización:
Administrador de seguridad de red (
roles/networksecurity.admin) en la organización -
Crear y administrar recursos de redes, incluidos los extremos de Private Service Connect y DNS:
Administrador de red de Compute (
roles/compute.networkAdmin) en la organización
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Configura las variables de entorno
Configura las siguientes variables de entorno para identificar los recursos que creaste en Antes de comenzar. Cada sección posterior de esta página define las variables adicionales que necesita, en el punto en el que creas el recurso que nombran.
export PROJECT_ID=PROJECT_IDexport ORG_NAME=$PROJECT_IDexport REGION=REGIONexport INSTANCE=INSTANCEexport VPC_NETWORK_NAME=VPC_NETWORK_NAMEexport SUBNET=SUBNETexport GATEWAY=GATEWAY
Aquí:
PROJECT_IDes el ID del proyecto que contiene tu instancia de Apigee.REGIONes la Google Cloud región de tu instancia de Apigee.INSTANCEes el nombre de tu instancia de Apigee.VPC_NETWORK_NAMEySUBNETson la red de VPC y la subred que usan el Agent Gateway y el extremo de Private Service Connect.GATEWAYes el nombre del Agent Gateway que implementaste.
Para confirmar que las variables de entorno estén configuradas correctamente, ejecuta el siguiente comando y revisa el resultado:
echo $PROJECT_ID $ORG_NAME $REGION $INSTANCE $VPC_NETWORK_NAME $SUBNET $GATEWAY
Elige el nombre de host del texto destacado
La puerta de enlace llega a Apigee en un nombre de host privado que elijas. Lo eliges ahora, antes de crear cualquier elemento, porque el primer recurso que creas (el grupo de entornos de Apigee) lo usa como nombre de host, mientras que la zona de DNS que lo resuelve no se crea hasta que crees una zona de DNS privada.
export DNS_DOMAIN=DNS_DOMAINexport EXTPROC_HOST=apigee-extproc.$DNS_DOMAIN
Aquí, DNS_DOMAIN es un dominio de DNS privado que no tiene que resolverse en Internet pública, escrito sin un punto final, por ejemplo, internal.example.com. Esto proporciona un EXTPROC_HOST de apigee-extproc.internal.example.com. Puedes usar una etiqueta que no sea apigee-extproc, siempre y cuando el nombre de host permanezca dentro de DNS_DOMAIN.
Configura un token de autenticación
export TOKEN=$(gcloud auth print-access-token)echo $TOKEN
Configura el procesador de extensiones de Apigee
Nombra los recursos de Apigee que crea esta sección:
export EXTPROC_ENV=EXTPROC_ENVexport EXTPROC_ENVGROUP=EXTPROC_ENVGROUPexport PROXY_NAME=PROXY_NAME
Aquí:
EXTPROC_ENVyEXTPROC_ENVGROUPson nombres que eliges para un entorno y un grupo de entornos de Apigee dedicados al procesador de extensiones, por ejemplo,extproc-envyextproc-envgroup. Cada nombre debe tener entre 2 y 32 caracteres de letras minúsculas, números o guiones, debe comenzar con una letra y no puede terminar con un guion. El nombre del entorno debe ser diferente de todos los demás nombres de entorno de tu organización.PROXY_NAMEes un nombre que eliges para el proxy del procesador de extensiones, por ejemplo,extproc-authz.
El lado de Apigee de la configuración es el mismo que para un balanceador de cargas. Sigue los pasos para configurar el procesador de extensiones de Apigee en la guía de inicio rápido para hacer lo siguiente:
- Crea un entorno de Apigee con la propiedad
apigee-service-extension-enabledestablecida entrue, adjúntalo a tu instancia y crea un grupo de entornos cuyo nombre de host sea$EXTPROC_HOST. - Crea e implementa un proxy del procesador de extensiones sin destino en ese entorno.
Luego, enumera las implementaciones en el entorno:
curl -s -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments/$EXTPROC_ENV/deployments"
El entorno puede tener más de un proxy implementado, por lo que, en la respuesta, busca la entrada cuyo apiProxy sea $PROXY_NAME y anota su revision.
Puedes revisar el proxy en la consola de Google Cloud :
Establece la siguiente variable en esa revisión, que necesitarás en Verificar la conexión:
export REVISION=REVISION
Conecta Agent Gateway a Apigee
La puerta de enlace llega a Apigee a través de un extremo de Private Service Connect en tu VPC, que encuentra resolviendo $EXTPROC_HOST en una zona del DNS privada.
Busca el adjunto del servicio
Busca el adjunto de servicio de tu instancia de Apigee:
curl -s -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances"
Establece la siguiente variable en el valor serviceAttachment de la instancia en tu región:
export SERVICE_ATTACHMENT=SERVICE_ATTACHMENT
Crea un adjunto de red
El Agent Gateway sale de tu VPC a través de un adjunto de red. Elige un nombre para él, por ejemplo, agent-gateway-attachment, y créalo:
export NETWORK_ATTACHMENT=NETWORK_ATTACHMENTgcloud compute network-attachments create $NETWORK_ATTACHMENT \ --region=$REGION --subnets=$SUBNET --connection-preference=ACCEPT_AUTOMATIC
Crea el extremo de Private Service Connect
Reserva una dirección IP interna y crea el extremo de Private Service Connect:
gcloud compute addresses create apigee-extproc-psc-ip \ --region=$REGION --subnet=$SUBNET --purpose=GCE_ENDPOINTgcloud compute forwarding-rules create apigee-extproc-psc-endpoint \ --region=$REGION --network=$VPC_NETWORK_NAME \ --address=apigee-extproc-psc-ip \ --target-service-attachment=$SERVICE_ATTACHMENT
En la consola de Google Cloud , ve a la página Private Service Connect .
Confirma que el extremo informe pscConnectionStatus: ACCEPTED y configura la siguiente variable en su dirección IP:
gcloud compute forwarding-rules describe apigee-extproc-psc-endpoint \ --region=$REGION --format="value(pscConnectionStatus,IPAddress)"export PSC_IP=PSC_IP
Si el estado es PENDING, tu proyecto no está en el consumerAcceptList de la instancia de Apigee y no se puede aceptar la conexión.
Crea una zona de DNS privado
Crea una zona de DNS privada para $DNS_DOMAIN y un registro A que resuelva $EXTPROC_HOST en la dirección IP del extremo:
gcloud dns managed-zones create extproc-zone \ --dns-name=$DNS_DOMAIN. --visibility=private --networks=$VPC_NETWORK_NAME \ --description="Apigee extension processor callout host"gcloud dns record-sets create $EXTPROC_HOST. --type=A --ttl=300 \ --rrdatas=$PSC_IP --zone=extproc-zone
Actualiza Agent Gateway
Actualiza Agent Gateway desde Antes de comenzar para que salga a través de tu adjunto de red y pueda resolver la zona que creaste.
Exporta la configuración actual:
gcloud network-services agent-gateways export $GATEWAY \ --location=$REGION --destination=agent-gateway.yaml
En
agent-gateway.yaml, agrega el siguiente bloquenetworkConfigy reemplaza cada marcador de posición por el valor de la variable de entorno correspondiente. El archivo se edita directamente, por lo que las variables de shell no se sustituyen aquí:networkConfig: egress: networkAttachment: projects/PROJECT_ID/regions/REGION/networkAttachments/NETWORK_ATTACHMENT dnsPeeringConfig: domains: [ DNS_DOMAIN. ] targetProject: PROJECT_ID targetNetwork: projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
Deja el resto del archivo, incluidos
googleManaged.governedAccessPath,protocolsyregistries, como se exportaron.Importa la configuración editada:
gcloud network-services agent-gateways import $GATEWAY \ --location=$REGION --source=agent-gateway.yaml
Para ver el conjunto completo de campos de Agent Gateway, consulta Configura Agent Gateway.
Configura la extensión de autorización
Dos recursos conectan la puerta de enlace a tu proxy del procesador de extensiones: una extensión de autorización que apunta a Apigee y una política de autorización que adjunta la extensión a la puerta de enlace.
Crea la extensión de autorización
Elige un nombre para la extensión de autorización, por ejemplo, apigee-authz-extension.
Los campos metadata seleccionan qué proxy de Apigee se ejecuta y si se envían los cuerpos de los mensajes:
export AUTHZ_EXT=AUTHZ_EXTcat > authz-extension.yaml <<EOF name: projects/$PROJECT_ID/locations/$REGION/authzExtensions/$AUTHZ_EXT authority: $EXTPROC_HOST service: $EXTPROC_HOST timeout: 5s metadata: apigee-extension-processor: $PROXY_NAME apigee-request-body: 'true' apigee-response-body: 'true' EOFgcloud service-extensions authz-extensions import $AUTHZ_EXT \ --source=authz-extension.yaml --location=$REGION
Aquí:
apigee-extension-processorselecciona el proxy del procesador de extensiones que procesa el tráfico.apigee-request-bodyyapigee-response-bodyhacen que los cuerpos de solicitud y respuesta estén disponibles en el proxy comorequest.contentyresponse.content. Sin ellos, las políticas que inspeccionan la carga útil no encuentran nada.
Crea la política de autorización
Elige un nombre para la política de autorización, por ejemplo, apigee-content-authz-policy. La política adjunta la extensión a la puerta de enlace y determina qué tráfico se envía a Apigee:
export AUTHZ_POLICY=AUTHZ_POLICYcat > authz-policy.yaml <<EOF name: projects/$PROJECT_ID/locations/$REGION/authzPolicies/$AUTHZ_POLICY action: CUSTOM policyProfile: CONTENT_AUTHZ customProvider: authzExtension: resources: - projects/$PROJECT_ID/locations/$REGION/authzExtensions/$AUTHZ_EXT httpRules: - to: operations: - paths: - prefix: "/" target: resources: - projects/$PROJECT_ID/locations/$REGION/agentGateways/$GATEWAY EOFgcloud beta network-security authz-policies import $AUTHZ_POLICY \ --source=authz-policy.yaml --location=$REGION
Usa policyProfile: CONTENT_AUTHZ para que se inspeccionen los cuerpos de los mensajes.
Una política de REQUEST_AUTHZ solo evalúa los encabezados de solicitud.
Verifica la conexión
Para generar tráfico, necesitas un agente cuya salida esté regida por esta puerta de enlace. Un agente se vincula a un Agent Gateway cuando se crea, estableciendo su configuración de Agent Gateway del agente en $GATEWAY. No puedes ejercer la conexión con una solicitud HTTP directa al Agent Gateway. Para obtener más información, consulta Configura Agent Gateway.
Inicia una sesión de depuración de Apigee en el proxy del procesador de extensiones y, luego, envía una solicitud a través del agente:
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments/$EXTPROC_ENV/apis/$PROXY_NAME/revisions/$REVISION/debugsessions?timeout=600" \ -d '{"count":15,"tracesize":5120,"filter":"(request.uri Like \"*generateContent*\")"}'
En las transacciones capturadas, confirma lo siguiente:
- La URL de la solicitud es la dirección a la que llamó el agente, como el extremo del modelo o un host de herramientas, en lugar de una ruta base de Apigee.
- Se completan
request.contentyresponse.content, lo que confirma que los metadatos del cuerpo en la extensión de autorización funcionan.
Si no aparecen transacciones, verifica que el nombre de host del grupo de entornos, el registro DNS y los campos authority y service de la extensión sean todos $EXTPROC_HOST, que el extremo de Private Service Connect informe ACCEPTED y que el governedAccessPath de la puerta de enlace sea AGENT_TO_ANYWHERE.
¿Qué sigue?
- Lee la descripción general del procesador de extensiones de Apigee.
- Comienza a usar el procesador de extensiones de Apigee en un balanceador de cargas.
- Configura políticas de Apigee con el procesador de extensiones, que abarca la configuración de políticas específica del procesador de extensiones.