智能体身份概览

智能体身份为每个智能体提供基于 SPIFFE 标准的、经过严格证明的加密身份。借助智能体身份,您的智能体可以代表自身或最终用户,安全地向 MCP 服务器、云资源、端点和其他智能体进行身份验证。Agent Identity 使用代理自己的凭证和 Agent Identity 身份验证管理器。您可以使用身份验证管理器创建和管理身份验证提供方,这些提供方是用于获取、管理和保护 API 密钥、OAuth 客户端 ID、OAuth 客户端密钥和委托的最终用户 OAuth 令牌的具体配置。

与服务账号不同,代理身份默认情况下不会由多个工作负载共享,无法被模拟,并且不允许开发者生成长期有效的服务账号密钥。为 Google Cloud生成的访问令牌会以加密方式绑定到代理的唯一 X.509 证书,以防止令牌被盗。

Agent Identity 与 Agent Registry 和 Agent Gateway 配合使用,可帮助保护和治理 AI 智能体。Agent Identity 负责预配加密身份并管理凭据,Agent Registry 负责对环境中的工具和目标进行编目,Agent Gateway 负责在智能体调用这些目标时强制执行访问政策并检查网络流量。

以下服务支持代理身份:

身份验证模型

为了向各种工具和服务进行身份验证,Agent Identity 支持多种身份验证模型。代理使用的模型取决于目标资源提供的身份验证方法,以及代理是代表自己还是代表最终用户执行操作。

职权 身份验证方法 目标资源 应用场景和解决方案
用户委托的授权 OAuth 2.0(三方模式) 外部工具和服务 当代理代表特定用户执行操作时(例如,访问用户的 Jira 任务或 GitHub 代码库)。您可以在 Agent Identity 身份验证管理器中配置三方模式 OAuth 身份验证提供方,以管理用户同意情况和令牌。如需了解详情,请参阅使用身份验证管理器通过三方模式 OAuth 进行身份验证。
代理自身的权限 基于云的身份(智能体身份) Google Cloud 服务 当托管在 Google Cloud 上的代理需要使用自己的身份访问其他 Google Cloud 服务时。如需了解详情,请参阅使用代理自己的身份向 Google Cloud 进行身份验证。
基于云的身份(OIDC ID 令牌) 外部工具和服务 当 Google Cloud 上托管的代理需要使用自己的身份和 OpenID Connect (OIDC) 身份联合向外部后端、自定义 API 或第三方云平台进行身份验证时。如需了解详情,请参阅使用代理自己的身份向外部服务进行身份验证。
OAuth 2.0(两方模式) 外部工具和服务 建议用于与支持 OAuth 的外部服务进行机器对机器身份验证。您需要在 Agent Identity 身份验证管理器中配置 2-legged OAuth 身份验证提供方,以处理客户端凭证和访问令牌。如需了解详情,请参阅使用 2-legged OAuth 和身份验证管理器进行身份验证。
API 密钥 外部工具和服务 适用于需要加密密钥或密码进行身份验证的外部服务。您可以在 Agent Identity 身份验证管理器中配置 API 密钥身份验证提供方,以帮助安全地存储和管理密钥。如需了解详情,请参阅使用 API 密钥和身份验证管理器进行身份验证。
HTTP 基本身份验证 外部工具和服务 使用明文密码。不建议使用此方法。您可以存储类似于 API 密钥的密码。如需了解详情,请参阅使用 API 密钥和身份验证管理器进行身份验证。

身份委托架构

为了在人类用户、自主工作负载和外部工具之间强制执行信任边界,而无需依赖服务账号模拟,智能体身份使用三身份委托框架。此框架在您的环境中分离并协调三种不同的身份上下文:

  • 用户身份:发起操作的最终用户的身份,通过标准 OAuth 2.0 或 OpenID Connect (OIDC) 以及 Google Identity 或联合员工身份提供方 (IdP) 进行身份验证。
  • 智能体身份:已部署智能体的唯一、经过加密认证的 SPIFFE 身份和自动预配的 X.509 证书,代表智能体以自己的权限行事。
  • 委托身份:当智能体代表发起操作的人类用户,使用由 Agent Identity 身份验证管理器代理的有范围限制的三足式 OAuth (3LO) 凭证时,所形成的组合权限上下文。

