Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da
Apigee Edge.
Nesta página, descrevemos como conectar o processador de extensões da Apigee a um gateway de agente, para que as políticas da Apigee sejam aplicadas às chamadas que um agente de IA faz ao modelo, às ferramentas e aos servidores do Protocolo de Contexto de Modelo (MCP) que ele usa, sem mudar o agente.
Um gateway de agente é o ponto de entrada e saída de rede para o tráfego de um agente. Ele não é um balanceador de carga, então não usa uma extensão de tráfego. Em vez disso, o gateway delega a autorização a uma extensão de autorização, e você configura o processador de extensão como essa extensão. Depois de conectado, o gateway envia cada solicitação e resposta do agente para a Apigee processar, e a Apigee retorna um veredicto.
A figura a seguir mostra os recursos que você cria nesta página e o caminho que uma única solicitação de agente percorre por eles:
Na figura 1, uma solicitação é processada da seguinte maneira:
- O agente faz uma solicitação HTTPS comum para o modelo, uma ferramenta ou um servidor MCP. O agente é vinculado ao gateway quando é criado e não precisa de mudanças.
- O gateway retém a solicitação e chama a extensão de autorização para um veredito.
- A solicitação sai pelo anexo de rede, portanto, ela se origina dentro da sua rede VPC.
- Sua zona de DNS particular resolve o nome do host de callout para o endereço IP interno do endpoint do Private Service Connect.
- O endpoint encaminha a chamada para o anexo de serviço da sua instância da Apigee.
- O grupo de ambiente encaminha a callout pelo nome do host para o proxy sem destino, onde suas políticas são executadas.
- O proxy retorna um veredicto ao gateway. A Apigee nunca encaminha o tráfego do agente. O proxy não tem um destino.
- Se o veredicto permitir a solicitação, o gateway vai enviar a solicitação original para o destino.
Os AuthzPolicy e AuthzExtension na Figura 1 são configuração, não tráfego: a política anexa a extensão ao gateway, e a extensão nomeia o proxy do processador de extensão que é executado. Ambos são criados em
Configurar a extensão de autorização.
Para conectar o processador de extensão a um balanceador de carga, consulte Começar a usar o processador de extensão da Apigee.
As seções a seguir orientam você nas etapas:
- Configure o processador de extensões da Apigee.
- Conecte o Gateway de Agente à Apigee.
- Configure a extensão de autorização.
- Verifique a conexão.
Antes de começar
Antes de começar, faça o seguinte:
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
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.Instale a CLI do Google Cloud.
Depois de instalar a Google Cloud CLI, execute o comando
gcloud components updatepara receber os componentes mais recentes da gcloud.Provisione uma instância do Apigee, caso ainda não tenha feito isso.
No console do Google Cloud , acesse a página Instâncias da Apigee.
Implante um Gateway de Agente na mesma região da sua instância do Apigee, com
governedAccessPathdefinido comoAGENT_TO_ANYWHEREpara que o gateway governe o tráfego de saída do agente. Para mais informações, consulte Configurar o Gateway de Agente.Você vai atualizar a configuração de rede desse gateway mais tarde, em Atualizar o Gateway de Agente, depois que a zona de DNS existir.
Confirme se você tem uma VPC e uma sub-rede que podem ser usadas pelo Gateway de Agente e pelo endpoint do Private Service Connect.
Funções exigidas
Para receber as permissões necessárias para conectar o processador de extensão do Apigee a um gateway de agente, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Criar e gerenciar recursos da Apigee:
Administrador da organização da Apigee (
roles/apigee.admin) na organização -
Criar e gerenciar extensões de serviço:
Administrador de Service Extensions (
roles/networkservices.serviceExtensionsAdmin) na organização -
Criar e gerenciar políticas de autorização:
Administrador de segurança de rede (
roles/networksecurity.admin) na organização -
Criar e gerenciar recursos de rede, incluindo endpoints do Private Service Connect e DNS:
Administrador de rede do Compute (
roles/compute.networkAdmin) na organização
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Defina as variáveis de ambiente
Defina as variáveis de ambiente a seguir para identificar os recursos criados em Antes de começar. Cada seção posterior nesta página define as variáveis adicionais necessárias no ponto em que você cria o recurso nomeado.
export PROJECT_ID=PROJECT_IDexport ORG_NAME=$PROJECT_IDexport REGION=REGIONexport INSTANCE=INSTANCEexport VPC_NETWORK_NAME=VPC_NETWORK_NAMEexport SUBNET=SUBNETexport GATEWAY=GATEWAY
Em que:
PROJECT_IDé o ID do projeto que contém sua instância do Apigee.REGIONé a região Google Cloud da sua instância da Apigee.INSTANCEé o nome da instância da Apigee.VPC_NETWORK_NAMEeSUBNETsão a rede VPC e a sub-rede usadas pelo Gateway de Agente e pelo endpoint do Private Service Connect.GATEWAYé o nome do Gateway de Agente que você implantou.
Para confirmar se as variáveis de ambiente estão definidas corretamente, execute o comando a seguir e analise a saída:
echo $PROJECT_ID $ORG_NAME $REGION $INSTANCE $VPC_NETWORK_NAME $SUBNET $GATEWAY
Escolha o nome do host da frase de destaque
O gateway acessa a Apigee em um nome de host particular escolhido por você. Você escolhe agora, antes de criar qualquer coisa, porque o primeiro recurso criado, o grupo de ambiente do Apigee, usa esse nome como nome do host. A zona de DNS que o resolve não é criada até Criar uma zona DNS particular.
export DNS_DOMAIN=DNS_DOMAINexport EXTPROC_HOST=apigee-extproc.$DNS_DOMAIN
Em que DNS_DOMAIN é um domínio DNS particular que não precisa ser resolvido na Internet pública, escrito sem um ponto final, por exemplo, internal.example.com. Isso resulta em um EXTPROC_HOST de apigee-extproc.internal.example.com. Você pode usar um rótulo diferente de
apigee-extproc, desde que o nome do host permaneça em
DNS_DOMAIN.
Configurar um token de autenticação
export TOKEN=$(gcloud auth print-access-token)echo $TOKEN
Configurar o processador de extensão da Apigee
Nomeie os recursos da Apigee que esta seção cria:
export EXTPROC_ENV=EXTPROC_ENVexport EXTPROC_ENVGROUP=EXTPROC_ENVGROUPexport PROXY_NAME=PROXY_NAME
Em que:
EXTPROC_ENVeEXTPROC_ENVGROUPsão nomes escolhidos para um ambiente e um grupo de ambientes da Apigee dedicados ao processador de extensão, por exemplo,extproc-enveextproc-envgroup. Cada nome precisa ter de 2 a 32 caracteres de letras minúsculas, números ou hifens, começar com uma letra e não terminar com um hífen. O nome do ambiente precisa ser diferente de todos os outros nomes de ambiente na sua organização.PROXY_NAMEé um nome que você escolhe para o proxy do processador de extensão, por exemplo,extproc-authz.
A parte da configuração do Apigee é a mesma de um balanceador de carga. Siga Configurar o processador de extensões da Apigee no início rápido para:
- Crie um ambiente da Apigee com a propriedade
apigee-service-extension-enableddefinida comotrue, anexe-o à sua instância e crie um grupo de ambientes cujo nome de host seja$EXTPROC_HOST. - Crie e implante um proxy de processador de extensão sem destino nesse ambiente.
Em seguida, liste as implantações no ambiente:
curl -s -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments/$EXTPROC_ENV/deployments"
O ambiente pode ter mais de um proxy implantado. Portanto, na resposta, encontre a entrada em que apiProxy é $PROXY_NAME e anote o revision.
Você pode revisar o proxy no console Google Cloud :
Defina a seguinte variável para essa revisão, que você precisa em Verificar a conexão:
export REVISION=REVISION
Conectar o Gateway de Agente ao Apigee
O gateway alcança o Apigee por um
endpoint do Private Service Connect na sua
VPC, que ele encontra resolvendo $EXTPROC_HOST em uma zona de DNS particular.
Encontrar o anexo de serviço
Encontre o anexo de serviço da sua instância da Apigee:
curl -s -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances"
Defina a seguinte variável como o valor serviceAttachment da instância na sua região:
export SERVICE_ATTACHMENT=SERVICE_ATTACHMENT
Criar um anexo de rede
O Gateway de Agente sai para sua VPC por um anexo de rede. Escolha um nome para ele, por exemplo, agent-gateway-attachment, e crie:
export NETWORK_ATTACHMENT=NETWORK_ATTACHMENTgcloud compute network-attachments create $NETWORK_ATTACHMENT \ --region=$REGION --subnets=$SUBNET --connection-preference=ACCEPT_AUTOMATIC
Criar o endpoint do Private Service Connect
Reserve um endereço IP interno e crie o endpoint do 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
No console do Google Cloud , acesse a página Private Service Connect .
Acessar a página "Private Service Connect"
Confirme se o endpoint informa pscConnectionStatus: ACCEPTED e defina a seguinte variável como o endereço IP dela:
gcloud compute forwarding-rules describe apigee-extproc-psc-endpoint \ --region=$REGION --format="value(pscConnectionStatus,IPAddress)"export PSC_IP=PSC_IP
Se o status for PENDING, seu projeto não estará no consumerAcceptList da instância do Apigee, e a conexão não poderá ser aceita.
Criar uma zona de DNS particular
Crie uma zona de DNS particular para $DNS_DOMAIN e um registro A que
resolva $EXTPROC_HOST para o endereço IP do endpoint:
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
Atualizar o Gateway de Agente
Atualize o Gateway de Agente em Antes de começar para que ele saia pelo anexo de rede e possa resolver a zona criada.
Exporte a configuração atual:
gcloud network-services agent-gateways export $GATEWAY \ --location=$REGION --destination=agent-gateway.yaml
Em
agent-gateway.yaml, adicione o seguinte bloconetworkConfig, substituindo cada marcador de posição pelo valor da variável de ambiente correspondente. O arquivo é editado diretamente, então as variáveis de shell não são substituídas aqui: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
Deixe o restante do arquivo, incluindo
googleManaged.governedAccessPath,protocolseregistries, como exportado.Importe a configuração editada:
gcloud network-services agent-gateways import $GATEWAY \ --location=$REGION --source=agent-gateway.yaml
Para ver o conjunto completo de campos do Gateway de Agente, consulte Configurar o Gateway de Agente.
Configurar a extensão de autorização
Dois recursos conectam o gateway ao proxy do processador de extensão: uma extensão de autorização que aponta para a Apigee e uma política de autorização que anexa a extensão ao gateway.
Criar a extensão de autorização
Escolha um nome para a extensão de autorização, por exemplo, apigee-authz-extension.
Os campos metadata selecionam qual proxy do Apigee é executado e se os corpos das mensagens são enviados a ele:
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
Em que:
- O
apigee-extension-processorseleciona o proxy do processador de extensão que processa o tráfego. apigee-request-bodyeapigee-response-bodydisponibilizam os corpos de solicitação e resposta no proxy comorequest.contenteresponse.content. Sem elas, as políticas que inspecionam o payload não encontram nada.
Criar a política de autorização
Escolha um nome para a política de autorização, por exemplo, apigee-content-authz-policy. A política anexa a extensão ao gateway e determina qual tráfego é enviado para 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
Use policyProfile: CONTENT_AUTHZ para que os corpos das mensagens sejam inspecionados.
Uma política REQUEST_AUTHZ avalia apenas os cabeçalhos de solicitação.
Verifique a conexão
Para gerar tráfego, você precisa de um agente cuja saída seja regida por esse gateway. Um agente é
vinculado a um gateway quando é criado, definindo a configuração do Gateway de Agente
como $GATEWAY. Não é possível exercer a conexão com uma solicitação HTTP
direta ao gateway. Para mais informações, consulte
Configurar
o Gateway de Agente.
Inicie uma sessão de depuração do Apigee no proxy do processador de extensões e envie uma solicitação pelo 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*\")"}'
Nas transações capturadas, confirme se:
- o URL da solicitação é o endereço chamado pelo agente, como o endpoint do modelo ou um host de ferramenta, em vez de um caminho base da Apigee;
request.contenteresponse.contentsão preenchidos, o que confirma que os metadados do corpo na extensão de autorização estão funcionando.
Se nenhuma transação aparecer, verifique se o nome do host do grupo de ambiente, o registro DNS e os campos authority e service da extensão são todos $EXTPROC_HOST, se o endpoint do Private Service Connect informa ACCEPTED e se o governedAccessPath do gateway é AGENT_TO_ANYWHERE.
A seguir
- Leia a visão geral do processador de extensões da Apigee.
- Comece a usar o processador de extensão da Apigee em um balanceador de carga.
- Configure as políticas do Apigee com o processador de extensões, que aborda a configuração de políticas específica para o processador de extensões.