Gerenciar Secrets para serviços externos no Kit de Desenvolvimento de Agente

Os agentes do Kit de Desenvolvimento de Agente (ADK) interagem com serviços externos fora do Google Cloud. As identidades de agente e o gerenciamento de identidade e acesso (IAM) permitem autenticar com serviços do Google Cloud. No entanto, eles não podem provar a identidade para plataformas externas que não são compatíveis com a federação de identidade do Google.

Os agentes do ADK precisam de acesso a várias credenciais para interagir com entidades externas, como serviços do MCP, ferramentas do ADK e APIs. Alguns exemplos comuns são:

  • Chaves de API para plataformas de processamento de pagamentos
  • Combinações de nome de usuário e senha para bancos de dados legados locais
  • Chaves privadas para conexões TLS mútuas (mTLS)
Para oferecer suporte a esses casos de uso, o ADK fornece o módulo SecretManagerClient no pacote google.adk.integrations.secret_manager.secret_client. Este módulo fornece uma interface padrão para que os agentes recuperem secrets do Secret Manager durante a execução. Este documento explica como gerenciar secrets para serviços externos no ADK usando o Secret Manager.

Vantagens de usar o Secret Manager com o ADK

O gerenciamento manual de chaves secretas pode gerar riscos de segurança e aumentar o trabalho dos desenvolvedores. O Secret Manager pode ajudar a resolver esses problemas das seguintes maneiras:

  • Se você incorporar secrets no código do agente, vai criar um risco de segurança significativo. Essa prática pode levar a acesso não autorizado a sistemas de produção. O uso do Secret Manager remove dados sensíveis do código-fonte. Isso ajuda a tornar seu aplicativo mais seguro.
  • Se você incorporar secrets estáticos usando variáveis de ambiente, a rotação de credenciais vai ficar complicada. Para aplicar as atualizações, reinicie os contêineres de implantação. O Secret Manager recupera as credenciais de forma dinâmica durante a execução, o que permite atualizações sem tempo de inatividade do sistema.
  • Se você escrever um código SecretManagerServiceClient boilerplate personalizado para cada ferramenta, vai aumentar as tarefas repetitivas dos desenvolvedores e o risco de erros. A integração padronizada do ADK oferece uma abordagem limpa e reutilizável para recuperar credenciais.

Antes de começar

Antes de integrar o Secret Manager ao ADK, faça o seguinte:

  1. Configure um agente usando o ADK. Esse recurso exige a versão 1.29 ou mais recente do ADK para Python.
  2. Conceda o papel do IAM Secret Manager Secret Accessor à identidade do agente. Esse papel permite que seu agente recupere secrets no ambiente de execução.
  3. Crie um secret e adicione uma versão dele, como uma chave de API, no Secret Manager.

Como um agente do ADK recupera secrets no ambiente de execução

O módulo secret_client.SecretManagerClient recupera credenciais na lógica do código do agente Python durante a execução. A lógica de orquestração do agente envia comandos ao modelo de linguagem grande (LLM) para decidir qual ferramenta executar, mas o sistema não envia o segredo ao LLM.

O agente executa as seguintes etapas durante a fase de execução:

  1. Antes de um agente do ADK invocar uma ferramenta de terceiros, ele inicializa o módulo SecretManagerClient e chama a função get_secret().
  2. O agente do ADK usa a identidade do agente para fazer a autenticação com o Secret Manager.
  3. O módulo SecretManagerClient retorna o secret de texto simples ao agente do ADK.
  4. O agente do ADK usa o secret para fazer uma chamada autenticada para a ferramenta de terceiros.

Recuperar secrets em um agente do ADK no momento da execução

O exemplo de código a seguir mostra como usar o módulo SecretManagerClient para recuperar um secret de forma segura em um agente do ADK. O agente recupera o segredo internamente para evitar a exposição de credenciais sensíveis à janela de contexto ou ao histórico de conversas do LLM.

Python

Para executar esse código, primeiro configure um ambiente de desenvolvimento do Python e instale o SDK do Python do Secret Manager. No Compute Engine ou no GKE, você precisa fazer a autenticação com o escopo do cloud-platform.

#!/usr/bin/env python

# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
"""
ADK agent for accessing secrets from global Secret Manager.
"""

import os

from google.adk import Agent
from google.adk.integrations.secret_manager.secret_client import SecretManagerClient

# Fetch secret from global Secret Manager
project_id = os.environ.get("GOOGLE_CLOUD_PROJECT")
secret_id = os.environ.get("ADK_TEST_SECRET_ID")
secret_version = os.environ.get("ADK_TEST_SECRET_VERSION", "latest")

if not project_id or not secret_id:
    raise ValueError("GOOGLE_CLOUD_PROJECT and ADK_TEST_SECRET_ID environment variables must be set.")

resource_name = f"projects/{project_id}/secrets/{secret_id}/versions/{secret_version}"

print("Fetching secret from global Secret Manager...")
# Initialize Secret Manager Client (Global)
client = SecretManagerClient()

# Fetch secret
try:
    secret_payload = client.get_secret(resource_name)
    print("Successfully fetched secret.")
    # The secret_payload can now be used by the agent or its tools as required.
except Exception as e:
    print(f"Error fetching secret: {e}")
    raise e

# Initialize Agent
root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    instruction='Answer user questions to the best of your knowledge',
)

print("Agent initialized successfully.")

A seguir