S'authentifier à l'aide d'une clé API avec le gestionnaire d'authentification

Pour permettre à vos agents de s'authentifier auprès d'outils externes tels que Google Maps ou les API Weather, configurez l'authentification sortante à l'aide de fournisseurs d'authentification par clé API dans le gestionnaire d'authentification Agent Identity.

Les fournisseurs d'authentification par clé API gèrent vos clés de chiffrement pour vous. Cette fonctionnalité vous évite d'avoir à coder en dur des clés dans le code de votre agent ou à les gérer manuellement.

Workflow de clé API

Les fournisseurs d'authentification par clé API utilisent l'identité de l'agent et ne nécessitent pas le consentement utilisateur. Google prend des mesures pour sécuriser la clé API lors du stockage. Lorsque vous utilisez le kit de développement d'agent (ADK), il récupère et injecte automatiquement la clé API dans les en-têtes d'appel d'outil.

Avant de commencer

  1. Vérifiez que vous avez choisi la méthode d'authentification appropriée.
  2. Activez l'API Agent Identity Connector.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    Activer l'API

  3. Créez et déployez un agent.

  4. Obtenez une clé API auprès du service tiers auquel vous souhaitez vous connecter.

  5. Vérifiez que vous disposez des rôles requis pour effectuer cette tâche.

Rôles requis

Pour obtenir les autorisations nécessaires pour créer et utiliser un fournisseur d'authentification par clé API, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour créer et utiliser un fournisseur d'authentification par clé API. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour créer et utiliser un fournisseur d'authentification par clé API :

  • Pour créer des fournisseurs d'authentification : iamconnectors.connectors.create
  • Pour utiliser des fournisseurs d'authentification :
    • iamconnectors.connectors.retrieveCredentials
    • aiplatform.endpoints.predict
    • aiplatform.sessions.create

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Obtenir une clé API auprès du service tiers

Avant de créer un fournisseur d'authentification, obtenez une clé API auprès du service tiers auquel vous souhaitez que votre agent se connecte.

Si vous vous connectez à un service tiers en dehors de Google Cloud, obtenez la clé API à partir du portail des développeurs de ce service et ignorez les étapes de cette section.

Si vous vous connectez à des services (tels que Cloud Translation ou Google Maps), vous pouvez générer et configurer une clé API en procédant comme suit : Google Cloud

  1. Dans la Google Cloud console, activez les services d'API requis pour votre projet :

    1. Dans la Google Cloud console, accédez à la page API et services >Bibliothèque.

      Accéder à API et services >Bibliothèque

    2. Recherchez et activez les API utilisées par votre agent, telles que l'API Cloud Translation ou l'API Google Maps Weather.
    3. Copiez la chaîne de clé API générée.
  2. Configurez votre clé API :

    1. Dans la Google Cloud console, accédez à la page API et services> Identifiants.

      Accéder à API et services >Identifiants

    2. Cliquez sur Créer des identifiants >Clé API.
    3. Dans la boîte de dialogue Créer une clé API, procédez comme suit :
      1. Saisissez un nom unique pour votre clé API.
      2. Pour limiter la clé aux API spécifiques que vous avez activées, sélectionnez-les dans la liste Sélectionner des restrictions d'API.
      3. Facultatif : Dans la section Restreindre l'utilisation de votre clé pour réduire les risques de sécurité , sélectionnez un type d'application pour limiter l'accès.
      4. Cliquez sur Créer.
  3. Validez votre clé API en envoyant une requête de test au point de terminaison du service.

    • Pour vérifier une clé API Cloud Translation, exécutez la commande suivante :

      curl -X POST \
        -H "Content-Type: application/json" \
        -H "X-goog-api-key: YOUR_API_KEY" \
        -d '{"q": "Hello world", "target": "es"}' \
        "https://translation.googleapis.com/language/translate/v2"

      Remplacez YOUR_API_KEY par la clé API que vous avez générée.

    • Pour vérifier une clé API Google Maps Weather, exécutez la commande suivante :

      curl -X GET \
        "https://weather.googleapis.com/v1/currentConditions:lookup?key=YOUR_API_KEY&location.latitude=37.4220&location.longitude=-122.0841"

      Remplacez YOUR_API_KEY par la clé API que vous avez générée.

    Si la clé API est valide et correctement configurée, le service renvoie les données demandées.

