Configura las políticas de administración semántica y el Policy Engine
En esta sección, se aborda la transición de la preparación de la infraestructura a la creación de políticas.
Requisitos previos
Antes de configurar las políticas de gobernanza semánticas, completa los siguientes pasos.
Habilita las APIs obligatorias
Antes de comenzar, habilita las APIs necesarias para la política de administración semántica y sus componentes de red:
gcloud services enable \
aiplatform.googleapis.com \
agentregistry.googleapis.com \
networkservices.googleapis.com \
networksecurity.googleapis.com \
compute.googleapis.com \
dns.googleapis.com \
--project=PROJECT_ID
Otorga permisos de IAM a la cuenta de servicio de Vertex AI (solo vinculación administrada por Google)
Si usas la opción de vinculación administrada por Google durante
el aprovisionamiento, otorga a la cuenta de servicio de Vertex AI (P4SA) los roles que necesita para
crear el extremo de Private Service Connect (PSC)
(roles/compute.networkAdmin) y el conjunto de registros DNS (roles/dns.admin) en tu
proyecto. Si usas la opción Vinculación autoadministrada, puedes
omitir este paso, ya que tú mismo creas esos recursos de red.
Crea la identidad de servicio (idempotente) y otorga los roles:
export PROJECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud beta services identity create \
--service=aiplatform.googleapis.com \
--project=PROJECT_ID
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/compute.networkAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/dns.admin"
Los comandos de eliminación correspondientes se encuentran en Quita las vinculaciones de IAM en la sección de limpieza.
Requisitos de elegibilidad de los agentes
Para que aparezca en el selector de agentes de una política de administración semántica en la
consola deCloud de Confiance , el motor de razonamiento de un agente debe haberse implementado con
ambos identity_type=AGENT_IDENTITY y agent_gateway_config configurados. Si falta alguno de ellos, la consola de Cloud de Confiance filtra el agente fuera del selector.
En su lugar, la API y gcloud devuelven un error explícito.
Para implementar un agente que cumpla con estos requisitos, sigue las instrucciones que se indican en Enruta el tráfico de Agent Runtime a través de Agent Gateway. Ambos campos son inmutables en un motor de razonamiento existente, por lo que un agente implementado sin ellos debe volver a implementarse; la aplicación de parches no funcionará.
Para verificar que un agente existente sea apto, confirma que el spec.effectiveIdentity de su motor de razonamiento
comience con agents.global.:
gcloud ai reasoning-engines describe REASONING_ENGINE_ID \
--region=LOCATION \
--project=PROJECT_ID \
--format='value(spec.effectiveIdentity)' \
| grep -q '^agents.global.' \
&& echo "Eligible" || echo "Not eligible"
Ubicaciones admitidas
El motor de políticas de administración semántica y las políticas de administración semántica son compatibles con las siguientes ubicaciones regionales:
| Datos geográficos | Regiones disponibles |
|---|---|
| América | us-central1, us-east1, us-east4, us-west1 |
| Europa | europe-southwest1, europe-west1, europe-west4, europe-west8 |
Aprovisionamiento y habilitación
Habilitar el motor de políticas de administración semántica. Esto aprovisiona el entorno de ejecución necesario. Por lo general, el aprovisionamiento tarda entre 2 y 3 minutos en completarse. Sin embargo, cuando la demanda es alta o el grupo de preparación se está reabasteciendo, el aprovisionamiento puede tardar hasta 20 minutos. Elige una de las siguientes opciones para el aprovisionamiento:
- Vinculación administrada por Google: Google crea los recursos de red subyacentes en tu proyecto de Cloud de Confiance by S3NS y administra su ciclo de vida automáticamente.
- Vinculación autoadministrada: Creas y administras los recursos de red necesarios (
network,subnetworkydnsZoneName) directamente en tu proyecto de Cloud de Confiance by S3NS .
Después de completar el aprovisionamiento, debes conectar el motor de políticas a Agent Gateway.
Vinculación administrada por Google
REST
curl -X PATCH \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine?updateMask=gatewayConfigs" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{ "gatewayConfigs": {
"GATEWAY_NAME": {
"network": "NETWORK_NAME",
"subnetwork": "SUBNETWORK_NAME",
"dnsZoneName": "DNS_NAME" }
}
}'
gcloud
gcloud beta ai semantic-governance-policy-engine update \
--location=LOCATION \
--project=PROJECT_ID \
--gateway-config="name='GATEWAY_NAME',network=NETWORK_NAME,subnetwork=SUBNETWORK_NAME,dns-zone-name=DNS_NAME"
Reemplaza lo siguiente:
GATEWAY_NAMEpor un nombre de puerta de enlace único.DNS_NAMEpor el nombre de la zona del DNS privada que se usará.PROJECT_IDpor el ID del proyecto de Cloud de Confiance by S3NS (projects/PROJECT_ID/global/networks/default). Si usas una red y una subred personalizadas, reemplaza las rutas de recursos completas denetworkysubnetworksegún corresponda.
Recupera el nombre de host de DNS generado automáticamente
Cuando aprovisionas el motor con la vinculación administrada por Google, Google crea automáticamente
un extremo de Private Service Connect (PSC) y registra un registro A de DNS
en tu zona del DNS privada. El FQDN de este registro funciona como el
SGP_DNS_HOSTNAME y se propaga en el campo de solo salida dnsRecord de la configuración de tu
puerta de enlace.
Para recuperar el nombre de host de DNS generado automáticamente, sigue estos pasos:
gcloud
Ejecuta el siguiente comando para describir la configuración del motor de políticas:
gcloud beta ai semantic-governance-policy-engine describe \
--location=LOCATION \
--project=PROJECT_ID
REST
Envía una solicitud GET para recuperar el recurso del motor:
curl "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
En la respuesta, busca el campo dnsRecord en
gatewayConfigs.GATEWAY_NAME.dnsRecord. Guarda este FQDN, ya que lo necesitarás como
SGP_DNS_HOSTNAME cuando conectes el motor de políticas a
Agent Gateway.
Vinculación autoadministrada
REST
curl -X PATCH "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"name": "projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine"
}'
gcloud
gcloud beta ai semantic-governance-policy-engine update \
--location=LOCATION \
--project=PROJECT_ID
Este comando devuelve una operación de larga duración. Puedes consultar el estado de la operación
reemplazando OPERATION por
el valor name de la respuesta:
curl "https://LOCATION-aiplatform.googleapis.com/v1beta1/OPERATION" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
Como alternativa, verifica el estado general del motor hasta que el campo state devuelva
ACTIVE:
curl "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
Configura la red (solo para la opción autoadministrada)
Después de aprovisionar el motor de políticas, configura los componentes de red necesarios para que Agent Gateway se comunique con el motor de políticas.
Mientras que Google crea automáticamente el extremo de PSC en un proyecto de usuario administrado por Google para la ruta administrada por Google, para la ruta autoadministrada, debes crear y administrar manualmente el extremo de PSC en tu propio proyecto de Cloud de Confiance by S3NS .
1. Aprovisiona la red y la subred de VPC
En este paso, crearás una red de VPC, una subred y una subred de solo proxy para
el tráfico de agentes. Los rangos de IP que se muestran (10.11.12.0/24 y 10.11.13.0/24) son
ejemplos. Puedes usar cualquier rango privado RFC 1918 que se ajuste al diseño de tu red.
Crea la red de VPC:
gcloud compute networks create NETWORK_NAME \ --subnet-mode=auto \ --project=PROJECT_IDReemplaza
NETWORK_NAMEpor el nombre de tu red de VPC (por ejemplo,agent-network).Crea la subred:
gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK_NAME \ --region=LOCATION \ --range=10.11.12.0/24 \ --project=PROJECT_IDReemplaza
SUBNET_NAMEpor el nombre de la subred (por ejemplo,agent-subnet).Crea la subred de solo proxy (obligatoria para los balanceadores de cargas administrados):
gcloud compute networks subnets create PROXY_SUBNET_NAME \ --network=NETWORK_NAME \ --region=LOCATION \ --range=10.11.13.0/24 \ --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE \ --project=PROJECT_IDReemplaza
PROXY_SUBNET_NAMEpor el nombre de tu subred de solo proxy (por ejemplo,agent-proxy-subnet).
2. Aprovisiona una zona del DNS privada
Crea una zona del DNS privada para permitir que Agent Gateway resuelva el nombre de host del motor de políticas:
gcloud dns managed-zones create DNS_ZONE_NAME \
--description="Private zone for my internal agentic VPC services" \
--dns-name="internal.example.com." \
--visibility=private \
--networks=NETWORK_NAME \
--project=PROJECT_ID
Replace the following:
DNS_ZONE_NAME: Es el nombre de tu zona del DNS (por ejemplo,my-private-zone).internal.example.com.: Es el nombre de DNS de tu zona, incluido el punto final.
3. Crea un adjunto de red
Crea un adjunto de red para permitir que Agent Gateway se conecte a
los recursos de tu VPC. La preferencia de conexión debe establecerse en
ACCEPT_AUTOMATIC.
gcloud compute network-attachments create NETWORK_ATTACHMENT_NAME \
--region=LOCATION \
--subnets=SUBNET_NAME \
--connection-preference=ACCEPT_AUTOMATIC \
--project=PROJECT_ID
Replace the following:
NETWORK_ATTACHMENT_NAME: Es el nombre del adjunto de red (por ejemplo,sgp-nw-attachment).SUBNET_NAME: Es la subred que creaste en el paso 1.
4. Crea una IP estática, un extremo de PSC y un registro DNS
Reserva una dirección IP estática, crea un extremo de Private Service Connect (PSC) que apunte al adjunto de servicio del motor de políticas y crea un registro DNS para que se pueda acceder a él.
# Reserve a static IP address
gcloud compute addresses create STATIC_IP_NAME \
--region=LOCATION \
--subnet=SUBNET_NAME \
--purpose=GCE_ENDPOINT \
--project=PROJECT_ID
# Capture the reserved IP address
IP=$(gcloud compute addresses describe STATIC_IP_NAME \
--region=LOCATION \
--project=PROJECT_ID \
--format=value(address))
# Create the PSC endpoint
gcloud compute forwarding-rules create PSC_ENDPOINT_NAME \
--region=LOCATION \
--network=NETWORK_NAME \
--address=STATIC_IP_NAME \
--target-service-attachment=PSC_SERVICE_ATTACHMENT \
--project=PROJECT_ID
# Create a DNS A record for the policy engine
gcloud dns record-sets create SGP_DNS_HOSTNAME \
--zone=DNS_ZONE_NAME \
--type=A \
--ttl=300 \
--rrdatas=$IP \
--project=PROJECT_ID
Reemplaza lo siguiente:
STATIC_IP_NAME: el nombre de tu dirección IP reservada (por ejemplo,sgp-psc-ip).PSC_ENDPOINT_NAME: Es el nombre de tu extremo de PSC (por ejemplo,sgp-psc-endpoint).PSC_SERVICE_ATTACHMENT: Es el valorpscServiceAttachmentguardado de la respuesta de aprovisionamiento.SGP_DNS_HOSTNAME: un nombre de host en tu zona del DNS privada, con el formatoLOCATION.DNS_ZONE_SUFFIX, en el queDNS_ZONE_SUFFIXes el nombre de DNS que especificaste cuando creaste tu zona del DNS privada. Por ejemplo, si tu ubicación esus-west1y el sufijo de tu zona del DNS esinternal.example.com, usaus-west1.internal.example.com.
5. Configura la conectividad de VPC en Agent Gateway
Después de crear los recursos de red, debes registrar el adjunto de red y el intercambio de tráfico de DNS en tu Agent Gateway para que pueda comunicarse con el Policy Engine a través de la red privada.
Para obtener instrucciones detalladas, consulta Configura la conectividad de VPC en la guía de configuración de Agent Gateway. Como mínimo, debes hacer lo siguiente:
- Registra el adjunto de red creado en el paso 3 con la configuración de salida de Agent Gateway.
- Registra el intercambio de tráfico de DNS para que la puerta de enlace pueda resolver el nombre de host de DNS privado creado en el paso 4.
Conecta el motor de políticas a Agent Gateway
Después de configurar la red, debes crear una extensión de autorización y una política de autorización para que Agent Gateway pueda reenviar el tráfico al Policy Engine para su evaluación.
Crea la extensión de autorización: Crea una extensión de autorización que apunte al nombre de host de DNS del Policy Engine. Usa el mismo
SGP_DNS_HOSTNAMEpara el que creaste un registro DNS en Configura la red (paso 4). Este es el mecanismo por el que Agent Gateway envía tráfico al Policy Engine para su evaluación.gcloud
Define la configuración de la extensión en un archivo YAML (
authz-ext.yaml) y, luego, impórtala:name: AUTHZ_EXTENSION_NAME service: SGP_DNS_HOSTNAME authority: SGP_DNS_HOSTNAME failOpen: false loadBalancingScheme: LOAD_BALANCING_SCHEME_UNSPECIFIEDgcloud service-extensions authz-extensions import AUTHZ_EXTENSION_NAME \ --source=authz-ext.yaml \ --location=LOCATION \ --project=PROJECT_IDREST
curl -X POST \ "https://networkservices.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzExtensions?authzExtensionId=AUTHZ_EXTENSION_NAME" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "service": "SGP_DNS_HOSTNAME", "authority": "SGP_DNS_HOSTNAME", "failOpen": false, "loadBalancingScheme": "LOAD_BALANCING_SCHEME_UNSPECIFIED" }'Reemplaza
SGP_DNS_HOSTNAMEpor el nombre de host de DNS para el que creaste un registro A en Configura la red (paso 4).Este comando devuelve una operación de larga duración. Espera a que se complete la operación antes de continuar.
Crea la política de autorización: Crea una política de autorización que vincule la extensión a tu Agent Gateway. Esto le indica a Agent Gateway que envíe tráfico a través del Policy Engine para su evaluación.
gcloud
Define la configuración de la política de autorización en un archivo YAML (
authz-policy.yaml) y, luego, impórtala:name: AUTHZ_POLICY_NAME target: loadBalancingScheme: LOAD_BALANCING_SCHEME_UNSPECIFIED resources: - projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME httpRules: - to: operations: - paths: - prefix: / when: "!request.headers['content-type'].startsWith('application/grpc') && (request.path.endsWith(':generateContent') || request.path.endsWith(':streamGenerateContent'))" action: CUSTOM policyProfile: CONTENT_AUTHZ customProvider: authzExtension: resources: - projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAMEgcloud network-security authz-policies import AUTHZ_POLICY_NAME \ --source=authz-policy.yaml \ --location=LOCATION \ --project=PROJECT_IDREST
curl -X POST \ "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies?authzPolicyId=AUTHZ_POLICY_NAME" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "target": { "loadBalancingScheme": "LOAD_BALANCING_SCHEME_UNSPECIFIED", "resources": ["projects/PROJECT_ID/locations/LOCATION/agentGateways/AGENT_GATEWAY_NAME"] }, "httpRules": [{ "to": { "operations": [{"paths": [{"prefix": "/"}]}] }, "when": "!request.headers['"'"'content-type'"'"'].startsWith('"'"'application/grpc'"'"') && (request.path.endsWith('"'"':generateContent'"'"') || request.path.endsWith('"'"':streamGenerateContent'"'"'))" }], "action": "CUSTOM", "policyProfile": "CONTENT_AUTHZ", "customProvider": { "authzExtension": { "resources": ["projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAME"] } } }'Este comando devuelve una operación de larga duración. Espera a que se complete la operación antes de continuar.
Crear una política
Una vez que el motor de políticas esté activo, podrás definir las protecciones técnicas y de comportamiento para tus agentes.
- Define el alcance: Determina si la política se aplica a todas las acciones que realiza un agente o si se orienta a una herramienta específica.
- Crea las restricciones: Proporciona tus reglas de negocio en lenguaje natural.
Console
- En la consola de Cloud de Confiance , navega a la página Políticas de gobernanza semánticas.
- Haz clic en + Agregar política.
- En el panel lateral Agregar política, configura lo
siguiente:
- Nombre: Ingresa un ID único para la política. El nombre solo puede contener letras minúsculas, números y guiones.
- Descripción: (Opcional) Ingresa una descripción breve del propósito de la política.
- Selección de agentes: Selecciona el agente específico o todos los agentes a los que se aplica esta regla. Si el selector está vacío o falta un agente que esperas, consulta los requisitos de elegibilidad de los agentes.
- Destinos de acceso:
- Para aplicar la restricción a cada acción, selecciona la casilla de verificación Aplicar restricciones a todas las herramientas.
- Para orientar a recursos específicos, selecciona un servidor de MCP y las herramientas individuales en los menús desplegables.
- Restricciones: Ingresa tus reglas de negocio en lenguaje natural (hasta 5,000 caracteres).
- Mensaje de rechazo: (Opcional) Ingresa un mensaje (hasta 1,000
caracteres) para mostrar a los usuarios cuando esta política rechace una solicitud,
en lugar de la justificación de la política. En la API de REST, esto se asigna
a
agentResponseCustomization.denialMessageen el recurso de política. Con Google Cloud CLI, usa--agent-response-denial-messageengcloud beta ai semantic-governance-policies createogcloud beta ai semantic-governance-policies update(consulta la pestaña gcloud a continuación). Consulta Riesgo de exposición de la información y Mensajes de denegación con varias políticas.
- Haz clic en Crear.
gcloud
Puedes configurar una restricción en el permiso del agente (se aplica a todas las herramientas) o en el
permiso de la herramienta con el
comando
gcloud beta ai semantic-governance-policies create.
Cómo encontrar tu ID de agente
Para crear una política, necesitas el ID único de tu agente del Registro de agentes. Enumera los agentes de tu proyecto para encontrar el ID:
gcloud alpha agent-registry agents list \
--project=PROJECT_ID \
--location=LOCATION
El ID del agente es el último segmento del campo name (por ejemplo,
agentregistry-00000000-0000-0000-abcd-012345678901). Usa este valor para
el segmento AGENT_ID del
nombre del agente completamente calificado,
projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID,
que los siguientes comandos pasan a --agent.
Antes de ejecutar los comandos de la política de administración semántica, configura la anulación del extremo de API regional:
gcloud config set api_endpoint_overrides/aiplatform \
https://LOCATION-aiplatform.googleapis.com/
Crea una política con alcance de agente
gcloud beta ai semantic-governance-policies create POLICY_ID \
--location=LOCATION \
--display-name="Semantic governance policy for ShippingAgent-1" \
--description="Applies to all tool calls from the Cymbal shipping assistant agent" \
--agent=projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID \
--natural-language-constraint="Always use UPS as the shipping provider for shipments within the USA. Always use DHL as the shipping provider for shipments within the EU." \
--project=PROJECT_ID
Para configurar un mensaje de denegación (consulta la viñeta Mensaje de denegación
en la pestaña Consola y
Mensajes de denegación con varias políticas),
agrega --agent-response-denial-message:
gcloud beta ai semantic-governance-policies create POLICY_ID \
--location=LOCATION \
--display-name="Semantic governance policy for ShippingAgent-1" \
--agent=projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID \
--natural-language-constraint="Always use UPS as the shipping provider for shipments within the USA. Always use DHL as the shipping provider for shipments within the EU." \
--agent-response-denial-message="Sorry, I can only book shipments through the approved carriers for your region." \
--project=PROJECT_ID
También puedes agregar o actualizar --agent-response-denial-message en una
política existente con
gcloud beta ai semantic-governance-policies update.
Encuentra tu servidor de MCP
gcloud alpha agent-registry mcp-servers list \
--project=PROJECT_ID \
--location=LOCATION
Crea una política de alcance de herramientas
gcloud beta ai semantic-governance-policies create POLICY_ID \
--location=LOCATION \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--agent=projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID \
--mcp-tools="mcp-server=MCP_SERVER,tools=TOOL_NAME" \
--natural-language-constraint="NLC_TEXT" \
--project=PROJECT_ID
Mensajes de denegación con varias políticas
Cuando una sola solicitud activa rechazos de varias políticas, el motor de políticas combina los mensajes de rechazo configurados en esas políticas antes de devolver la respuesta al usuario. Se aplica un siguiente comportamiento:
- Los mensajes de rechazo de cada política con un veredicto de denegación se muestran juntos, separados por líneas en blanco.
- Los mensajes duplicados se muestran una vez.
- Si algunas políticas activadas tienen configurado un mensaje de rechazo y otras no, se agrega una línea genérica "Esta solicitud se rechazó debido a otra política empresarial" para cubrir las políticas que no tienen uno.
- Se muestran como máximo 5 mensajes de denegación por solicitud; se omiten los adicionales.
Habilitar el modo de ejecución de prueba
Puedes habilitar el modo de ejecución de prueba (DRY_RUN), que es un modo de solo auditoría o simulación que te permite evaluar las políticas sin aplicarlas. En este modo, el motor de políticas evalúa todas las llamadas a herramientas en función de tus restricciones y registra los veredictos, pero nunca bloquea las acciones. Esto te permite probar y validar tus restricciones antes de habilitar la aplicación de políticas.
Para habilitar el modo de ejecución de prueba, agrega sgpEnforcementMode: DRY_RUN a los metadatos de
tu extensión de autorización:
curl -X PATCH \
"https://networkservices.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAME?updateMask=metadata" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"sgpEnforcementMode": "DRY_RUN"
}
}'
En el modo de ejecución de prueba, ocurre lo siguiente:
- Todas las llamadas a herramientas están permitidas, independientemente del veredicto.
- Los veredictos y las justificaciones se registran para su revisión.
- Puedes revisar los registros para identificar qué acciones se habrían bloqueado y definir mejor tus restricciones antes de cambiar al modo de aplicación forzosa.
Para volver al modo de aplicación forzosa normal, quita sgpEnforcementMode de los
metadatos:
curl -X PATCH \
"https://networkservices.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzExtensions/AUTHZ_EXTENSION_NAME?updateMask=metadata" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"metadata": {}
}'
Visualiza los registros de evaluación de políticas
El motor de políticas escribe una entrada de registro estructurada para cada evaluación en Cloud Logging en tu
proyecto. La entrada registra un verdict general y un array evaluations con un
verdict y un rationale para cada herramienta o acción.
- Desde la consola: En la página Políticas, selecciona una política.
- En el panel Detalles, en la sección Observabilidad, haz clic en Cloud Logging > Ver detalles.
En el Explorador de registros: escribe
semantic-governance-policyen el cuadro de consulta o usa el siguiente filtro explícito:logName="projects/PROJECT_ID/logs/semantic-governance-policy"
El siguiente ejemplo es una entrada de registro de muestra:
{
"jsonPayload": {
"token_usage": 1859,
"verdict": "ALLOW",
"token_usage_breakdown": {"output": 43, "thinking": 0, "input": 1816, "total": 1859},
"evaluations": [
{
"toolName": "process_refund",
"verdict": "ALLOW",
"actionName": "process_refund",
"rationale": "The action is aligned with the user's request to process a refund and complies with the constraints regarding order ID length."
}
]
},
"resource": {"type": "global", "labels": {"project_id": "PROJECT_NUMBER"}},
"logName": "projects/PROJECT_ID/logs/semantic-governance-policy"
}
Campos clave:
verdict: Es la decisión general, que puede serALLOWoDENY.evaluations[].rationale: Es la justificación de por qué el motor de políticas llegó a un veredicto en particular para cada herramienta o acción.token_usage: Es la cantidad de tokens del modelo que consumió la evaluación.
Habilita el seguimiento de solicitudes
El motor de políticas exporta un seguimiento para cada solicitud que evalúa a Cloud Trace en tu proyecto, de modo que puedas inspeccionar la latencia por solicitud y la aplicación de políticas. Para recibir estos seguimientos, habilita la API de Cloud Trace y otorga a la cuenta de servicio de Vertex AI (P4SA) permiso para escribir seguimientos.
Habilita la API de Cloud Trace:
gcloud services enable cloudtrace.googleapis.com \ --project=PROJECT_IDOtorga el rol de agente de Cloud Trace (
roles/cloudtrace.agent) a la cuenta de servicio de Vertex AI. Este rol solo otorga el permiso de escritura de seguimiento (cloudtrace.traces.patch):export PROJECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Después de configurar ambos, envía una solicitud a través de tu agente y consulta los seguimientos en el Explorador de seguimientos de tu proyecto.
Administra la configuración de la política
Después de que se ejecute la política de administración semántica, puedes borrar políticas individuales o desconectar el motor de tu Agent Gateway.
Borra una política
Para quitar una política individual sin afectar la integración general de la política de administración semántica, sigue estos pasos:
gcloud beta ai semantic-governance-policies delete POLICY_ID \
--location=LOCATION \
--project=PROJECT_ID
Como alternativa, usa el siguiente comando de curl:
curl -X DELETE \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicies/POLICY_ID" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
Desaprovisiona un motor de políticas
REST
curl -X POST "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/semanticGovernancePolicyEngine:deprovision" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{}'
gcloud
gcloud beta ai semantic-governance-policy-engine deprovision \
--location=LOCATION \
--project=PROJECT_ID
Desconecta el motor de políticas de Agent Gateway
Puedes desconectar el Policy Engine de tu Agent Gateway para detener la evaluación de las llamadas a herramientas en función de tus restricciones.
Borra la política de autorización que vincula la aplicación de la política de administración semántica a tu puerta de enlace de agente:
gcloud network-security authz-policies delete AUTHZ_POLICY_NAME \
--location=LOCATION \
--project=PROJECT_ID
Para volver a conectar el motor de políticas más adelante, vuelve a crear la política de autorización como se describe en Conecta el motor de políticas a Agent Gateway.
Borra la extensión de autorización (opcional)
Borra la extensión de autorización que se creó durante la configuración.
gcloud network-services authz-extensions delete AUTHZ_EXTENSION_NAME \
--location=LOCATION \
--project=PROJECT_ID
Limpia los recursos administrados por el cliente (opcional)
La desaprovisionamiento del motor solo destruye los recursos de respaldo administrados por Google. Si ya no los necesitas, debes borrar de forma manual los recursos que creaste en tu propio proyecto durante la configuración.
Quita la zona del DNS privada
gcloud dns managed-zones delete DNS_ZONE_NAME \
--project=PROJECT_ID
Quita la subred y la VPC
gcloud compute networks subnets delete SUBNET_NAME \
--region=LOCATION \
--project=PROJECT_ID
gcloud compute networks delete NETWORK_NAME \
--project=PROJECT_ID
Quita las vinculaciones de IAM (opcional)
Si otorgaste permisos a la cuenta de servicio de Vertex AI (P4SA), puedes quitarlos:
export PROJECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/compute.networkAdmin"
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/dns.admin"
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUM}@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com" \
--role="roles/cloudtrace.agent"
Inhabilita la API de Cloud Trace (opcional)
gcloud services disable cloudtrace.googleapis.com --project=PROJECT_ID
Inhabilita la API de Agent Platform (opcional)
gcloud services disable aiplatform.googleapis.com --project=PROJECT_ID
Depura la aplicación de políticas
| Síntoma | Causa probable | Qué se debe verificar |
|---|---|---|
| Se permitió la llamada a la herramienta, pero se esperaba un bloqueo | La política no coincidió con el permiso y el agente, o la restricción es demasiado permisiva | En el registro de evaluación, confirma la política que coincidió y lee el veredicto; define mejor la NLC |
| Llamada a la herramienta rechazada, pero se esperaba que se permitiera | Restricción demasiado estricta o reglas en conflicto | Lee el rationale en el registro, ajusta el NLC y, luego, itera en el modo de ejecución de prueba. |
| No hay veredicto | El motor no está activo o la puerta de enlace no está vinculada | Verifica que el motor state sea ACTIVE y que existan la política de autorización, la extensión o ambas |
Para depurar un veredicto inesperado, haz lo siguiente:
- Verifica el veredicto y la justificación en los registros de evaluación de políticas.
- Realiza un seguimiento de la solicitud: consulta Habilita el seguimiento de solicitudes.
- Valida los cambios de forma segura con el modo de ejecución de prueba.
- Confirmar la implementación: El estado del motor es
ACTIVEy se estableció la vinculación de la puerta de enlace.
Catálogo de errores
En la siguiente tabla, se enumeran los errores que puedes encontrar cuando administras políticas de gobernanza semánticas, junto con los pasos para resolverlos:
| Nombre del error | Descripción | Acción sugerida |
|---|---|---|
SEMANTIC_GOVERNANCE_POLICY_ALREADY_EXISTS |
El ID de política que especificaste ya existe en este proyecto y ubicación. | Usa un ID de política único o una solicitud PATCH para actualizar la política existente. |
SEMANTIC_GOVERNANCE_POLICY_ETAG_MISMATCH |
La etag de tu solicitud no coincide con la versión actual del recurso. | Recupera la versión más reciente de la política para obtener la etag actual antes de intentar realizar la actualización. |
SEMANTIC_GOVERNANCE_POLICY_AGENT_REQUIRED |
Falta el campo agent en la solicitud. |
Especifica el nombre del recurso del agente al que se aplica esta política. |
SEMANTIC_GOVERNANCE_POLICY_CONSTRAINT_REQUIRED |
Falta el campo natural_language_constraint. |
Proporciona tus reglas de negocio en lenguaje natural en el campo de restricción. |
SEMANTIC_GOVERNANCE_POLICY_AGENT_INVALID_NAME |
El nombre del recurso del agente tiene un formato incorrecto. | Verifica el formato: projects/PROJECT_ID/locations/LOCATION/agents/AGENT_ID. |
SEMANTIC_GOVERNANCE_POLICY_AGENT_UNSUPPORTED_REGION |
Agent Registry no admite la región especificada para el agente. | Usa una región compatible con el registro de agentes y la política de administración semántica. |
SEMANTIC_GOVERNANCE_POLICY_AGENT_NOT_FOUND |
No se pudo encontrar el agente especificado. | Verifica que el agente exista en el registro de agentes para el proyecto y la ubicación especificados. |
SEMANTIC_GOVERNANCE_POLICY_AGENT_NOT_CONFIGURED |
El agente no tiene un RuntimeIdentity válido. |
Configura tu agente con una identidad de entorno de ejecución válida antes de aplicar una política. |
SEMANTIC_GOVERNANCE_POLICY_MCP_SERVER_NOT_FOUND |
No se pudo encontrar el servidor de MCP especificado. | Verifica que el servidor de MCP esté registrado en el Agent Registry del proyecto. |
SEMANTIC_GOVERNANCE_POLICY_MCP_SERVER_INVALID_NAME |
El nombre del recurso del servidor de MCP tiene un formato incorrecto. | Verifica el formato: projects/PROJECT_ID/locations/LOCATION/mcpServers/SERVER_ID. |
SEMANTIC_GOVERNANCE_POLICY_MCP_SERVER_UNSUPPORTED_REGION |
No se admite la región especificada para el servidor de MCP. | Usa una región admitida para tu servidor de MCP. |
SEMANTIC_GOVERNANCE_POLICY_REGISTRY_DENIED |
El sistema no puede consultar el registro de agentes porque faltan permisos. | Habilita la API de Agent Registry y asegúrate de que tu cuenta tenga el rol agentregistry.viewer. |
SEMANTIC_GOVERNANCE_POLICY_ENGINE_NOT_ENABLED_IN_REGION |
El motor de políticas no está activo en la región solicitada. | Sigue los pasos que se indican en Aprovisionamiento y habilitación para habilitar el motor en tu región. |
SEMANTIC_GOVERNANCE_POLICY_ENGINE_SERVICE_NOT_AVAILABLE_IN_LOCATION |
El servicio del motor de políticas de administración semántica no está disponible en la ubicación solicitada. | Usa una de las ubicaciones admitidas para el servicio del motor de políticas de administración semántica. |
¿Qué sigue?
- Obtén más información sobre los comandos de gcloud CLI de Vertex AI.
- Supervisa los veredictos de las políticas en el Explorador de registros.