使用代理的自有权限进行身份验证

智能体可以使用自己的授权来访问 Google Cloud API 和其他资源。我们建议使用此方法,以便在 Google Cloud上托管的代理与其他 Google Cloud 服务进行交互。

当代理自行执行操作时,会使用其主要 SPIFFE 身份来请求 Google Cloud 访问令牌。

准备工作

  1. 确认您已选择正确的身份验证方法
  2. 创建并部署启用了代理身份的代理
  3. 验证您是否拥有完成此任务所需的角色

所需的角色

如需获得授予代理对 Google Cloud 服务的访问权限所需的权限,请让管理员向您授予目标资源的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

授予对代理的访问权限

如需让代理访问 Google Cloud 服务,您必须向代理的身份授予目标资源所需的角色。

在 IAM 允许政策中,代理身份使用主账号标识符

如需向代理授予对资源的访问权限,请使用 Google Cloud 控制台或 gcloud CLI。

控制台

  1. 在 Google Cloud 控制台中,前往您要授予访问权限的资源对应的 IAM 页面。
    • 对于项目,请前往 IAM 页面:

      转到 IAM 页面

    • 对于其他资源,请前往相应资源的页面,然后点击权限IAM 标签页。
  2. 点击 授予访问权限
  3. 新的主账号字段中,输入与您要授予的访问权限级别相符的主账号标识符:
    • 单个代理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/*
  4. 选择角色字段中,搜索并选择要授予的角色。
  5. 点击保存

Google Cloud CLI

如需向代理授予对资源的访问权限,请运行以下命令:
gcloud SERVICE add-iam-policy-binding RESOURCE_NAME \
    --member="PRINCIPAL_IDENTIFIER" \
    --role="ROLE"

替换以下内容:

  • SERVICE: Google Cloud 服务(例如,storagebigquery)。
  • 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