下图展示了用户身份、代理身份和委托身份如何在入站流量、运行时和出站流量信任边界之间进行交互:

身份委托架构图,展示了用户身份、Agent Identity 和委托身份在入站流量、运行时和出站流量信任边界之间的映射关系。

如需详细了解平台如何跨信任边界评估和传播每个身份层,请参阅身份委托架构。

核心组件

代理身份涉及多个关键组件,这些组件共同帮助提供安全的身份验证和授权。

基于 SPIFFE 的身份

系统会根据 SPIFFE 标准为每个智能体分配一个唯一的身份字符串,即 SPIFFE ID。此身份经过严格认证,与代理的生命周期相关联,并直接映射到托管代理的资源 URI。

身份采用以下格式:

spiffe://TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH

例如:

  • spiffe://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agent

在 IAM 允许政策中使用代理身份时,主账号标识符遵循以下格式:

principal://TRUST_DOMAIN/resources/SERVICE/RESOURCE_PATH

示例:

  • Vertex AI Agent Engine(组织): principal://agents.global.org-123456789012.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agent
  • Vertex AI Agent Engine(不属于任何组织的项目): principal://agents.global.proj-9876543210.system.id.goog/resources/aiplatform/projects/9876543210/locations/us-central1/reasoningEngines/my-test-agent
  • Gemini Enterprise: principal://agents.global.org-123456789012.system.id.goog/resources/discoveryengine/projects/9876543210/locations/global/collections/default_collection/engines/my-test-agent

标识符使用以下内容:

  • TRUST_DOMAIN:资源层次结构的信任域:
    • 对于组织中的项目:agents.global.org-ORGANIZATION_ID.system.id.goog
    • 对于没有组织的项目:agents.global.proj-PROJECT_NUMBER.system.id.goog
  • SERVICE: Google Cloud 服务的简称(例如 aiplatform 或 discoveryengine)。
  • RESOURCE_PATH:托管代理的资源的完整路径。

由于代理本身就是主账号,因此您可以直接向此标识符授予权限,以控制代理可以访问哪些资源。

身份和权限生命周期

您必须管理代理身份的 IAM 绑定。删除代理并不会移除引用其主账号的 IAM 绑定。这些绑定会作为非活跃授权保留在您的政策中,您必须在停用代理时手动将其移除。

智能体的身份派生自托管它的资源的 ID,例如 reasoningEngines 资源 ID。如果您删除某个代理并部署一个替代代理,即使使用相同的显示名称、代码和配置,新代理也会收到新的资源 ID,因此也会收到新的主账号标识符。引用先前身份的现有 IAM 绑定不适用于新主账号。您必须向新主账号授予所需角色。

智能体凭据

代理凭证可提供代理身份的加密证明。系统支持 X.509 证书、 Google Cloud 访问令牌和 OIDC ID 令牌。系统会在代理上自动预配和管理 X.509 证书,以帮助支持更强大的身份验证。

这些 X.509 证书会链接到 Google 管理的根证书授权机构 (CA)。您可以在以下端点查看公开默认 CA 证书:

默认情况下,代理身份在直接与 Google Cloud API 通信时,会使用双向 TLS (mTLS) 和 X.509 证书。当智能体通过 Agent Gateway 进行交互时,它们还会使用 DPoP(Demonstrating Proof of Possession,所有权证明),创建双重绑定的凭据,以实现端到端安全性。这种双重绑定意味着,代理在通过第一方访问网关时使用 mTLS 进行身份验证,而在网关之外的交互中使用 DPoP。

Agent Identity 身份验证管理器

Agent Identity 身份验证管理器是一个集中式凭据保险柜和身份验证代理,可简化代理的出站工具身份验证。它允许智能体使用 API 密钥或 OAuth 客户端 ID 和密钥进行身份验证,或使用最终用户访问令牌通过 OAuth 委托代表用户进行身份验证。在身份验证管理器中,您可以配置身份验证提供方,这些提供方会为特定第三方应用定义身份验证类型和凭据。