Créer un fournisseur d'authentification par clé API

Créez un fournisseur d'authentification pour définir la configuration et les identifiants des applications tierces.

Pour créer un fournisseur d'authentification par clé API, utilisez la Google Cloud console ou Google Cloud CLI.

Console

  1. Dans la Google Cloud console, accédez à la page Registre d'agents.

    Accéder au registre d'agents

  2. Cliquez sur le nom de l'agent pour lequel vous souhaitez créer un fournisseur d'authentification.
  3. Cliquez sur Identité.
  4. Dans la section Fournisseurs d'authentification, cliquez sur Ajouter un fournisseur d'authentification.
  5. Dans le volet Ajouter un fournisseur d'authentification, saisissez un nom et une description.

    Le nom ne peut contenir que des lettres minuscules, des chiffres ou des traits d'union, ne peut pas se terminer par un trait d'union et doit commencer par une lettre minuscule.

  6. Dans la liste Type OAuth, sélectionnez Clé API .
  7. Cliquez sur Créer et continuer.
  8. Pour accorder à l'identité de votre agent l'autorisation d'utiliser le fournisseur d'authentification, cliquez sur Accorder l'accès.

    Le rôle Utilisateur du connecteur (roles/iamconnectors.user) est automatiquement attribué à l'identité de l'agent sur la ressource du fournisseur d'authentification.

  9. Dans la section Identifiants du fournisseur d'authentification, saisissez la clé API.
  10. Cliquez sur Ajouter une configuration de fournisseur.

Le fournisseur d'authentification que vous venez de créer s'affiche dans la liste Fournisseurs d'authentification.

Google Cloud CLI

  1. Créez le fournisseur d'authentification :

    gcloud alpha agent-identity connectors create AUTH_PROVIDER_NAME \
        --project="PROJECT_ID" \
        --location="LOCATION" \
        --api-key="API_KEY"
  2. Vérifiez que votre fournisseur d'authentification apparaît dans la liste et que son état est ENABLED :
    gcloud alpha agent-identity connectors list \
       --project="PROJECT_ID" \
       --location="LOCATION"
  3. Accordez des autorisations d'accès pour permettre à votre agent et à votre environnement de développement local à récupérer les identifiants du fournisseur d'authentification. Pour autoriser votre agent déployé et votre compte utilisateur personnel à accéder au fournisseur d'authentification, attribuez le rôle Utilisateur du connecteur (roles/iamconnectors.user) sur la ressource du fournisseur d'authentification :

    1. Accordez l'accès à l'ID SPIFFE de votre agent déployé (Agent Identity) :

      gcloud alpha agent-identity connectors add-iam-policy-binding AUTH_PROVIDER_NAME \
          --project="PROJECT_ID" \
          --location="LOCATION" \
          --role="roles/iamconnectors.user" \
          --member="principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/ENGINE_ID"
    2. Accordez l'accès à votre compte utilisateur personnel pour le développement et les tests locaux (adk web):

      gcloud alpha agent-identity connectors add-iam-policy-binding AUTH_PROVIDER_NAME \
          --project="PROJECT_ID" \
          --location="LOCATION" \
          --role="roles/iamconnectors.user" \
          --member="user:USER_EMAIL"

Remplacez les éléments suivants :

  • PROJECT_ID: ID de votre Google Cloud projet.
  • LOCATION : emplacement où votre fournisseur d'authentification et votre agent sont déployés (par exemple, us-west1).
  • AUTH_PROVIDER_NAME : nom de votre fournisseur d'authentification (par exemple, bigquery-mcp-3lo-authprovider).
  • AUTHORIZATION_URL : URL du serveur d'autorisation (par exemple, https://accounts.google.com/o/oauth2/v2/auth).
  • TOKEN_URL : URL du serveur de jetons (par exemple, https://oauth2.googleapis.com/token).
  • CLIENT_ID : ID client OAuth que vous avez généré à partir du service tiers.
  • CLIENT_SECRET : code secret du client OAuth que vous avez généré à partir du service tiers.
  • ORGANIZATION_ID: ID de votre Google Cloud organisation.
  • PROJECT_NUMBER : numéro de votre Google Cloud projet.
  • ENGINE_ID : ID de votre agent de moteur de raisonnement déployé.
  • USER_EMAIL : adresse e-mail de votre compte utilisateur personnel.

S'authentifier dans le code de votre agent

Pour authentifier votre agent, vous pouvez utiliser l'ADK.

ADK

Faites référence au fournisseur d'authentification dans le code de votre agent à l'aide de l'ensemble d'outils MCP de l'ADK.

from google.adk.agents.llm_agent import LlmAgent
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider, GcpAuthProviderScheme
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset
from google.adk.auth.auth_tool import AuthConfig

# Register the Google Cloud auth provider so the CredentialManager can use it.
CredentialManager.register_auth_provider(GcpAuthProvider())

# Create the Google Cloud auth provider scheme using the auth provider's full resource name.
auth_scheme = GcpAuthProviderScheme(
    name="projects/PROJECT_ID/locations/LOCATION/connectors/AUTH_PROVIDER_NAME"
)

# Configure an MCP tool with the authentication scheme.
toolset = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://YOUR_MCP_SERVER_URL"),
    auth_scheme=auth_scheme,
)

