智能体可以使用自己的授权来访问 Google Cloud API 和其他资源。我们建议使用此方法,以便在 Google Cloud上托管的代理与其他 Google Cloud 服务进行交互。
当代理自行执行操作时,会使用其主要 SPIFFE 身份来请求 Google Cloud 访问令牌。
准备工作
所需的角色
如需获得授予代理对 Google Cloud 服务的访问权限所需的权限,请让管理员向您授予目标资源的以下 IAM 角色:
-
如需向代理授予访问权限,请执行以下操作:
- Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Security Admin (
roles/iam.securityAdmin)
- Project IAM Admin (
-
代理身份的建议角色:
- Agent Context Editor (
roles/aiplatform.agentContextEditor) - 代理默认访问权限 (
roles/aiplatform.agentDefaultAccess) - Vertex AI User (
roles/aiplatform.user) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) - 浏览器 (
roles/browser) - Storage Object Viewer (
roles/storage.objectViewer)
- Agent Context Editor (
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
授予对代理的访问权限
如需让代理访问 Google Cloud 服务,您必须向代理的身份授予目标资源所需的角色。
在 IAM 允许政策中,代理身份使用主账号标识符。
如需向代理授予对资源的访问权限,请使用 Google Cloud 控制台或 gcloud CLI。
控制台
- 在 Google Cloud 控制台中,前往您要授予访问权限的资源对应的 IAM 页面。
- 对于项目,请前往 IAM 页面:
- 对于其他资源,请前往相应资源的页面,然后点击权限或 IAM 标签页。
- 点击 授予访问权限。
- 在新的主账号字段中,输入与您要授予的访问权限级别相符的主账号标识符:
- 单个代理:
principal://agents.global.org-ORGANIZATION_ID. system.id.goog/ resources/ aiplatform/ projects/ PROJECT_NUMBER/ locations/ LOCATION/ reasoningEngines/ ENGINE_ID - 项目中的所有代理:
principalSet://agents.global.org-ORGANIZATION_ID. system.id.goog/ attribute.platformContainer/ aiplatform/ projects/ PROJECT_NUMBER - 组织中的所有代理:
principalSet://agents.global.org-ORGANIZATION_ID. system.id.goog/ *
- 单个代理:
- 在选择角色字段中,搜索并选择要授予的角色。
- 点击保存。
Google Cloud CLI
如需向代理授予对资源的访问权限,请运行以下命令:gcloud SERVICE add-iam-policy-binding RESOURCE_NAME \
--member="PRINCIPAL_IDENTIFIER" \
--role="ROLE"替换以下内容:
- SERVICE: Google Cloud 服务(例如,
storage或bigquery)。 - RESOURCE_NAME:资源的名称(例如,存储桶名称或数据集 ID)。
- PRINCIPAL_IDENTIFIER:与您要授予的访问权限级别相符的主账号标识符:
- 单个代理:
principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/LOCATION/reasoningEngines/ENGINE_ID - 项目中的所有代理:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/PROJECT_NUMBER - 组织中的所有代理:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/*
- 单个代理:
- ORGANIZATION_ID:您的 Google Cloud 组织 ID。
- PROJECT_NUMBER:您的 Google Cloud 项目编号。
- LOCATION:代理的位置(例如
us-central1)。(仅在单代理访问时需要。) - ENGINE_ID:推理引擎的 ID。(仅在单个代理访问时需要)
- ROLE:您要授予的 IAM 角色。
在代码中引用代理身份
当您的代理部署到受支持的 Google Cloud 环境时, Google Cloud 客户端库会自动使用代理身份。
以下 Python 代码段展示了如何使用智能体开发套件 (ADK) 手动使用智能体身份凭据来调用 Cloud Vision API。
from google.cloud import vision
from google.auth import default
from google.adk.tools