Os agentes podem acessar Google Cloud APIs e outros recursos usando a própria autoridade. Recomendamos esse método para agentes hospedados no Google Cloud para interagir com outros Google Cloud serviços.
Quando um agente age por conta própria, ele usa a identidade SPIFFE principal para solicitar Google Cloud tokens de acesso.
Antes de começar
- Verifique se você escolheu o método de autenticação correto.
- Crie e implante um agente com a identidade do agente ativada.
- Verifique se você tem os papéis necessários para concluir essa tarefa.
Funções exigidas
Para receber as permissões necessárias para conceder acesso de um agente a Google Cloud serviços, peça ao administrador para conceder a você os seguintes papéis do IAM no recurso de destino:
-
Para conceder acesso a um agente:
-
Administrador de IAM do projeto (
roles/resourcemanager.projectIamAdmin) -
Administrador de segurança (
roles/iam.securityAdmin)
-
Administrador de IAM do projeto (
-
Papéis recomendados para a identidade do agente:
-
Editor de contexto do agente (
roles/aiplatform.agentContextEditor) -
Acesso padrão do agente (
roles/aiplatform.agentDefaultAccess) -
Usuário da Vertex AI (
roles/aiplatform.user) -
Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer) -
Navegador (
roles/browser) -
Leitor de objetos do Storage (
roles/storage.objectViewer)
-
Editor de contexto do agente (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.
Conceder acesso a agentes
Para permitir que o agente acesse um Google Cloud serviço, conceda à identidade do agente os papéis necessários no recurso de destino.
Nas políticas de permissão do IAM, as identidades do agente usam identificadores principais.
Para conceder acesso de um agente a um recurso, use o Google Cloud console ou a CLI gcloud.
Console
- No Google Cloud console, acesse a página IAM do recurso
a que você quer conceder acesso.
- Para um projeto, acesse a página IAM:
- Para outros recursos, acesse a página desse recurso e clique na guia Permissões ou IAM.
- Clique em Conceder acesso.
- No campo Novos principais, insira o identificador principal que
corresponde ao nível de acesso que você quer conceder:
- Um único agente:
principal://agents.global.org-ORGANIZATION_ID. system.id.goog/ resources/ aiplatform/ projects/ PROJECT_NUMBER/ locations/ LOCATION/ reasoningEngines/ ENGINE_ID - Todos os agentes em um projeto:
principalSet://agents.global.org-ORGANIZATION_ID. system.id.goog/ attribute.platformContainer/ aiplatform/ projects/ PROJECT_NUMBER - Todos os agentes em uma organização:
principalSet://agents.global.org-ORGANIZATION_ID. system.id.goog/ *
- Um único agente:
- No campo Selecionar um papel, pesquise e selecione o papel que você quer conceder.
- Clique em Salvar.
Google Cloud CLI
Para conceder acesso de um agente a um recurso, execute o seguinte comando:gcloud SERVICE add-iam-policy-binding RESOURCE_NAME \
--member="PRINCIPAL_IDENTIFIER" \
--role="ROLE"Substitua:
- SERVICE: o Google Cloud serviço (por exemplo,
storageoubigquery). - RESOURCE_NAME: o nome do recurso (por exemplo, o nome do bucket ou o ID do conjunto de dados).
- PRINCIPAL_IDENTIFIER: o identificador principal que corresponde ao
nível de acesso que você quer conceder:
- Um único agente:
principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/ENGINE_ID - Todos os agentes em um projeto:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/PROJECT_NUMBER - Todos os agentes em uma organização:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/*
- Um único agente:
- ORGANIZATION_ID: seu Google Cloud ID da organização.
- PROJECT_NUMBER: Seu Google Cloud número do projeto.
- LOCATION: o local do agente (por exemplo,
us-central1). (Necessário apenas para acesso de agente único.) - ENGINE_ID: o ID do seu mecanismo de raciocínio. (Necessário apenas para acesso de agente único.)
- ROLE: o papel do IAM que você quer conceder.
Referenciar a identidade do agente no código
As Google Cloud bibliotecas de cliente usam automaticamente a identidade do agente quando seu agente é implantado em um ambiente compatível. Google Cloud
O snippet de Python a seguir mostra como usar manualmente as credenciais de identidade do agente para chamar a API Cloud Vision usando o Kit de desenvolvimento de agentes (ADK, na sigla em inglês).
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: desativar o acesso baseado no contexto
Uma política de acesso baseado no contexto gerenciada pelo Google ajuda a proteger as credenciais de identidade do agente. Além do gateway do agente, a política aplica a prova de posse demonstrável (DPoP, na sigla em inglês) autenticando o token de acesso do agente. A política também exige que o mTLS seja usado para acessar o gateway do agente. Isso garante que os tokens vinculados a certificados só possam ser usados no ambiente de execução confiável pretendido (por exemplo, um contêiner do Cloud Run). Essa linha de base de segurança torna as credenciais roubadas não reproduzíveis, ajudando a proteger contra roubo de credenciais e sequestro de conta (ATO).
Em casos raros, como requisitos específicos de compartilhamento de tokens entre agentes, se você precisar injetar o token diretamente no cabeçalho ou se o agente não puder ser autenticado com um erro 401 UNAUTHENTICATED, você pode desativar a política de acesso baseado no contexto padrão. A desativação remove a proteção da vinculação de tokens, tornando esses tokens de acesso de curta duração vulneráveis a roubo ou ataques de reprodução. Portanto, a desativação não é recomendada.
Para desativar, defina a seguinte variável de ambiente ao implantar o agente:
config={ "env_vars": { "GOOGLE_API_PREVENT_AGENT_TOKEN_SHARING_FOR_GCP_SERVICES": False, } }
Implantar o agente
Ao implantar o agente no Google Cloud, verifique se a identidade do agente está
ativada.
Se você estiver implantando no ambiente de execução do agente, use a flag 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]"],
},
)
A seguir
- Autenticar usando o OAuth de duas etapas com o gerenciador de autenticação
- Autenticar usando o OAuth de três etapas com o gerenciador de autenticação
- Autenticar usando a chave de API com o gerenciador de autenticação
- Gerenciar provedores de autenticação de identidade do agente
- Resolver problemas do gerenciador de autenticação de identidade do agente
- Visão geral da identidade do agente