En esta página, se describe cómo enrutar el tráfico de Agent Runtime a través de Agent Gateway. Agent Gateway es un componente central de redes y seguridad del ecosistema de Agent Platform de Gemini Enterprise. Proporciona conectividad segura y administrada para todas las interacciones de agentes, ya sea que ocurran entre usuarios y agentes, agentes y herramientas, o entre los propios agentes.
Antes de comenzar
Asegúrate de estar familiarizado con la implementación de agentes en Agent Runtime.
Obtén información sobre Agent Gateway. Puedes usar Agent Gateway en el modo de agente a cualquier lugar (salida) para proteger y controlar todas las comunicaciones salientes con el tráfico saliente a herramientas, modelos, APIs y otros agentes. Usas la puerta de enlace en el modo de cliente a agente (entrada) para controlar qué clientes pueden acceder a tus agentes. La puerta de enlace te permite elegir qué políticas de IAP y plantillas de Model Armor se deben aplicar a estas interacciones.
Crea un proyecto de prueba dedicado para probar este flujo de trabajo. Evita usar proyectos que también estén destinados a otras cargas de trabajo críticas.
Limitaciones
- Para un proyecto y una región determinados, solo puede haber una instancia de agente a cualquier lugar (salida) y una instancia de cliente a agente (entrada) de Agent Gateway. Todos los agentes de Agent Runtime dentro de ese mismo proyecto y región que estén configurados para usar Agent Gateway deben usar estas instancias de puerta de enlace específicas.
- El servicio de detección de amenazas de Agent Engine de Security Command Center no está disponible cuando Agent Gateway está habilitado para un agente.
- No puedes desvincular un agente de entorno de ejecución de un recurso de Agent Gateway. Por este motivo, asegúrate de usar un proyecto de prueba dedicado.
Permisos necesarios
Debes otorgar al agente de servicio de Reasoning Engine el permiso para usar el recurso de Agent Gateway que crearás.
Si aún no existe, crea la cuenta de servicio. Por lo general, la cuenta de servicio de Reasoning Engine se crea automáticamente cuando usas Reasoning Engine por primera vez.
gcloud beta services identity create --service=aiplatform.googleapis.com --project=PROJECT_ID
Reemplaza
PROJECT_IDpor el ID del proyecto.Para usar la puerta de enlace, necesitas los siguientes permisos:
roles/networkservices.agentGateways.getroles/networkservices.agentGateways.useroles/networkservices.operations.get
Crea un rol personalizado con todos estos permisos y, luego, otórgale el rol a la cuenta de servicio de Reasoning Engine.
gcloud alpha iam roles create AGENT_GATEWAY_ROLE_NAME \ --project=AGENT_PROJECT_ID \ --title="Custom Agent Gateway access role" \ --description="Custom role for Agent Gateway" \ --permissions="networkservices.operations.get,networkservices.agentGateways.get,networkservices.agentGateways.use"
Reemplaza lo siguiente:
AGENT_GATEWAY_ROLE_NAME: El nombre del rol personalizado.AGENT_PROJECT_ID: El ID del proyecto en el que deseas implementar el agente.
Asigna el rol a la cuenta de servicio de Agent Runtime.
gcloud alpha projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com" \ --role="projects/PROJECT_ID/roles/AGENT_GATEWAY_ROLE_NAME"Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoPROJECT_NUMBER: El número de tu proyectoAGENT_GATEWAY_ROLE_NAME: El nombre del rol personalizado que creaste.
Además, si deseas usar plantillas de Model Armor para la autorización y estas plantillas están en un proyecto diferente al agente (y la puerta de enlace), debes otorgar los siguientes permisos al agente de servicio de Reasoning Engine y a la cuenta de servicio de Agent Gateway:
gcloud alpha projects add-iam-policy-binding AGENT_PROJECT_ID \ --member=serviceAccount:service-AGENT_PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com \ --role=roles/modelarmor.calloutUser gcloud alpha projects add-iam-policy-binding MODEL_ARMOR_PROJECT_ID \ --member=serviceAccount:service-AGENT_PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com \ --role=roles/modelarmor.user gcloud alpha projects add-iam-policy-binding AGENT_PROJECT_ID \ --member=serviceAccount:service-AGENT_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/modelarmor.calloutUser gcloud alpha projects add-iam-policy-binding MODEL_ARMOR_PROJECT_ID \ --member=serviceAccount:service-AGENT_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com \ --role=roles/modelarmor.userReemplaza lo siguiente:
AGENT_PROJECT_ID: El ID del proyecto en el que deseas implementar el agente.AGENT_PROJECT_NUMBER: El número del proyecto en el que deseas implementar el agente.MODEL_ARMOR_PROJECT_ID: El ID del proyecto en el que se crea Model Armor.
Enruta el tráfico de Agent Runtime a través de Agent Gateway
Para enrutar el tráfico de Agent Runtime a través de Agent Gateway, sigue estos pasos:
Crea un recurso de Agent Gateway y adjunta las políticas de autorización según sea necesario. Puedes crear una puerta de enlace en el modo de agente a cualquier lugar (salida) o de cliente a agente (entrada). Ten en cuenta que el agente y la puerta de enlace deben crearse en el mismo proyecto y región. Para obtener instrucciones, consulta Configura Agent Gateway.
Asegúrate de que la puerta de enlace esté configurada para satisfacer las necesidades de tu implementación. Por ejemplo, si tu agente requiere acceso a LLM, configura la puerta de enlace para permitir este acceso y evitar posibles fallas en la implementación de Agent Runtime.
Especifica el recurso de puerta de enlace mientras implementas tu agente. Por ejemplo, para implementar el agente en Agent Runtime, usa
client.agent_engines.createpara pasar el objetolocal_agentjunto con cualquier configuración opcional.remote_agent = client.agent_engines.create( agent=local_agent, config={ "agent_gateway_config": { "agent_to_anywhere_config": {"agent_gateway": AGENT_GATEWAY_TO_ANYWHERE_RESOURCE_ID}, # "client_to_agent_config": {"agent_gateway": AGENT_GATEWAY_CLIENT_TO_AGENT_RESOURCE_ID} }, "identity_type": types.IdentityType.AGENT_IDENTITY, # Other optional configuration ... # "requirements": requirements, # "gcs_dir_name": gcs_dir_name, }, )
Reemplaza
AGENT_GATEWAY_TO_ANYWHERE_RESOURCE_IDpor la ruta de acceso completa de Agent Gateway que creaste en el modo de agente a cualquier lugar (salida). Por ejemplo,projects/PROJECT_NAME/locations/REGION/agentGateways/AGENT_GATEWAY_NAME.Si creaste una puerta de enlace en el modo de cliente a agente (entrada), usa el campo
client_to_agent_configy reemplazaAGENT_GATEWAY_CLIENT_TO_AGENT_RESOURCE_IDpor la ruta de acceso completa de Agent Gateway que creaste para la entrada.Registra tu agente con la instancia de Agent Registry en el mismo proyecto y región que el agente y la puerta de enlace. Para obtener más información, consulta Registra un agente.
Restringe Agent Runtime a las puertas de enlace de agente aprobadas
Puedes crear restricciones personalizadas para las políticas de la organización para definir el conjunto de recursos de Agent Gateway aptos que se pueden usar durante la implementación de agentes.
Crea restricciones personalizadas para las políticas de la organización
En este ejemplo, se crean restricciones personalizadas que solo permiten el tráfico hacia y desde una lista de puertas de enlace aprobadas previamente.
Del agente a cualquier lugar
Para definir una restricción personalizada para el modo de agente a cualquier lugar (salida), crea un archivo llamado
constraint-agent-gateway-egress.yaml.En el siguiente ejemplo, el campo
conditionespecifica que la operación solo se permite si se especifica un recurso de Agent Gateway (el campo está presente y no está vacío) y si la puerta de enlace especificada está en la lista aprobada previamente.name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistedEgressAgentGatewaysForAgentEngine resource_types: - aiplatform.googleapis.com/ReasoningEngine condition: >- has(resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway) && resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway != '' && (resource.spec.deploymentSpec.agentGatewayConfig.agentToAnywhereConfig.agentGateway in [ 'projects/PROJECT_ID_1/locations/REGION/agentGateways/AGENT_GATEWAY_NAME_1', 'projects/PROJECT_ID_2/locations/REGION/agentGateways/AGENT_GATEWAY_NAME_2', ]) method_types: - CREATE - UPDATE action_type: ALLOW display_name: Restrict Reasoning Engine Egress to Approved Agent Gateways description: Reasoning Engines can only be bound to a pre-approved list of Agent Gateway instances. Binding to any other gateway is denied.Reemplaza lo siguiente:
- ORGANIZATION_ID: Es el ID de tu organización.
- PROJECT_ID: Es el ID del proyecto.
- REGION: Es la región en la que se creó la puerta de enlace.
- AGENT_GATEWAY_NAME: Es el nombre de tu puerta de enlace.
Aplica la restricción personalizada.
gcloud alpha org-policies set-custom-constraint EGRESS_CONSTRAINT_PATH
Reemplaza EGRESS_CONSTRAINT_PATH por la ruta de acceso completa al archivo de restricción personalizada que creaste en el paso anterior.
Crea la política de la organización para aplicar la restricción. Para definir la política de la organización, crea un archivo de política en formato YAML llamado
policy-agent-gateway-egress.yaml. En este ejemplo, aplicamos esta restricción a nivel del proyecto, pero también puedes configurarla a nivel de la organización o de la carpeta.name: projects/PROJECT_ID/policies/custom.allowlistedEgressAgentGatewaysForAgentEngine spec: rules: - enforce: trueReemplaza
PROJECT_IDpor el ID del proyecto.Aplica la política de la organización.
gcloud alpha org-policies set-policy EGRESS_POLICY_PATH
Reemplaza EGRESS_POLICY_PATH por la ruta de acceso completa al archivo YAML de la política de la organización que creaste en el paso anterior. La política tarda hasta 15 minutos en aplicarse.
De cliente a agente
Para definir una restricción personalizada para el modo de cliente a agente (entrada), crea un archivo llamado
constraint-agent-gateway-ingress.yaml.En el siguiente ejemplo, el campo
conditionespecifica que la operación solo se permite si se especifica un recurso de Agent Gateway (el campo está presente y no está vacío) y si la puerta de enlace especificada está en la lista aprobada previamente.name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistedIngressAgentGatewaysForAgentEngine resource_types: - aiplatform.googleapis.com/ReasoningEngine condition: >- has(resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway) && resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway != '' && (resource.spec.deploymentSpec.agentGatewayConfig.clientToAgentConfig.agentGateway in [ 'projects/PROJECT_ID_1/locations/REGION/agentGateways/AGENT_GATEWAY_NAME_1', 'projects/PROJECT_ID_2/locations/REGION/agentGateways/AGENT_GATEWAY_NAME_2', ]) method_types: - CREATE - UPDATE action_type: ALLOW display_name: Restrict Reasoning Engine Ingress to Approved Agent Gateways description: Reasoning Engines can only be bound to a pre-approved list of Agent Gateway instances. Binding to any other gateway is denied.Reemplaza lo siguiente:
- ORGANIZATION_ID: Es el ID de tu organización.
- PROJECT_ID: Es el ID del proyecto.
- REGION: Es la región en la que se creó la puerta de enlace.
- AGENT_GATEWAY_NAME: Es el nombre de tu puerta de enlace.
Aplica la restricción personalizada.
gcloud alpha org-policies set-custom-constraint INGRESS_CONSTRAINT_PATH
Reemplaza INGRESS_CONSTRAINT_PATH por la ruta de acceso completa al archivo de restricción personalizada que creaste en el paso anterior.
Crea la política de la organización para aplicar la restricción. Para definir la política de la organización, crea un archivo de política en formato YAML llamado
policy-agent-gateway-ingress.yaml. En este ejemplo, aplicamos esta restricción a nivel del proyecto, pero también puedes configurarla a nivel de la organización o de la carpeta.name: projects/PROJECT_ID/policies/custom.allowlistedIngressAgentGatewaysForAgentEngine spec: rules: - enforce: trueReemplaza
PROJECT_IDpor el ID del proyecto.Aplica la política de la organización.
gcloud alpha org-policies set-policy INGRESS_POLICY_PATH
Reemplaza INGRESS_POLICY_PATH por la ruta de acceso completa al archivo YAML de la política de la organización que creaste en el paso anterior. La política tarda hasta 15 minutos en aplicarse.
Para obtener más información sobre cómo usar restricciones personalizadas para las políticas de la organización, consulta Crea restricciones personalizadas.