Auf dieser Seite wird beschrieben, wie Sie die Identity Access Management (IAM)-Agent-Identität verwenden, um Sicherheits- und Zugriffsverwaltungsfunktionen bereitzustellen, wenn Sie Agents in der Vertex AI Agent Engine-Laufzeit verwenden.
Übersicht
Die Agentenidentität bietet eine Identität pro Agent, die einen Ansatz mit minimalen Berechtigungen ermöglicht. Sie ist an den Lebenszyklus des Agents gebunden und daher ein sichereres Hauptkonto als Dienstkonten. Vorhandene Zugriffsverwaltungsfunktionen über die IAM-Support-Agent-Identität ermöglichen eine starke Governance.
Auf dieser Seite werden die folgenden Themen behandelt:
Agent mit Agent-Identität erstellen: Erstellen Sie einen Agent, der beim Bereitstellen in der Vertex AI Agent Engine-Laufzeit automatisch eine eindeutige Identität erhält.
Zugriff auf Google Cloud APIs mit der Identität des Agents autorisieren: Verwenden Sie die bereitgestellte Identität des Agents, um dem Agent den Zugriff auf die eigenen Tools, APIs und Ressourcen von Google Cloudzu gewähren oder zu verweigern. Dazu gehört auch der Zugriff auf andere Agents, die in Vertex AI Agent Engine gehostet werden, über das Agent2Agent-Protokoll (A2A).
Mit OAuth über delegierte Berechtigungen auf Drittanbieterdienste zugreifen: Konfigurieren Sie die delegierte Nutzerauthentifizierung für Tools von Erst- und Drittanbietern mit OAuth, damit der Agent Aufgaben in Ihrem Namen ausführen kann.
Über API-Schlüssel auf Drittanbieterdienste zugreifen: Stellen Sie eine Verbindung zu Drittanbieterdiensten her, indem Sie API-Schlüssel verwenden, die sicher gespeichert und zur Laufzeit verfügbar sind.
Agent-Aktivität protokollieren: Agent-Identität in Logs für alle Google Cloud Dienste ansehen. Bei nutzerdelegierten Abläufen werden in den Logs sowohl die Nutzer- als auch die Agent-Identität angezeigt.
Agents und Agent-Identität auflisten: Sehen Sie sich die Liste Ihrer Agents und ihrer Identitäten in Vertex AI Agent Engine an.
Beschränkungen
Beachten Sie beim Planen Ihres Projekts die folgenden Einschränkungen:
Agent-Identitäten können keine Legacy-Bucket-Rollen (
storage.legacyBucketReader,storage.legacyBucketWriteroderstorage.legacyBucketOwner) für Cloud Storage-Buckets zugewiesen werden.Wir empfehlen, die Agent-Identität nur in Testumgebungen zu verwenden.
Agent mit Agent-Identität erstellen
Sie können Agents, die Sie in Vertex AI Agent Engine bereitstellen, beim Erstellen Ihrer Agent Engine-Instanz mit einer eindeutigen Identität bereitstellen. Die Identität ist an die Agent-Ressourcen-ID der Vertex AI Agent Engine gebunden und unabhängig vom Agent-Framework, das Sie zum Entwickeln des Agents verwendet haben.
Beim Erstellen einer Agent-Identität haben Sie die folgenden Optionen:
Agent Engine-Instanz erstellen, ohne Agent-Code bereitzustellen: Wenn Sie IAM-Richtlinien einrichten möchten, bevor Sie den Agent bereitstellen, können Sie eine Agent-Identität erstellen, ohne den Agent-Code bereitzustellen. Erstellen Sie dazu eine Agent Engine-Instanz mit nur dem Feld
identity_type:import vertexai from vertexai import agent_engines from vertexai import types client = vertexai.Client( project=PROJECT_ID, location=LOCATION, http_options=dict(api_version="v1beta1") ) remote_app = client.agent_engines.create( config={"identity_type": types.IdentityType.AGENT_IDENTITY} )Nachdem Sie die Agent Engine-Instanz mit der Agent-Identität erstellt haben, können Sie mit
agent_engine.update(...)Agent-Code hinzufügen.Agent Engine-Instanz beim Bereitstellen von Agent-Code erstellen: Wenn Sie die Agent-Identität beim Bereitstellen Ihres Agent-Codes bereitstellen möchten, verwenden Sie das Vertex AI SDK für Python und das Flag
identity_type=AGENT_IDENTITY:import vertexai from vertexai import agent_engines from vertexai import types client = vertexai.Client( project=PROJECT_ID, location=LOCATION, http_options=dict(api_version="v1beta1") ) remote_app = client.agent_engines.create( agent=app, config={ "identity_type": types.IdentityType.AGENT_IDENTITY, "requirements": ["google-cloud-aiplatform[adk,agent_engines]"], "staging_bucket": f"gs://"BUCKET _NAME", }, )BUCKET_NAME ist dabei der Name Ihres Cloud Storage-Buckets.
Die Agent Engine-Instanz wird mit einer schreibgeschützten, vom System bestätigten Agent-Identität (einer Hauptkonto-Kennung) erstellt:
# Agent identity Format
principal://TRUST_DOMAIN/NAMESPACE/AGENT_NAME
# Example agent identity
principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID
Die folgenden Teile werden Ihnen im Rahmen der Agentenidentität automatisch bereitgestellt:
TRUST_DOMAIN: Eine Vertrauensdomäne wird für Sie bereitgestellt, wenn Sie die Vertex AI API aktivieren:
Wenn Sie eine Organisation haben, wird die Vertrauenswürdigkeitsdomain auf Organisationsebene im Format
agents.global.org-ORGANIZATION_ID.system.id.googerstellt.Wenn Ihr Projekt keiner Organisation angehört, wird eine Vertrauenswürdige Domain auf Projektebene mit dem Format
agents.global.project-PROJECT_NUMBER.system.id.googerstellt.
NAMESPACE: Der unveränderliche Ressourcenpfad des Agenten.
AGENT_NAME: Die unveränderliche
agent-reasoning-engine-id.
Die Agent-Identität basiert auf SPIFFE. Außerdem stellen wir automatisch ein x509-Zertifikat für den Agenten mit derselben Identität bereit und verwalten es für die sichere Authentifizierung.
Sie können die Identität über die Vertex AI Agent Engine-Konsole und API ansehen. Google Cloud
Mit der Identität des Kundenservicemitarbeiters auf Google Cloud APIs und ‑Dienste zugreifen
Nachdem Sie einen Agent mit einer Agent-Identität erstellt haben, können Sie dem Agent mit den folgenden IAM-Richtlinien Zugriff auf Google Cloud APIs und -Dienste gewähren oder verweigern:
Zulassungsrichtlinien: Gewähren einem Agent Zugriff auf eine Google Cloud -Ressource.
Ablehnungsrichtlinien: Verweigern Sie einem Agent den Zugriff auf eine Google Cloud -Ressource.
Zugriff auf einen Agenten gewähren
Erteilen Sie der Agent-Identität IAM-Berechtigungen. Wir empfehlen die folgenden Rollen:
roles/aiplatform.expressUser: Zugriff auf die Ausführung von Inferenz, Sitzungen und Arbeitsspeicher gewähren.roles/serviceusage.serviceUsageConsumer: Erteilen Sie dem Agent die Berechtigung, das Kontingent des Projekts und das Vertex AI SDK zu verwenden.
Erstellen Sie eine IAM-Zulassungsrichtlinie, um einem Agent eine IAM-Rolle zuzuweisen:
# Example: Grant the agent access to vision API.
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \
--member="principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID" \
--role="ROLE_NAME" \
Ersetzen Sie Folgendes:
ORGANIZATION_ID: Die ID für Ihre Organisation.
PROJECT_NUMBER: Ihre Projektnummer.
LOCATION: Ihre Region. Unterstützte Regionen für Vertex AI Agent Engine
AGENT_ENGINE_ID: Die Ressourcen-ID Ihrer Agent Engine-Instanz.
ROLE_NAME ist der Name der Rolle, die Sie zuweisen möchten. Beispiel:
roles/vision.userEine Liste der vordefinierten Rollen finden Sie unter Informationen zu Rollen.
Sobald IAM konfiguriert ist, werden die Standardanmeldedaten für Anwendungen des Google Cloud SDK automatisch verwendet, um die Agent-Identität für die Authentifizierung beiGoogle Cloud -Ressourcen zu verwenden.
Zugriff auf einen Agenten verweigern
Wenn Sie einem Agent den Zugriff auf Ressourcen verweigern möchten, können Sie die IAM-Ablehnungsrichtlinie verwenden oder eine Principal Access Boundary-Richtlinie einrichten.
Verweigern Sie dem Agent den Zugriff auf bestimmte Ressourcen mithilfe der IAM-Ablehnungsrichtlinie.
// Deny policy (deny all agents across the org from ability to create or delete buckets) { "displayName": "Deny access to bucket for all agent identities in the org", "rules": [ { "denyRule": { "deniedPrincipals": [ "principalSet://<org.id>.global.agent.id.goog/*" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "storage.googleapis.com/buckets.delete" ] } } ] }Richten Sie eine Principal Access Boundary ein, um die Ressourcen einzuschränken, auf die der Agent trotz anderer Berechtigungen, die er möglicherweise hat, zugreifen darf:
// PAB Policy (Only allow agents to operate within resource boundary) { "name":"organizations/ORGANIZATION_ID/locations/global/principalAccessBoundaryPolicies/example-policy", "details": { "rules": [ { "description": "Restrict agent identity inside a folder", "resources": [ "//cloudresourcemanager.googleapis.com/folder/0123456789012" ], "effect": "ALLOW" } ], } } // Bind PAB policy to all identities in the organization (incl agent id) gcloud iam principal-access-boundary-policies bindings create example-pab-binding \ --organization=organizations/ORGANIZATION_ID \ --policy=example-policy \ --target-principal-set=cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID
Über OAuth mit delegierter Berechtigung auf Drittanbieterdienste zugreifen
Die Agent-Identität kann es dem Agent ermöglichen, in Ihrem Namen auf Drittanbieterdienste zuzugreifen, indem sie in Secret Manager integriert wird.
Um die Integration mit Secret Manager einzurichten, müssen Sie zuerst die zusätzlichen Anmeldedaten (Client-ID oder Clientschlüssel) für den Zugriff auf die Drittanbieterdienste in Secret Manager (im Verbraucherprojekt, in dem der Agent verwaltet wird) speichern. Gehen Sie dazu so vor:
Erstellen Sie einen neuen Container in Secret Manager.
Rufen Sie die Client-ID oder den Clientschlüssel vom Drittanbieter der App ab.
Fügen Sie die Client-ID oder den Clientschlüssel zu Secret Manager hinzu.
Beschränken Sie den Zugriff auf diese Anmeldedaten basierend auf der Agent-ID (einer Haupt-ID):
# Create the secret container gcloud secrets create my-app-oauth-secret # Add the actual client secret to Secret Manager gcloud secrets versions add my-app-oauth-secret "gcp-client-secret-1a2b3c4d" # Grant agent identity access to the secret gcloud secrets add-iam-policy-binding my-app-oauth-secret \ --role='roles/secretmanager.secretAccessor' \ --member="principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID" \
Sobald das Secret gespeichert ist, kann der Agent während der Laufzeit mit seiner Haupt-ID und der standardmäßigenGoogle Cloud -Authentifizierungsbibliothek automatisch als Teil der Application Default Credentials auf diese Anmeldedaten zugreifen.
# Example: Use agent identity to retrieve third party credentials from Secret Manager
# Use case: Using an agent, the user is trying to post a message on Slack,
# The developer first retrieves secret from Secret Manager using agent identity,
# and then uses it to login to Slack and post a message.
from google.cloud import secretmanager
def access_secret(project_id: str, secret_id: str, version_id: str = "latest") -> str:
# Application default credential automatically gets token from MDS using agent identity
agent_identity_credentials = default()
# Create the Secret Manager client.
client = secretmanager.SecretManagerServiceClient(credentials=agent_identity_credentials)
# Build the resource name of the secret version.
name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
# Access the secret version.
response = client.access_secret_version(request={"name": name})
# Decode the payload to get the secret string.
secret_value = response.payload.data.decode("UTF-8")
return secret_value
Mit der Client-ID und dem Clientschlüssel können Sie jetzt Ihr Tool erstellen und die OAuth-basierte Authentifizierung konfigurieren.
Im folgenden Beispiel wird ein Agent verwendet, der mit dem Agent Development Kit (ADK) entwickelt wurde.
Die OAuth-basierte Authentifizierung ist als Teil der Tool-Erstellung in die Methoden authenticationScheme und authCredential eingebunden:
import os
from google.adk.auth.auth_schemes import OpenIdConnectWithConfig
from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes, OAuth2Auth
from google.adk.tools.openapi_tool.openapi_spec_parser.openapi_toolset import OpenAPIToolset
from google.adk.agents.llm_agent import LlmAgent
auth_scheme = OpenIdConnectWithConfig(
authorization_endpoint="https://your-endpoint.slack.com/oauth2/v1/authorize",
token_endpoint="https://your-token-endpoint.slack.com/oauth2/v1/token",
scopes=['openid', 'profile', "email"]
)
auth_credential = AuthCredential(
auth_type=AuthCredentialTypes.OPEN_ID_CONNECT,
oauth2=OAuth2Auth(
client_id=access_secret(project_id: 'foo', secret_id: 'slack_oauth_client_id'),
client_secret=access_secret(project_id: 'foo', secret_id: 'slack_oauth_client_secret'),
)
)
# --- Slack Toolset Configuration Based On OpenAPI Specification ---
with open(os.path.join(os.path.dirname(__file__), 'spec.yaml'), 'r') as f:
spec_content = f.read()
slack_toolset = OpenAPIToolset(
spec_str=spec_content,
spec_str_type='yaml',
# ** Crucially, associate the authentication scheme and credentials with these tools. **
# This tells the ADK that the tools require the defined OIDC/OAuth2 flow.
auth_scheme=auth_scheme,
auth_credential=auth_credential,
)
# Configure and create the main LLM Agent.
root_agent = LlmAgent(
model='gemini-2.0-flash',
name='enterprise_assistant',
instruction='Help user integrate with Slack and post messages to Slack.',
tools=userinfo_toolset.get_tools(),
)
Während der Laufzeit passiert Folgendes (wenn Sie das ADK lokal über das ADK-Web verwenden, werden die Schritte im ADK-Web und ADK-Backend automatisiert):
Sie greifen auf den Agent zu und der Agent entscheidet, dass das Tool (z. B. Slack) aufgerufen werden muss.
Die im ADK programmierten Tools (mit
auth_schemeundauth_credential) geben einauthConfig-Objekt an das Frontend zurück, das den Weiterleitungs-URI und die Client-ID enthält.Das Frontend parst das
authConfig-Objekt und Sie werden zur Autorisierungsseite des Drittanbieters weitergeleitet. Nach der Anmeldung werden Sie zum Frontend des Kundenservicemitarbeiters weitergeleitet und der Autorisierungscode wird an das ADK-Backend gesendet.Das Backend verwendet den Autorisierungscode, um ein Zugriffstoken für den Drittanbieterdienst abzurufen, und führt das Tool weiter aus.
Wenn Sie einen ADK-Agent in der Vertex AI Agent Engine-Laufzeitumgebung bereitstellen, müssen Sie ein benutzerdefiniertes Frontend erstellen und den ADK-Webauthentifizierungs- oder Weiterleitungscode in Ihr Frontend migrieren, um dieselbe OAuth-Integration durchzuführen.
Mit API-Schlüsseln auf Drittanbieterdienste zugreifen
Die Identität des Agents kann es ihm ermöglichen, mithilfe von API-Schlüsseln auf Drittanbieterdienste zuzugreifen und in Ihrem Namen zu handeln. Sie müssen zuerst die API-Schlüssel für den Zugriff auf die Drittanbieterdienste in Secret Manager speichern und dann diese Anmeldedaten aus Secret Manager abrufen.
from google.adk.tools.openapi_tool.auth.auth_helpers import token_to_scheme_credential
from google.adk.tools.openapi_tool.openapi_spec_parser.openapi_toolset import OpenAPIToolset
WEATHER_DOT_COM_API_KEY = access_secret(project_id: 'foo', secret_id: 'weather_dot_com_api_key')
auth_scheme, auth_credential = token_to_scheme_credential(
"apikey", "query", "apikey", WEATHER_DOT_COM_API_KEY
)
sample_api_toolset = OpenAPIToolset(
spec_str="...",
spec_str_type="yaml",
auth_scheme=auth_scheme,
auth_credential=auth_credential,
)
Agent-Aktivitäten protokollieren
Wenn Sie Cloud Logging aktivieren, können Sie Logs ansehen, in denen aufgezeichnet wird, welcher Agent und welche Nutzer auf eine Google Cloud Ressource zugegriffen haben.
Wenn der Agent im Namen eines Nutzers handelt, werden in den Protokollen sowohl die Identität des Agents als auch die des Nutzers angezeigt.
Wenn der Agent eigenständig handelt, wird in den Logs nur die Identität des Agents angezeigt.
KI‑Agents und ihre Identitäten auflisten
Sie können die Liste Ihrer Agent-Identitäten in Vertex AI Agent Engine über die Google Cloud Konsole und die Befehlszeile aufrufen.
Console
- Rufen Sie in der Google Cloud Console die Seite Vertex AI Agent Engine auf.
Bereitgestellte Agents, die Teil des ausgewählten Projekts sind, werden in der Liste angezeigt. Mit dem Feld Filtern können Sie die Liste nach der von Ihnen angegebenen Spalte filtern.
Die Identität jedes Agenten wird in der Spalte Identität aufgeführt.
REST API
Sie können die Agent-Identität abrufen, wenn Sie mit der REST API eine Agent Engine-Instanz abrufen.
Die Antwort enthält die Identität des Kundenservicemitarbeiters im folgenden Format:
{
...
spec: {
"effectiveIdentity": "agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/AGENT_ENGINE_ID"
}
...
}
Bei Agent Engine-Instanzen, die keine Agent-Identität verwenden, enthält das Feld effectiveIdentity den Dienst-Agent- oder Dienstkontonamen, der der Agent Engine-Instanz zugeordnet ist.
Nächste Schritte
- Agent verwenden
- Bereitgestellte Agents verwalten
- Fehlerbehebung bei der Bereitstellung eines Agents
- Support anfordern