# Initialize the agent with the authenticated tools.
agent = LlmAgent(
    name="AGENT_NAME",
    model="gemini-2.5-flash",
    instruction="AGENT_INSTRUCTIONS",
    tools=[toolset],
)

Exemple : Se connecter à Google Maps MCP

L'exemple suivant illustre une configuration agent.py qui connecte un agent à un serveur Google Maps MCP :

import os
from google.adk.agents import Agent
from google.adk.apps import App
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider, GcpAuthProviderScheme
from google.adk.models import Gemini
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset

os.environ["GOOGLE_CLOUD_PROJECT"] = "PROJECT_ID"
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "True"

# Register GCP auth provider for Agent Identity Credentials service
CredentialManager.register_auth_provider(GcpAuthProvider())

maps_auth_scheme = GcpAuthProviderScheme(
    name="projects/PROJECT_ID/locations/LOCATION/connectors/AUTH_PROVIDER_NAME"
)

maps_tools = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="https://mapstools.googleapis.com/mcp"),
    auth_scheme=maps_auth_scheme,
    errlog=None,
)

root_agent = Agent(
    name="root_agent",
    model=Gemini(model="gemini-2.5-flash"),
    instruction="You are a helpful AI assistant designed to provide accurate and useful information. You can also use your Google Maps tools to look up locations and directions.",
    tools=[maps_tools],
)

app = App(
    root_agent=root_agent,
    name="AGENT_NAME",
)

ADK

Faites référence au fournisseur d'authentification dans le code de votre agent à l'aide d'un outil de fonction authentifié dans l'ADK.

import httpx
from google.adk.agents.llm_agent import LlmAgent
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider
from google.adk.integrations.agent_identity import GcpAuthProviderScheme
from google.adk.apps import App
from google.adk.auth.auth_credential import AuthCredential
from google.adk.auth.auth_tool import AuthConfig
from google.adk.tools.authenticated_function_tool import AuthenticatedFunctionTool
from vertexai import agent_engines

# First, register Google Cloud auth provider
CredentialManager.register_auth_provider(GcpAuthProvider())

# Create Auth Config
spotify_auth_config = AuthConfig(
    auth_scheme=GcpAuthProviderScheme(
        name="projects/PROJECT_ID/locations/LOCATION/connectors/AUTH_PROVIDER_NAME"
    )
)

# Use the Auth Config in Authenticated Function Tool
spotify_search_track_tool = AuthenticatedFunctionTool(
    func=spotify_search_track, auth_config=spotify_auth_config
)

# Sample function tool
async def spotify_search_track(credential: AuthCredential, query: str) -> str | list:
    token = None
    if credential.http and credential.http.credentials:
        token = credential.http.credentials.token

    if not token:
        return "Error: No authentication token available."

    async with httpx.AsyncClient() as client:
        response = await client.get(
            "https://api.spotify.com/v1/search",
            headers={"Authorization": f"Bearer {token}"},
            params={"q": query, "type": "track", "limit": 1},
        )
        # Add your own logic here

agent = LlmAgent(
    name="AGENT_NAME",
    model="gemini-2.5-flash",
    instruction="AGENT_INSTRUCTIONS",
    tools=[spotify_search_track_tool],
)

app = App(
    name="APP_NAME",
    root_agent=agent,
)

