Los agentes pueden acceder a las Google Cloud APIs y a otros recursos con su propia identidad. Google recomienda este método para que los agentes alojados en Google Cloud interactúen con otros Google Cloud servicios.
Cuando un agente actúa por su propia autoridad, usa su identidad SPIFFE principal para solicitar Google Cloud tokens de acceso.
Antes de comenzar
- Verifica que hayas elegido el método de autenticación correcto.
- Crea e implementa un agente con la identidad de agente habilitada.
- Verifica que tengas los roles necesarios para completar esta tarea.
Roles obligatorios
Para obtener los permisos que necesitas para otorgar acceso de agente a los Google Cloud servicios, pídele a tu administrador que te otorgue los siguientes roles de IAM en el recurso de destino:
-
Para otorgar acceso a un agente, haz lo siguiente:
- Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin) - Administrador de seguridad (
roles/iam.securityAdmin)
- Administrador de IAM de proyecto (
-
Roles recomendados para la identidad de agente:
- Editor de contexto de agente (
roles/aiplatform.agentContextEditor) - Acceso predeterminado de agente (
roles/aiplatform.agentDefaultAccess) - Usuario de Vertex AI (
roles/aiplatform.user) - Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer) - Navegador (
roles/browser) - Visualizador de objetos de almacenamiento (
roles/storage.objectViewer)
- Editor de contexto de agente (
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 mediante roles personalizados o cualquier otro rol predefinido.
Otorgar acceso a los agentes
Para permitir que tu agente acceda a un Google Cloud servicio, debes otorgarle a la identidad del agente los roles necesarios en el recurso de destino.
En las políticas de permiso de IAM, las identidades de agente usan identificadores principales.
Para otorgar acceso de agente a un recurso, usa la Google Cloud consola o la gcloud CLI.
Console
- En la Google Cloud consola, ve a la página IAM del recurso
al que deseas otorgar acceso.
- Para un proyecto, ve a la página IAM:
- Para otros recursos, ve a la página de ese recurso y haz clic en la Permisos o IAM tab.
- Haz clic en Otorgar acceso.
- En el campo Principales nuevas, ingresa el identificador principal que
coincida con el nivel de acceso que deseas otorgar:
- Un solo agente:
principal://agents.global.org-ORGANIZATION_ID. system.id.goog/ resources/ aiplatform/ projects/ PROJECT_NUMBER/ locations/ LOCATION/ reasoningEngines/ ENGINE_ID - Todos los agentes de un proyecto:
principalSet://agents.global.org-ORGANIZATION_ID. system.id.goog/ attribute.platformContainer/ aiplatform/ projects/ PROJECT_NUMBER - Todos los agentes de una organización:
principalSet://agents.global.org-ORGANIZATION_ID. system.id.goog/ *
- Un solo agente:
- En el campo Selecciona un rol, busca y selecciona el rol que deseas otorgar.
- Haz clic en Guardar.
Google Cloud CLI
Para otorgar acceso de agente a un recurso, ejecuta el siguiente comando:gcloud SERVICE add-iam-policy-binding RESOURCE_NAME \
--member="PRINCIPAL_IDENTIFIER" \
--role="ROLE"Reemplaza lo siguiente:
- SERVICE: El Google Cloud servicio (por ejemplo,
storageobigquery). - RESOURCE_NAME: El nombre del recurso (por ejemplo, el nombre del bucket o el ID del conjunto de datos).
- PRINCIPAL_IDENTIFIER: El identificador principal que coincide con el
nivel de acceso que deseas otorgar:
- Un solo agente:
principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/ENGINE_ID - Todos los agentes de un proyecto:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/PROJECT_NUMBER - Todos los agentes de una organización:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/*
- Un solo agente:
- ORGANIZATION_ID: Tu Google Cloud ID de organización.
- PROJECT_NUMBER: Tu Google Cloud número de proyecto.
- LOCATION: La ubicación de tu agente (por ejemplo,
us-central1). (Solo es obligatorio para el acceso de un solo agente). - ENGINE_ID: El ID de tu motor de razonamiento. (Solo es obligatorio para el acceso de un solo agente).
- ROLE: El rol de IAM que deseas otorgar.
Haz referencia a la identidad del agente en tu código
Las Google Cloud bibliotecas cliente usan automáticamente la identidad de agente cuando tu agente se implementa en un entorno Google Cloud compatible.
En el siguiente fragmento de Python, se muestra cómo usar de forma manual las credenciales de identidad de agente para llamar a la API de Cloud Vision con el Kit de desarrollo de agentes (ADK).
from google.cloud import vision
from google.auth import default
from google.adk.tools import tool
@tool
def analyze_image_from_gcs(gcs_uri: str) -> dict:
# Application default credentials automatically retrieve the
# Agent Identity token from the metadata server.
agent_identity_credentials, project_id = default()
client = vision.ImageAnnotatorClient(
credentials=agent_identity_credentials,
project=project_id
)
# Prepare the image object with the Cloud Storage URI.
image = vision.Image()
image.source.image_uri = gcs_uri
# Perform label detection on the image.
response = client.label_detection(image=image)
# Check for any errors returned by the API.
if response.error.message:
return {"status": "failure", "error_message": response.error.message}
labels = response.label_annotations
return {"status": "success", "labels": [label.description for label in labels]}
Opcional: Inhabilita los tokens vinculados a certificados
Una política de acceso adaptado al contexto predeterminada administrada por Google ayuda a proteger las credenciales de identidad de agente. Más allá del Agent Gateway, la política aplica la demostración de prueba de posesión (DPoP) mediante la autenticación del token de acceso del agente. La política también requiere TLS mutua (mTLS) para acceder al Agent Gateway. Este requisito ayuda a garantizar que solo el entorno de ejecución de confianza previsto, como un contenedor de Cloud Run o un Pod de Google Kubernetes Engine (GKE), pueda usar los tokens vinculados a certificados. Esta línea de base de seguridad hace que las credenciales robadas no se puedan reproducir, lo que ayuda a proteger contra el robo de credenciales y la apropiación de cuentas (ATO).
La vinculación de certificados ayuda a proteger dos tipos de credenciales de agente:
- Google Cloud Tokens de acceso: Tokens de acceso de OAuth 2.0 de corta duración
que autentican solicitudes a las Google Cloud APIs y a otros recursos
(
*.googleapis.com). - Tokens de ID de OpenID Connect (OIDC): Tokens web JSON (JWT) que
autentican solicitudes a
servicios externos y a
herramientas y servicios alojados en Google Cloud entornos de ejecución, como
Cloud Run (
*.mtls.run.app) o GKE.
Inhabilita la vinculación para todos los tokens de acceso y de ID
No se recomiendainhabilitar la política de acceso adaptado al contexto predeterminada y los tokens vinculados a certificados
en el entorno de ejecución. Si configuras
GOOGLE_API_ENABLE_RUNTIME_BOUND_TOKEN=false se quita la protección de vinculación de tokens
para los tokens de acceso y los tokens de ID de OIDC Google Cloud , lo que hace que estos
tokens de corta duración sean vulnerables al robo o a los ataques de reproducción.
Sin embargo, puedes inhabilitar el entorno de ejecución en los siguientes casos poco frecuentes:
- Tienes requisitos específicos de uso compartido de tokens entre agentes.
- Debes insertar el token directamente en el encabezado de la solicitud.
- Tu agente no puede autenticarse y muestra un
401 UNAUTHENTICATEDerror.
Para inhabilitar el entorno de ejecución, establece la siguiente variable de entorno cuando implementes tu agente:
config={ "env_vars": { "GOOGLE_API_ENABLE_RUNTIME_BOUND_TOKEN": "false", } }
Inhabilita las solicitudes individuales de tokens de ID
De forma predeterminada, las bibliotecas cliente de Google Auth compatibles vinculan criptográficamente los tokens de ID de OIDC al certificado X.509 único del agente mediante la inclusión de la huella digital del certificado en la declaración cnf (x5t#S256) del token.
Algunos servicios, como Cloud Run, aplican la vinculación de certificados cuando la declaración cnf está presente. Si tu agente llama a estos servicios a través de un extremo que no es mTLS, como una URL *.run.app estándar, o si un extremo de destino no requiere la vinculación de certificados, puedes inhabilitar las solicitudes individuales de tokens de ID. Este parámetro de configuración solo afecta esa solicitud y no inhabilita
la vinculación de certificados para Google Cloud los tokens de acceso.
Python
En la biblioteca google-auth de Python (2.61.0 o
versiones posteriores en GKE y 2.62.0 o versiones posteriores en
Cloud Run), establece bind_id_token=False:
from google.auth.transport.requests import AuthorizedSession from google.auth.transport.requests import Request from google.oauth2 import id_token target_audience = "https://TARGET_SERVICE_URL" # Option 1: Use AuthorizedSession with IDTokenCredentials credentials = id_token.fetch_id_token_credentials( audience=target_audience, bind_id_token=False, ) authed_session = AuthorizedSession(credentials) response = authed_session.get(target_audience) # Option 2: Fetch a raw ID token directly token = id_token.fetch_id_token( Request(), audience=target_audience, bind_id_token=False, )
Reemplaza TARGET_SERVICE_URL por el URI
o la URL de público del servicio receptor al que llama tu agente.
Implementa el agente
Cuando implementes tu agente en Google Cloud, asegúrate de que la identidad de agente esté
habilitada.
Si realizas la implementación en
Agent Runtime en Gemini Enterprise Agent Platform
, usa la identity_type=AGENT_IDENTITY
marca:
import vertexai
from vertexai import types
from vertexai.agent_engines import AdkApp
# Initialize the Vertex AI client with v1beta1 API for Agent Identity support
client = vertexai.Client(
project="PROJECT_ID",
location="LOCATION",
http_options=dict(api_version="v1beta1")
)
# Use the proper wrapper class for your Agent Framework (e.g., AdkApp)
app = AdkApp(agent=agent)
# Deploy the agent with Agent Identity enabled
remote_app = client.agent_engines.create(
agent=app,
config={
"identity_type": types.IdentityType.AGENT_IDENTITY,
"requirements": ["google-cloud-aiplatform[agent_engines,adk]"],
},
)
¿Qué sigue?
- Autenticación en servicios externos con la propia identidad de un agente
- Autenticación con OAuth de 2 segmentos con el administrador de autenticación
- Autenticación con OAuth de 3 segmentos con el administrador de autenticación
- Autenticación con clave de API con el administrador de autenticación
- Administra proveedores de autenticación de identidad de agente
- Descripción general de la identidad de agente