对 Agent Identity 身份验证管理器的访问权限由 IAM 管理,智能体使用自己的 Agent SPIFFE ID 向身份验证管理器进行身份验证。所有最终用户访问事件也可归因于代理的 SPIFFE ID,从而实现轻松治理。

Agent Identity 身份验证管理器会自动获取 OAuth 凭证,例如打开一个对话框,供用户登录和同意。它还可让您了解最终用户访问权限,并允许撤消访问权限,从而更好地管理用户委托的权限。

如需了解详情,请参阅 Agent Identity 身份验证管理器概览。

安全和治理

Agent Identity 与 Google 的 IAM、Principal Access Boundary (PAB) 和 VPC Service Controls 等政策系统完全集成,可增强安全性和治理。它还与审核日志记录集成,以确保问责制,并在代理以自身身份行事以及代表最终用户行事时提供清晰的审核日志。

  • 情境感知访问权限:默认情况下,Google 管理的情境感知访问权限政策通过强制执行 mTLS 和 DPoP 令牌绑定来帮助保护代理凭据。此方法可确保绑定证书的令牌无法在其可信运行时环境之外重放。
  • IAM 集成:支持标准 IAM 允许政策和拒绝政策。
  • Principal Access Boundary (PAB):Principal Access Boundary Policy 会限制代理可以访问的资源,无论代理拥有哪些其他权限。在出站(出站流量)调用过程中,系统会评估应用于智能体身份的主体访问边界政策。受 Principal Access Boundary Policy 约束的代理身份只能访问这些政策中指定的资源,从而将代理严格隔离在其指定边界内。
  • VPC Service Controls:支持边界保护和主账号使用:
    • 边界保护:您可以将 Agent Identity API (agentidentity.googleapis.com) 和 Agent Identity Credentials API (agentidentitycredentials.googleapis.com) 添加到服务边界,以帮助控制对这些 API 的访问。如需在服务边界内使用这些 API,客户端必须通过受限 VIP (restricted.googleapis.com) 路由请求。
    • 入站和出站规则:支持在入站和出站规则中使用代理身份作为主账号,以允许访问受服务边界保护的资源。

Agent Identity 的运作方式

Agent Identity 通过旨在帮助增强安全性的工作流对代理操作进行身份验证和授权:

  1. 身份分配:部署代理时, Google Cloud会为其分配唯一的 SPIFFE 身份和 X.509 证书。每个 X.509 证书的有效期为 24 小时, Google Cloud会自动使其保持最新状态以维护安全性。
  2. 凭证获取:代理获取凭证的方法取决于它们尝试访问的内容。以下是一些示例:
    • 访问 Google Cloud 服务:代理请求绑定访问令牌。此令牌会以加密方式绑定到代理的唯一 X.509 证书,以帮助防止令牌被盗。如需了解详情,请参阅安全和治理。
    • 访问外部工具:为了使用外部服务自己的身份直接向其进行身份验证,代理会请求 OIDC ID 令牌。为了从身份验证提供方检索存储的凭据(例如 API 密钥或 OAuth 令牌),智能体使用 Agent Identity 身份验证管理器,该管理器同时支持用户委托的授权和智能体自己的授权。

代理身份的优势

与标准服务账号相比,智能体身份可提高安全性。

  • 强隔离:与服务账号不同,代理身份默认情况下不会由多个工作负载共享,无法被模拟,并且不允许开发者生成长期有效的服务账号密钥。
  • 凭证安全:默认情境感知访问权限政策可使绑定的令牌无法重放,从而帮助防范令牌盗用和账号入侵。
  • 最小权限方法:提供每个智能体的身份,而不是共享服务账号,以消除权限过高的智能体。
  • 减少阻碍:自动执行复杂的 OAuth 流程并管理 API 密钥,从而简化工具集成。
  • 改进的可观测性:提供清晰的审核日志。当代理代表用户执行操作时,日志会同时显示代理和用户的身份。

限制

  • Cloud Storage 旧版存储桶角色:您无法向代理身份授予旧版存储桶角色(例如 storage.legacyBucketReader)。

后续步骤