vertex_app = agent_engines.AdkApp(app_name=app)

Exemple : Se connecter à l'API Google Maps Weather

L'exemple suivant illustre une configuration agent.py qui connecte un agent à l'API Google Maps Weather à l'aide d'un outil de fonction authentifié :

import os
import httpx
from google.adk.agents import Agent
from google.adk.apps import App
from google.adk.auth.auth_credential import AuthCredential
from google.adk.auth.auth_tool import AuthConfig
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider, GcpAuthProviderScheme
from google.adk.models import Gemini
from google.adk.tools.authenticated_function_tool import AuthenticatedFunctionTool

os.environ["GOOGLE_CLOUD_PROJECT"] = "PROJECT_ID"
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "True"

# Register GCP auth provider for Agent Identity Credentials service
CredentialManager.register_auth_provider(GcpAuthProvider())

weather_auth_config = AuthConfig(
    auth_scheme=GcpAuthProviderScheme(
        name="projects/PROJECT_ID/locations/LOCATION/connectors/AUTH_PROVIDER_NAME"
    )
)

async def get_weather(credential: AuthCredential, latitude: float, longitude: float) -> str | dict:
    """Gets the current weather conditions for a location using latitude and longitude."""
    api_key = None
    if http := credential.http:
        if http.additional_headers and "X-GOOG-API-KEY" in http.additional_headers:
            api_key = http.additional_headers["X-GOOG-API-KEY"]
        elif http.credentials and http.credentials.token:
            api_key = http.credentials.token

    if not api_key:
        return "Error: No API key available from the auth provider."

    params = {"location.latitude": latitude, "location.longitude": longitude, "key": api_key}
    async with httpx.AsyncClient() as client:
        response = await client.get(
            "https://weather.googleapis.com/v1/currentConditions:lookup",
            params=params,
        )
        if response.status_code != 200:
            return f"Error from Weather API: {response.status_code} - {response.text}"
        return response.json()

get_weather_tool = AuthenticatedFunctionTool(
    func=get_weather, auth_config=weather_auth_config
)

root_agent = Agent(
    name="root_agent",
    model=Gemini(model="gemini-2.5-flash"),
    instruction="You are a helpful AI assistant. You will use your weather tool to look up current conditions.",
    tools=[get_weather_tool],
)

app = App(
    root_agent=root_agent,
    name="AGENT_NAME",
)

ADK

Faites référence au fournisseur d'authentification dans le code de votre agent à l'aide de l'ensemble d'outils MCP du registre d'agents dans l'ADK.

from google.adk.agents.llm_agent import LlmAgent
from google.adk.auth.credential_manager import CredentialManager
from google.adk.integrations.agent_identity import GcpAuthProvider
from google.adk.integrations.agent_identity import GcpAuthProviderScheme
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset
from google.adk.auth.auth_tool import AuthConfig
from google.adk.integrations.agent_registry import AgentRegistry

# First, register Google Cloud auth provider
CredentialManager.register_auth_provider(GcpAuthProvider())

# Create Google Cloud auth provider scheme by providing Auth Provider full resource name
auth_scheme = GcpAuthProviderScheme(
    name="projects/PROJECT_ID/locations/LOCATION/connectors/AUTH_PROVIDER_NAME"
)

# Set Agent Registry
registry = AgentRegistry(project_id="PROJECT_ID", location="global")

toolset = registry.get_mcp_toolset(mcp_server_name="projects/PROJECT_ID/locations/global/mcpServers/agentregistry-00000000-0000-0000-0000-000000000000", auth_scheme=auth_scheme)

# Example MCP tool
toolset = McpToolset(
    connection_params=StreamableHTTPConnectionParams(url="MCP_URL"),
    auth_scheme=auth_scheme,
)

agent = LlmAgent(
    name="AGENT_NAME",
    model="MODEL_NAME",
    instruction="AGENT_INSTRUCTIONS",
    tools=[toolset],
)

  

Déployer l'agent

Lorsque vous déployez votre agent sur Google Cloud, assurez-vous qu'Agent Identity est activé.

Si vous effectuez un déploiement sur Agent Runtime sur Gemini Enterprise Agent Platform , utilisez l'indicateur identity_type=AGENT_IDENTITY :

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]", "google-adk[agent-identity]"],
    },
)

Étape suivante